Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1348 connectés 

  FORUM HardWare.fr
  Programmation

  [MySQL] Réaction bizarre d'une requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Réaction bizarre d'une requete

n°83815
gizmo
Posté le 22-12-2001 à 14:35:34  profilanswer
 

la requete en question:

Code :
  1. 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
  2.         LEFT JOIN utilisateurs U ON U.id=P.auteur_id
  3.         LEFT JOIN utilisateurs U2 ON U2.id=P.editeur_id
  4.         WHERE P.sujet='$topic'
  5.         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.

mood
Publicité
Posté le 22-12-2001 à 14:35:34  profilanswer
 

n°83820
ethernal
Chercheur de vérité...
Posté le 22-12-2001 à 14:56:17  profilanswer
 

bizarre en effet, il me semble avoir déja eu le cas aussi
 
ta boucle while contient quoi ?
tu peux essayer de remmettre à "" tes variables après affichage...

n°83888
potiron
...
Posté le 22-12-2001 à 21:34:25  profilanswer
 

vu ce que tu dis, le probleme vient pas de la requete mais de ton code PHP !!
 
tu extrait comment les vars ?
 
mysql_fetch_assoc ?
mysql_fetch_row ?
mysql_fetch_object ?
 
et ensuite ??

n°83893
gizmo
Posté le 22-12-2001 à 22:19:46  profilanswer
 

j'utilise un mysql_fetch_array. J'ai déja essayé de réinitialiser les valeurs après leur utilisation dans le while, mais ca ne change rien. Comme si la requete avait remplacé les valeurs dans les champs vides suivants tant qu'elle n'en trouve pas un nouveau qui soit rempli.

n°83904
potiron
...
Posté le 23-12-2001 à 00:17:54  profilanswer
 

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]

n°83905
gizmo
Posté le 23-12-2001 à 00:47:59  profilanswer
 

ok, merci, mais j'ai trouvé le bug: MULTIMANIA :fou: c'est leur version de php qui est vieille et comporte un bug qui fait que MYSQL_ASSOC n'est pas pris en compte dans mon mysql_fetch_array. Résultat, il ne réinitialisait pas mes valeurs correctement et écrasait mes mises a niveau dans la boucle. J'ai résolu le problème avec un isset.
 
 
PS: elle est tres clair ma requète :na:

n°83907
potiron
...
Posté le 23-12-2001 à 00:58:29  profilanswer
 

alors utilise plutot mysql_fetch_assoc plutot que de rajouter un isset

n°83912
gizmo
Posté le 23-12-2001 à 01:04:11  profilanswer
 

potiron a écrit a écrit :

alors utilise plutot mysql_fetch_assoc plutot que de rajouter un isset  




 
j'ai testé aussi, mais le résultat était le même. Le bug n'a été corrigé qu'avec php 4.0.5 et ils utilisent le 4.0.4pl1 :/ au lieu de foutre des bannières gigantesques, ils feraient mieux de mettre a jour leurs versions...

n°83916
joce
Architecte / Développeur principal
"BugHunter"
Posté le 23-12-2001 à 02:58:05  profilanswer
 

rô les jointures pas belles :D
Rô mysql_fetch_array !
Je préfère mon code :D


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°83941
Kyle
Posté le 23-12-2001 à 11:20:41  profilanswer
 

joce a écrit a écrit :

rô les jointures pas belles :D
Rô mysql_fetch_array !
Je préfère mon code :D  




 
Ben donne un exemple de belles requetes :D

mood
Publicité
Posté le 23-12-2001 à 11:20:41  profilanswer
 

n°83953
gizmo
Posté le 23-12-2001 à 14:48:34  profilanswer
 

joce a écrit a écrit :

rô les jointures pas belles :D
Rô mysql_fetch_array !
Je préfère mon code :D  




 
rhoo comme t'es pas a jour :D
 
mysql_fetch_array est devenu aussi rapide que mysql_fetch_row depuis php 4.0.6, évidemment comme tu travailles en php3 :p ...
Et les jointure elle sont aussi rapides que si je séparais le code en plusieurs requètes.

n°83972
potiron
...
Posté le 23-12-2001 à 15:51:28  profilanswer
 

:D  
tu as pas tort pour la vitesse mais c'est moins lisible !
c'est ce que j'essayais de te faire comprendre ..
 
