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

  FORUM HardWare.fr
  Programmation
  PHP

  requete sql vers bdd...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requete sql vers bdd...

n°1376312
poilue
Posté le 28-05-2006 à 20:38:14  profilanswer
 

bonjour, j'ai hérité d'un code, étant ignorant en php/sql, qui fonction à moitié, c'est un menu déroulant devant afficher les titres des 10 ou 15 derniers articles et le nombre commentaires/réponses qui leur sont attaché, mais le nombre de réponse ne s'affiche pas, et je ne sais vraiment comment faire ?  
 
merci pour l'aide que vous pourriez m'apporter , voici le code :  
 

Code :
  1. <?
  2. $temp = "";
  3. $bloc= "";
  4. //--------------------
  5. //Hack by Gantz [Start] v1.0 & utopiaste
  6. $bloc .= "&nbsp;<br><MARQUEE behavior= \"scroll\" align= \"center\" direction= \"up\" height=\"150\" scrollamount= \"2\" scrolldelay= \"80\" onmouseover='this.stop()' onmouseout='this.start()'>";
  7. //Hack [End]
  8. //--------------------
  9. $req=mysql_query("SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, $result_blocs->parametre2" );
  10. while ($ligne = mysql_fetch_object($req)) {
  11. $requete=mysql_query("SELECT COUNT(id) FROM `commentaires` WHERE `ref`=\"$ligne->id\"" );
  12. $nb = mysql_fetch_row($requete);
  13. $nb = $nb[0] ;
  14. $result = mysql_query("SELECT COUNT(id) FROM `commentaires` WHERE `ref`=$ligne->id" );
  15.     $nb2 = mysql_fetch_row($result);
  16.     $nb2 = $nb2[0] ;
  17.   if ($nb2/20 != intval($nb2/20))
  18.   {
  19.     $page = intval($nb2/20+1);
  20.   }
  21.    else
  22.   {
  23.    $page = intval($nb2/20);
  24.   }
  25.   if ($page=="0" )
  26.   {
  27.   $page=1;
  28.   }
  29. $bloc = $bloc."<img src=themes/$theme/images/articles/puce.gif>&nbsp;&nbsp;<a href=index.php?mod=articles&ac=commentaires&id=$ligne->id&debut=".($page * 20 - 20).">$ligne->titre</a><BR>($nb réponses)<br><br>" ;
  30. }
  31. //--------------------
  32. //Hack by Gantz [Start] v1.0 & utopiaste
  33. $bloc .= "</MARQUEE><HR><center><a href=index.php?mod=articles>Aller voir les articles</a></center>" ;
  34. //Hack [End]
  35. //--------------------
  36. Bloc ($result_blocs->parametre1,$bloc) ;
  37. ?>


 
 
j'ai modifié un peu le code au niveau des requetes de cette façon :  
 
 

