essai de group by (ne fonctionne pas vraiment) - PHP - Programmation
Marsh Posté le 19-05-2006 à 15:32:50
Ce que tu mets avant la boucle ne peut pas s'afficher correctement, puisque avant cette boucle, $val ne possède pas de valeurs (en tout cas pas les bonnes).
Code :
|
Marsh Posté le 19-05-2006 à 15:39:13
en fait j'ai mal recopié mon code mais j'ai :
Citation : |
pour que le premier enregistrment de la base puisse apparaitre si je ne fais que la boucle il commence au deuxième.
mais là n'est pas le problème... je n'ai toujours qu'un lien par catégorie et ça m'énerve
Marsh Posté le 19-05-2006 à 15:40:11
en faisant un group by cat , c'est toi qui demande de n'avoir qu'un seul resultat par cat
Marsh Posté le 19-05-2006 à 15:42:42
>si je ne fais que la boucle il commence au deuxième
bah non pas du tout. Si tu fais que la boucle il commence évidemment au premier. mysql_fetch_array() déplace un pointeur sur les résultats de ta requête. Ce pointeur est au départ placé au début des résultats (et tu peux même le réinitialiser si ça te chante, mais bon là t'en as pas besoin).
Tout ça pour dire que, si, la boucle commence au premier résultat. Donc tu vires ce qu'il y a entre le mysql_query et la boucle.
Le problème est peut-être tout simplement que ta requête ne renvoit que un seul résultat, non ?
edit : grilled
Marsh Posté le 19-05-2006 à 18:38:38
Si je ne fais pas un group by cat il réécris la catégorie autant de fois qu'il y a de lien et ça je ne veux pas...
Du style:
Cat1
Lien1
Cat 1
Lien 2
Cat 2
lien 1a
ect...
Ce que je voudrais c'est:
cat 1
lien1
lien2
Cat 2
lien1a
Bref je ne vois pas trop comment améliorer la chose... S'il y a quelqu'un qui voit ....
Marsh Posté le 19-05-2006 à 18:46:43
pour la boucle, Djebel1, t'as raison mais y'a toujours le pb avec plusieurs lien par cat
Marsh Posté le 19-05-2006 à 19:12:14
euh à mon avis ça te renvoie plutôt un truc genre :
Cat1 | Lien 1
Cat1 | Lien 2
Cat2 | Lien 1
donc tu rajoute une clause order by cat_id dans ta requête, ensuite c'est super simple à gérer.
Marsh Posté le 19-05-2006 à 19:28:05
$sql="SELECT * FROM cat JOIN lien WHERE num_cat=id_cat GROUP BY cat";
tu proposes de faire :
$sql="SELECT * FROM cat JOIN lien WHERE num_cat=id_cat ORDER BY id_cat";
mais c'est là que j'ai :
Cat1 | Lien 1
Cat1 | Lien 2
Cat2 | Lien 1
et ce n'est pas le résultat souhaité...
Je suis sur que c'est super simple mais je n'y arrive pas!Je cale
Marsh Posté le 19-05-2006 à 20:06:06
C'est très bien, ce que ça te renvoie, tu peux pas avoir ton résultat autrement... Tu testes quand $val['id_cat'] change, comme ça tu sais quand ça passe à la prochaine catégorie.
Marsh Posté le 19-05-2006 à 20:17:36
ben là tu me poses une colle car je ne vois pas du tout comment tester si
$val['id_cat'] change!
ça serait un truc comme
if($val['id_cat']!=$val['num_cat'])
... vraiment je ne vois pas
Marsh Posté le 19-05-2006 à 20:21:59
$old_id_cat = -1;
while ($val = ...) {
if ($val['id_cat'] != old_id_cat) {
// nouvelle cat
}
else {
// même cat
}
$old_id_cat = $val['id_cat'];
}
Marsh Posté le 19-05-2006 à 20:22:42
Code :
|
par exemple ...
edit : olol le timing
Marsh Posté le 19-05-2006 à 20:51:50
Je me sens vraiment le plus nul du monde car je ne dois pas savoir mettre en place vos scripts...
selon Djebel1
Affiche tout en double
Citation : |
selon sielfried
ne change rien à l'affichage
Citation : |
Marsh Posté le 19-05-2006 à 20:55:03
old_id_cat => $old_id_cat...
$val = $val => $val...
Marsh Posté le 19-05-2006 à 21:10:02
oh yessssssssssssssssssssss
merci sielfried!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
t'es trop bon
Citation : |
Marsh Posté le 19-05-2006 à 15:06:54
J'ai deux tables categorie (champs:id_cat et cat) et lien champs (id_lien, lien, num_cat)
Une catégorie peux avoir plusieurs liens.
ma requête:
$sql="SELECT * FROM cat JOIN lien WHERE num_cat=id_cat GROUP BY cat";
Ensuite je veux afficher tout ça:
echo "<h3>".$val["cat"]."</h3>\n";
echo "<h3><a href=\"http://".$val["lien"]."\">".$val["lien"]."</a></h3>\n";
while ($val=mysql_fetch_array ($result))
{
echo "<h3>".$val["cat"]."</h3>\n";
echo "<h3><a href=\"http://".$val["lien"]."\">".$val["lien"]."</a></h3>\n"
}
ça marche mais je n'ai qu'un seul lien par catégorie qui s'affiche... et là je ne vois pas ce qui ne marche pas!!
help ! please!