oui aussi pour mysql_fetch_array mais si tu as pas besoin de sortir tes vars dans tab associatif ET DANS tab a index evite le, tu grilles des ressources pour rien surtout si c'est pour utiliser un mysql_fetch_array($ressource,MYSQL_ASSOC)  :heink:  :na:
 
en plus tu precises dans ton message, je cite : "mysql_fetch_array est devenu aussi rapide que mysql_fetch_row depuis php 4.0.6" hors tu dis aussi, je cite :"multimania utilisent le 4.0.4pl1"  :heink:  :ange:  
 
joce il est ou ton code qu'on rigole un petit coup  :lol: :na:  :ange:

 

[edtdd]--Message édité par potiron--[/edtdd]

n°83987
joce
Architecte / Développeur principal
"BugHunter"
Posté le 23-12-2001 à 17:29:34  profilanswer
 

gizmo a écrit a écrit :

 
 
rhoo comme t'es pas a jour :D
 
mysql_fetch_array est devenu aussi rapide que mysql_fetch_row depuis php 4.0.6, évidemment comme tu travailles en php3 :p ...
Et les jointure elle sont aussi rapides que si je séparais le code en plusieurs requètes.  




C'est pas parce que le fichier a l'extension .php3 que c'est du php3 (je sais c'est pas logique :lol:)
Nan le code c'est du fully php4, et HFR tourne avec php 4.1.0 d'ailleurs :p


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°83988
joce
Architecte / Développeur principal
"BugHunter"
Posté le 23-12-2001 à 17:31:26  profilanswer
 

potiron a écrit a écrit :

:D  
tu as pas tort pour la vitesse mais c'est moins lisible !
c'est ce que j'essayais de te faire comprendre ..
 
oui aussi pour mysql_fetch_array mais si tu as pas besoin de sortir tes vars dans tab associatif ET DANS tab a index evite le, tu grilles des ressources pour rien surtout si c'est pour utiliser un mysql_fetch_array($ressource,MYSQL_ASSOC)  :heink:  :na:
 
en plus tu precises dans ton message, je cite : "mysql_fetch_array est devenu aussi rapide que mysql_fetch_row depuis php 4.0.6" hors tu dis aussi, je cite :"multimania utilisent le 4.0.4pl1"  :heink:  :ange:  
 
joce il est ou ton code qu'on rigole un petit coup  :lol: :na:  :ange:  
 
 




mon code source je le garde :D
Allez, cadeau :
 
// on utilise $auteurstr dans la requète afin qu'elle soit dans tous les cas mise en cache par MySQL 4.0.1 et supérieur (les requètes doivent être strictement identiques)
 
ca vous avance vachement hein :D


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°84070
gizmo
Posté le 24-12-2001 à 13:50:27  profilanswer
 

potiron a écrit a écrit :

:D  
tu as pas tort pour la vitesse mais c'est moins lisible !
c'est ce que j'essayais de te faire comprendre ..
 
oui aussi pour mysql_fetch_array mais si tu as pas besoin de sortir tes vars dans tab associatif ET DANS tab a index evite le, tu grilles des ressources pour rien surtout si c'est pour utiliser un mysql_fetch_array($ressource,MYSQL_ASSOC)  :heink:  :na:
 
en plus tu precises dans ton message, je cite : "mysql_fetch_array est devenu aussi rapide que mysql_fetch_row depuis php 4.0.6" hors tu dis aussi, je cite :"multimania utilisent le 4.0.4pl1"  :heink:  :ange:  
 
joce il est ou ton code qu'on rigole un petit coup  :lol: :na:  :ange:  
 




 
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?

n°84083
joce
Architecte / Développeur principal
"BugHunter"
Posté le 24-12-2001 à 15:18:49  profilanswer
 

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


---------------
Protèges carnets personnalisés & accessoires pour bébé

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [MySQL] Réaction bizarre d'une requete

 

Sujets relatifs
[PHP] Prob requête SQL... (débutant)[MySQL] Problème de requête :(
[ MySQL ] Sauvegardes...php/mysql ben zut le code est bon je pense mais g qd mm ça...
[PHP + MySQL] Création automatique de formulaire.[mySQL] Définiton d'une clé étrangère
[java (ou C++) + mysql] hypra débutant, demande aide :([php/mysql] Optimisations diverse
[MySQL] selectionner les champs avec une date inférieure à 1 semaine.. 
Plus de sujets relatifs à : [MySQL] Réaction bizarre d'une requete


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR