Forum Clubic

Tri selectif du resultat - [PHP/MySQL]

Alors voila j’ai un menu ‘Oraux’ et un autre menu ‘Ecrits’.

J’ai des données dans 2 tables ‘cat’ ( id | nom | description | menu ) et ‘rubrik’ ( id_rub | id_cat | titre | contenu ), j’aimerai les afficher, en fonction des 2 menus mais je ne sais pas comment m’y prendre enfait.

Voici le code PHP que j’ai actuellement

<?  
$requete = mysql_query("SELECT DISTINCT t1.id_rub,t1.titre,t1.id_cat,t2.id,t2.nom,t2.menu FROM rubrik As t1 LEFT join cat As t2 On t1.id_cat=t2.id GROUP BY t2.nom ORDER by t1.id_cat")or die(mysql_error());
while($aff = mysql_fetch_array($requete))
{
echo ("<p>$aff[nom]<br>$aff[titre]<br>");

}
?>

J’ai pensé à faire 2 requetes, la premiere n’afficherais que celle du menu Oraux et l’autre afficherais l’Ecris, mais lorsque je tente de mettre When t2.menu = ‘Ecrits’
Il selectionne bien les données pour le menu 'Ecrits mais comme cela :

Je rajoute donc un Group By t1.nom il m’affiche

et moi j’aimerai bien arriver à faire ça :

Merci de m’eclairer un peu :slight_smile:

[i]précisions :
Etude de cas // categorie

  • Bilan-Diagnostic // rubrique
  • ERAC rubrique // rubrique [/i]

up :sweet:

Le group by t1.nom est une mauvaise idée, car avec un group by il ne reste plus qu’une ligne pour chaque t1.nom.

Ta requête initiale est bonne, c’est juste le traitement des données après qui ne va pas.

while($aff = mysql_fetch_array($requete))
{
echo ("<p>$aff[nom]<br>$aff[titre]<br>");

}

Forcément, il t’affichera $aff[nom] pour chaque résultat…

Il faudrait faire quelque chose du genre :

$nom = "";
while($aff = mysql_fetch_array($requete))
{
if(strcmp($aff[nom], $nom) {
    echo "<p>$aff[nom]<br />";
    $nom = $aff[nom];
}
echo "$aff[titre]<br />";
}

Rajoute juste un "order by t1.nom" à la fin de ta requête et ça devrait être bon :wink:

Merci bcp :slight_smile:
Mais il y a une erreur à la ligne 16, ce qui correspond à
if(strcmp($aff[nom], $nom) {

pourtant je vois pas d’erreur :??:

Oui, il manque une parenthèse fermante.

C’est
if(strcmp($aff[nom], $nom)) {

Désolé :wink:

Arf en effet merci :jap:
les titres s’affichent bien, mais il me dit que la variable pour ‘nom’ n’est pas définie :confused:

On va finir par y arriver (et desole je debute :/)

Normal :

if(strcmp($aff[nom], $nom)) {

nom est une constante, et elle n’est pas définie. php va lui donner la valeur ‘nom’ (par compatibilité ascendante).

Si tu veux que ça fonctionne : met des quotes, fait en une chaîne de caractères :

if(strcmp($aff[‘nom’], $nom)) {

Merci bcp à vous http://forum.hardware.fr/images/perso/plat00n.gif