Sujet : [MySQL] Réaction bizarre d'une requete |
joce |
gizmo a écrit a écrit :
non, bien sur que je n'en ai pas besoin, mais comme je dois faire en sorte que cela fonctionne avec toutes les version de php 4, je dois parfois faire des actions un peu redondandes. Enfin de tout facon, j'ai réussi a arranger cette partie sans MYSQL_ASSOC.
joce>> c'est quoi ce principe de mise en cache de MySQL 4.0.1?
|
ahah :D
Ca fait deux semaines qu'on se prends la tête avec Monty pour le débugger :o |
potiron |
bon alors je te fais confiance ca vient pas de ton script ....
commence par eclaircir ta requete car c'est un peu le souk :heink:
evite les alliases sur les noms des tables, ca embrouille et apporte rien de concret ..
quand j'ai des grosses requetes voici ce que je fait, je te met un extrait d'un de mes scripts :
---------------------------------------------
// --- REQ POUR AFFICHAGE INFOS FORMATEUR+FACTURE SESSION ---
$colo="session.idsession ,";
$colo.="DATE_FORMAT(session.boncommande,'%d-%m-%y') AS boncommande ,";
$colo.="session.idhotel ,";
$colo.="session.hotelreserve ,";
$colo.="session.idformateur ,";
$colo.="DATE_FORMAT(session.debut,'%d-%m-%y') AS debut ,";
$colo.="formation.logiciel ,";
$colo.="formation.intitule ,";
$colo.="factureformateur.idfactureformateur ,";
$colo.="DATE_FORMAT(factureformateur.datepayement,'%d-%m-%y') AS datepayement ,";
$colo.="formateur.idformateur ,";
$colo.="formateur.nom ,";
$colo.="formateur.commentaire, ";
$colo.="CASE WHEN session.debut>NOW() THEN 0 ELSE 1 END AS facbon" ;
// ---------- ----------
$where="factureformateur.datepayement='0000-00-00' AND ";
$where.="session.idsession=factureformateur.idsession AND ";
$where.="factureformateur.idformateur=formateur.idformateur AND ";
$where.="session.idformation=formation.idformation";
// ---------- ---------- $req="select $colo from session,formation,formateur,factureformateur where $where";
$con=mysql_query($req);
---------------------------------------------
la j'ai pas beaucoup de table donc je fait pas le meme principe que $colo ou $where mais c'est aussi faisable -> a la fin ca te donne un code tres propre et surtout tres lisible .
pour revenir a ta requete, regarde ici :
LEFT JOIN utilisateurs U ON U.id=P.auteur_id LEFT JOIN utilisateurs U2 ON U2.id=P.editeur_id ca me parrait bizarre meme si je connais pas la facon dont tu as creer les liens entre tes tables . [edtdd]--Message édité par potiron--[/edtdd] |
gizmo |
la requete en question:
Code :
- mysql_query("SELECT P.id,P.moment,P.texte,U2.login AS editeur,P.signature AS sign,U.signature,U.id AS who,U.login,P.icone,U.icq,U.msn,U.aim,U.yahoo FROM $table_post AS P
- LEFT JOIN utilisateurs U ON U.id=P.auteur_id
- LEFT JOIN utilisateurs U2 ON U2.id=P.editeur_id
- WHERE P.sujet='$topic'
- LIMIT $debut,$forum_mpp" );
|
le problème c'est que la valeur de icq,aim,yahoo et msn peuvent etre vide et dans ces cas la, il les remplace par la valeur précédente non nulle, dans ma boucle while. Ce qui fait que tout est faussé dans mes affichages. |