Code :
  1. $sql = "SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, ".$result_blocs->parametre2;
  2. echo $sql;
  3. $req=mysql_query($sql);
  4. while ($ligne = mysql_fetch_object($req))
  5. {
  6. $sql = "SELECT COUNT(id) FROM `commentaires` WHERE `ref`=\"$ligne->id\"";
  7. echo $sql;
  8. $req=mysql_query($sql);
  9. $nb = mysql_fetch_row($requete);
  10. $nb = $nb[0] ;
  11. $sql = "SELECT COUNT(id) FROM `commentaires` WHERE `ref`=$ligne->id";
  12. echo $sql;
  13. $req=mysql_query($sql);
  14.     $nb2 = mysql_fetch_row($result);
  15.     $nb2 = $nb2[0] ;


 
et les erreures suivantes apparaissent sur ma page :  
 

Citation :

SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, 15SELECT COUNT(id) FROM `commentaires` WHERE `ref`="94"SELECT COUNT(id) FROM `commentaires` WHERE `ref`=94
 
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/zipe/www/modules/articles/bloc.php on line 30
 
SELECT COUNT(id) FROM `commentaires` WHERE `ref`=""SELECT COUNT(id) FROM `commentaires` WHERE `ref`=
 
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/zipe/www/modules/articles/bloc.php on line 30
 
 
 
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/zipe/www/modules/articles/bloc.php on line 18


 
qu'est ce que cela signifie mise à part qu'il y a des erreur de syntaxe sql , comment résoudre ce probleme ?
 
merci d'avance !

mood
Publicité
Posté le 28-05-2006 à 20:38:14  profilanswer
 

n°1376344
sielfried
Posté le 28-05-2006 à 21:21:32  profilanswer
 
n°1376354
poilue
Posté le 28-05-2006 à 21:32:53  profilanswer
 

si je comprends un petit quelque chose à ce qui est écrit vers le manuel auquel tu me renvois, les warning apparaissent car la connexion n'est pas établie ?
 

Citation :

Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée.


 
c'est bien cela ?

n°1376359
naceroth
Posté le 28-05-2006 à 21:45:33  profilanswer
 

Non, il voudrait bien que tu utilises le mysql_error pour qu'on ait le message d'erreur que renvoit mysql lors de la requête :)
 
Donc

Code :
  1. $req=mysql_query($sql);


 
devient

Code :
  1. $req=mysql_query($sql);
  2. if (!$req) {
  3.    echo mysql_error()." : $sql<br />";
  4. }


n°1376393
poilue
Posté le 28-05-2006 à 23:42:20  profilanswer
 

donc, si je comprend bien le mysql error me permet de situer exactement l'erreur, c'est bien cela ? et me donne la solution ?
 
ainsi quelle devrait être le code de cette requêt par exemple ?
 
et derniére question, je ne comprend pas le message d'erreur  général ?  
 
est-ce que sur cette section-ci du code :  
 
"SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, 15SELECT COUNT(id) FROM `commentaires` WHERE `ref`="94"SELECT COUNT(id) FROM `commentaires` WHERE `ref`=94 "
 
il y a une erreur ?

n°1376396
mIRROR
Chevreuillobolchévik
Posté le 28-05-2006 à 23:51:46  profilanswer
 

tu as remplacé dans son code $result et $requete
 

Code :
  1. #
  2. $requete=mysql_query("SELECT COUNT(id) FROM `commentaires` WHERE `ref`=\"$ligne->id\"" );
  3. #
  4. $nb = mysql_fetch_row($requete);
  5. #
  6. $nb = $nb[0] ;
  7. #
  8. #
  9. $result = mysql_query("SELECT COUNT(id) FROM `commentaires` WHERE `ref`=$ligne->id" );
  10. #
  11.    $nb2 = mysql_fetch_row($result);
  12. #
  13.    $nb2 = $nb2[0] ;
  14. #


 
 

Code :
  1. #
  2. $sql = "SELECT COUNT(id) FROM `commentaires` WHERE `ref`=\"$ligne->id\"";
  3. #
  4. echo $sql;
  5. #
  6. $req=mysql_query($sql);
  7. #
  8. $nb = mysql_fetch_row($requete);
  9. #
  10. $nb = $nb[0] ;
  11. #
  12. #
  13. $sql = "SELECT COUNT(id) FROM `commentaires` WHERE `ref`=$ligne->id";
  14. #
  15. echo $sql;
  16. #
  17. $req=mysql_query($sql);
  18. #
  19.    $nb2 = mysql_fetch_row($result);
  20. #
  21.    $nb2 = $nb2[0] ;

n°1376412
naceroth
Posté le 29-05-2006 à 01:55:34  profilanswer
 

poilue a écrit :

donc, si je comprend bien le mysql error me permet de situer exactement l'erreur, c'est bien cela ? et me donne la solution ?


 
mysql_error va renvoyer l'erreur qu'a rencontré mysql s'il y en a une, rien de plus. C'est un indice pour savoir où chercher, pas la solution à tous les problèmes (ça nous ferait des vacances :D)
 

