requet compliqué pour moi
Bonsoir les amis, je viens vers vous car j'ai du mal a trouver ma requête pour ce que je veux faire.
Donc mon objectif est ceci:
Un membre poste un photo avec tout le blabla ( ca c'est bon)
et je veux récupéré sur une page "galery.php":
1 membre et une photo aléatoire.
pour le moment je n'arrive pas a lister mes membres et je suis totalement perdue dans mon code donc je recommence tout de zéros.
Merci d'avance pour votre aide.
bon j'ai trouver une solution
voici la requête
$sql = "SELECT *\n"
. "FROM `gallery_membre`\n"
. "GROUP BY `id_membre`\n"
. "HAVING COUNT( `id_membre` ) >1";
si jamais vous avez une autre solution je veux bien que l'on me l'explique.
le 02/11/2013 à 12:27
ChoiZ
Hello,
Tu peux faire une requête comme ceci :
SELECT `photo` FROM `gallerie` ORDER BY RAND();
avec une table :
____________
| id | photo |
| 1 | 1.jpg |
| 2 | 2.jpg |
Le ORDER BY RAND va faire un random sur les enregistrements (ici 1 et 2).
Le jour ou tu auras plus de photos ça le fera sur un plus grand nombre.
alors dans ma table il y aid, pseudo, lien, commentaire, titre et id_membre.
Ce que je veux c'est selection lien par rapport a l'id_membre mais qu'une seule fois.
pour le moment je ne sais qu'afficher le premier lien poste pour chaque membre.
order by rand() est à proscrire, c'est un coup à mettre MySQL sur les genoux.
Il faut faire le traitement côté PHP.
Donc tu sélectionne tout, ordonné par id_membre :
select * from gallerie order by id_membre
Et en PHP tu fais le rand avec shuffle qui va te secouer tout ça :
<?php
$picture_by_member = array();
// $rows est issu de fetchAll
foreach($rows as $row) {
$id_membre = $row['id_membre'];
if(!isset($pics[$id_membre]))
$picture_by_member[$id_membre] = array()
$picture_by_member[$id_membre][] = $row;
}
$rows = array();
foreach($picture_by_member as $id_membre => $pics)
{
shuffle($pics);
$rows[] = $pics[0];
}
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Bonsoir et désolé de ne pas avoir répondue avant:
Bon pour mes requête précédente j'ai contourner temporairement le probleme.
avec ceci:
SELECT *
FROM gallery_membre
WHERE pseudo = 'bounn'
GROUP BY categorie
HAVING COUNT( `categorie` )
Cela m'affiche la premiere image que le membre a poster dans la catégorie.
maintenant je voudrais avoir un "COUNT" du nombre de lien dans chaque catégorie.
mais je ne sais pas ajouter cette requête a l'autre.
SELECT COUNT( lien )
FROM gallery_membre
WHERE pseudo = 'bounn'
AND categorie = 'poisson'
merci d'avance pour votre aide.
C'est bon pour moi;
Voici la requête
SELECT * , COUNT( lien )
FROM gallery_membre
WHERE pseudo = 'taraderus'
GROUP BY categorie
HAVING COUNT( `categorie` )
Je ne comprends pas pourquoi tu fais un HAVING COUNT( `categorie` ), ça revient à dire « et qui a au moins une catégorie », ce qui est toujours le cas puisque chaque tuple de la table a une valeur de categorie.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Salut, je le fait pour simplement compter le nb de lien (image) de chaque catégorie.
Tu devrais enlever cette clause having, puisqu'elle n'apporte rien (à par une limitation des performances) et que tu semble ne pas comprendre ce qu'elle fait :-/
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.