Citation :

et derniére question, je ne comprend pas le message d'erreur  général ?


 
le warning de php te dit que l'argument que tu passes à la fonction mysql_fetch_row ($req et $requete en l'occurence) ne sont pas un ensemble de résultat mysql. Soit parce que la requête est fausse (d'où le besoin du mysql_error) soit parce que tu t'es trompé de nom de variable (c'est le cas ici, tu appelles $req le resultat de mysql_query mais tu te sers de $requete et $result dans les deux derniers mysql_fetch_row, ça colle pas).
 

Citation :

SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, 15
SELECT COUNT(id) FROM `commentaires` WHERE `ref`="94"
SELECT COUNT(id) FROM `commentaires` WHERE `ref`=94


 
Syntaxiquement, c'est correct

n°1376415
poilue
Posté le 29-05-2006 à 03:17:14  profilanswer
 

donc il me suffit de remplacer le
 
$req par $requete, et c'est tout ?
 
par contre j'aimerai bien comprendre quelque chose au php: pourquoi pour la première requète, n'y-a-t-il pas de résulte ? alors que pour la seconde, il y a deux requêtes ? une requete et une result ?

n°1376720
poilue
Posté le 29-05-2006 à 14:51:41  profilanswer
 

j'ai chnagé req par requete et à présent les warning ont disparu, mais les articles ne s'affichent pas, et le code suivant reste affiché sur la page :  
 

Code :
  1. SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, 15


 
cela veut dire qu'il ne va pas chercher les articles, mais pourquoi ?

n°1377159
mIRROR
Chevreuillobolchévik
Posté le 30-05-2006 à 04:57:37  profilanswer
 

non cela veut dire que tu as demandé des echos et il obeit stupidement
 
je pense que tu as du mal lire mon message
tu as fait des changements erratiques sur le script original
compare bien les deux scripts dans mon message et essaie d analyser tes erreurs ;)

mood
Publicité
Posté le 30-05-2006 à 04:57:37  profilanswer
 

n°1377866
poilue
Posté le 30-05-2006 à 23:48:39  profilanswer
 

d'accord, j'ai compris désolé, donc voici mon nouveau code :  
 

Code :
  1. $sql = "SELECT * FROM `article` ORDER BY `date` DESC LIMIT 0, ".$result_blocs->parametre2;
  2. echo $sql;
  3. $req=mysql_query($sql);
  4. while ($ligne = mysql_fetch_object($req))
  5. {
  6. $sql = "SELECT COUNT(id) FROM `commentaires` WHERE `ref`=\"$ligne->id\"";
  7. echo $sql;
  8. $req=mysql_query($sql);
  9. $nb = mysql_fetch_row($req);
  10. $nb = $nb[0] ;
  11. $sql = "SELECT COUNT(id) FROM `commentaires` WHERE `ref`=$ligne->id";
  12. echo $sql;
  13. $result = mysql_query($sql);
  14.     $nb2 = mysql_fetch_row($result);
  15.     $nb2 = $nb2[0] ;


 
il est correct maintenant, non ?
 
mais, je n'ai qu'un article qui s'affiche ...? et le menu ne défile plus ?


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

  requete sql vers bdd...

 

Sujets relatifs
Sous requete dans Accees[Oracle 9i]Export résultat de requête SQL vers fichier XML?
Access 97 vers 2000, transformation requêteNumérotation dans requête sql vers fichier Excel
problème requête client vers servletREQUETE SQL VERS 2 BASE DE MON SERV et ERREUR - PERDU JE SUIS
requete access vers mysqlACCESS : requete vers formulaire ...
[oracle] renvoyer contenu d'une requete vers un fichier TXTRequête vers Access en php -> comment faire accepter les '
Plus de sujets relatifs à : requete sql vers bdd...


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