Conflit entre requête et fonction SQL ?
Résolu/Fermé
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
-
20 mars 2013 à 12:13
Evelyne31 Messages postés 55 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 13 septembre 2016 - 20 mars 2013 à 17:05
Evelyne31 Messages postés 55 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 13 septembre 2016 - 20 mars 2013 à 17:05
A voir également:
- Conflit entre requête et fonction SQL ?
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer à l'aide d'une formule. proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger. quelle formule sera en a9 ? ✓ - Forum Programmation
- Blob sql ✓ - Forum Webmastering
- Fonction somme excel - Guide
11 réponses
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
20 mars 2013 à 12:16
20 mars 2013 à 12:16
Bonjour,
si je comprends bien ton code, tu fais un mysql_query sur un mysql_query, ça ne peut pas marcher.
Essaye de supprimer la ligne :
$retour_total = mysql_query($retour_total_query) or die('Erreur SQL !'.$retour_total_query.'<br>'.mysql_error());
et de passer à ton mysql_fetch_assoc la variable $retour_total_query
si je comprends bien ton code, tu fais un mysql_query sur un mysql_query, ça ne peut pas marcher.
Essaye de supprimer la ligne :
$retour_total = mysql_query($retour_total_query) or die('Erreur SQL !'.$retour_total_query.'<br>'.mysql_error());
et de passer à ton mysql_fetch_assoc la variable $retour_total_query
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 12:31
20 mars 2013 à 12:31
Bonjour ThEBiShOp,
Je te remercie pour ta réponse, et ta rapidité. Il me semblait bien que le problème venait de là. J'ai modifié mon code selon tes indications et les résultats sont OK.
Par contre j'ai le même problème avec la requête suivante et là je ne fais pas de mysql_query sur un mysql_query ? Pourtant j'ai le même message d'erreur que précédemment : "Warning: mysql_query() expects parameter 1 to be string, resource given in...".
Je soumets cette nouvelle requête à ton oeil expert. L'erreur indiquée se situe ici
Merci pour ton aide.
Evelyne
Je te remercie pour ta réponse, et ta rapidité. Il me semblait bien que le problème venait de là. J'ai modifié mon code selon tes indications et les résultats sont OK.
Par contre j'ai le même problème avec la requête suivante et là je ne fais pas de mysql_query sur un mysql_query ? Pourtant j'ai le même message d'erreur que précédemment : "Warning: mysql_query() expects parameter 1 to be string, resource given in...".
Je soumets cette nouvelle requête à ton oeil expert. L'erreur indiquée se situe ici
$retour_messages = mysql_query($retour_messages_query);:
mysql_query("SET NAMES 'utf8'"); $retour_messages_query = SQLSelect("SELECT a.numGite, b.codeDepartement, b.nomDepartement FROM GITE a, DEPARTEMENT b, AS_COMMU_DEPAR c WHERE a.ID_commune = c.COMMUNE_ID_commune and b.ID_departement = c.DEPARTEMENT_ID_departement "); $clauseWhere. // Critères de recherche " ORDER BY numGite ASC LIMIT ".$premiereEntree.", ".$messagesParPage." "; // Pagination*/ $retour_messages = mysql_query($retour_messages_query); break;
Merci pour ton aide.
Evelyne
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
20 mars 2013 à 12:35
20 mars 2013 à 12:35
Si tu fais exactement la même chose
en fait, tu soumets ta requête à la fonction SQLSelect et dans cette fonction, il y a un mysql_query. Ta fonction retourne un jeu de résultat que tu mets dans la variable $retour_messages_query. Ensuite tu soumets $retour_messages_query à un mysql_query, mais mysql_query attends une requête, que tu ne lui donnes pas.
en fait, tu soumets ta requête à la fonction SQLSelect et dans cette fonction, il y a un mysql_query. Ta fonction retourne un jeu de résultat que tu mets dans la variable $retour_messages_query. Ensuite tu soumets $retour_messages_query à un mysql_query, mais mysql_query attends une requête, que tu ne lui donnes pas.
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 12:42
20 mars 2013 à 12:42
Super ThEBiShOp, j'ai enfin compris et cela va me servir pour d'autres fichiers en attente. Merci beaucoup pour ton aide, dire que ça fait 2 jours que je tournais en rond !
Maintenant j'ai un problème d'affichage mais je me creuse un peu avant de poster un nouveau sujet.
Très bonne journée,
Evelyne
Maintenant j'ai un problème d'affichage mais je me creuse un peu avant de poster un nouveau sujet.
Très bonne journée,
Evelyne
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
20 mars 2013 à 12:43
20 mars 2013 à 12:43
bon courage
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 15:06
20 mars 2013 à 15:06
Re-bonjour,
Désolée mais je crois que j'ai mis un peu trop vite mon post en "résolu". De plus je pensais avoir compris mais j'ai un nouveau problème du même ordre et je n'arrive pas à le résoudre.
Je récupère le résultat de ma requête $retour_messages_query dans un tableau $retour_messages = mysql_fetch_assoc. Cela allait bien pour la précédente requête mais pas ici. Encore merci ThEBiShOp ;-)
La requête :
J'ai essayé plusieurs solutions (foreach...) sans succès. Voici le message d'erreur : Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in line 267. Cette ligne est dans le code final d'affichage des résultats qui semble poser problème :
Je vois bien qu'il y a encore conflit entre 2 array. Merci par avance pour votre aide, je craque.
Evelyne
Désolée mais je crois que j'ai mis un peu trop vite mon post en "résolu". De plus je pensais avoir compris mais j'ai un nouveau problème du même ordre et je n'arrive pas à le résoudre.
Je récupère le résultat de ma requête $retour_messages_query dans un tableau $retour_messages = mysql_fetch_assoc. Cela allait bien pour la précédente requête mais pas ici. Encore merci ThEBiShOp ;-)
La requête :
$retour_messages_query = SQLSelect("SELECT a.numGite, b.codeDepartement FROM GITE a, DEPARTEMENT b, AS_COMMU_DEPAR c WHERE a.ID_commune = c.COMMUNE_ID_commune and b.ID_departement = c.DEPARTEMENT_ID_departement and b.codeDepartement = '".$mot_recherche."' "); $clauseWhere. // Critères de recherche " ORDER BY numGite ASC LIMIT ".$premiereEntree.", ".$messagesParPage." ";// Pagination $retour_messages = mysql_fetch_assoc($retour_total_query); //On range retour sous la forme d'un tableau.
J'ai essayé plusieurs solutions (foreach...) sans succès. Voici le message d'erreur : Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in line 267. Cette ligne est dans le code final d'affichage des résultats qui semble poser problème :
while($donnees_messages = mysql_fetch_array($retour_messages) or die(mysql_error()) ) { ...
Je vois bien qu'il y a encore conflit entre 2 array. Merci par avance pour votre aide, je craque.
Evelyne
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
20 mars 2013 à 15:15
20 mars 2013 à 15:15
tu peux montrer ce qu'il y a avant la ligne de l'erreur ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 15:19
20 mars 2013 à 15:19
Voici le code ci-dessous, pour un affichage page par page classique. Merci par avance si vous pouviez m'indiquer pourquoi j'ai tout faux ? Je ne comprends pas pourtant vos explications semblaient claires ?
Evelyne
Evelyne
<?php if($total) { // début du tableau echo $total; echo '<table id=table1>'."\n"; // première ligne on affiche les titres prénom et surnom dans 2 colonnes echo '<tr>'; echo '<th>Numéros des gîtes</th>'; //echo '<th>Nature des gîtes</th>'; echo '</tr>'."\n"; // lecture et affichage des résultats sur 1 colonne, 1 résultat par ligne. while($donnees_messages = mysql_fetch_array($retour_messages) or die(mysql_error()) ) { echo '<tr>'; echo '<td ><a href="../lith_page_gite.php?numGite='. $donnees_messages['numGite'] . '">' . $donnees_messages['numGite'] . '</a></td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; // fin du tableau. }
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
20 mars 2013 à 15:23
20 mars 2013 à 15:23
Je pense que le problème est similaire à ceux d'avant, ce coup ci ce n'est pas des mysql_query que tu fais en trop, mais tu fais un mysql_fetch_array sur un mysql_fetch_assoc.
Le plus simple c'est que tu retires la ligne :
$retour_messages = mysql_fetch_assoc($retour_total_query);
et change ton while :
while($donnees_messages = mysql_fetch_array($retour_total_query) or die(mysql_error()) )
Le plus simple c'est que tu retires la ligne :
$retour_messages = mysql_fetch_assoc($retour_total_query);
et change ton while :
while($donnees_messages = mysql_fetch_array($retour_total_query) or die(mysql_error()) )
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 15:41
20 mars 2013 à 15:41
Merci encore.
Mon tableau listant les résultats ne s'affiche plus et je n'ai aucun message d'erreur. Je tente de reprendre morceau par morceau mon code en faisant des echo, print_r, var_dump...
Dès la 1ère requête (pour compter le nombre d'enregistrements) quelque chose ne va pas, un "print_r ($retour_total_query);" renvoie : "Resource id #6". Je n'ai pas trouvé de solution sur le web.
Ensuite des echos sur $messagesParPage, $nombreDePages, $total renvoient bien les bonnes valeurs.
Il me semble que $retour_total_query est vide car un echo donne "array" et j'avais déjà eu ce souci ?
Une piste peut-être ? Merci par avance,
Evelyne
Mon tableau listant les résultats ne s'affiche plus et je n'ai aucun message d'erreur. Je tente de reprendre morceau par morceau mon code en faisant des echo, print_r, var_dump...
Dès la 1ère requête (pour compter le nombre d'enregistrements) quelque chose ne va pas, un "print_r ($retour_total_query);" renvoie : "Resource id #6". Je n'ai pas trouvé de solution sur le web.
Ensuite des echos sur $messagesParPage, $nombreDePages, $total renvoient bien les bonnes valeurs.
Il me semble que $retour_total_query est vide car un echo donne "array" et j'avais déjà eu ce souci ?
Une piste peut-être ? Merci par avance,
Evelyne
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
20 mars 2013 à 15:47
20 mars 2013 à 15:47
si tu veux, mets ton code dans https://pastebin.com/ ça sera beaucoup plus clair, parce que là je peux pas trop t'en dire plus sans voir concrètement ce que tu as fait ^^
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 16:05
20 mars 2013 à 16:05
Merci ThEBiShOp,
J'accepte bien volontiers ton aide. Si tu pouvais, STP, juste prendre quelques mn pour balayer mon code, je suis sûre que mon/mes erreurs vont te sauter aux yeux.
Voici le lien : http://pastebin.archlinux.fr/459797
Je te remercie encore par avance,
Evelyne
J'accepte bien volontiers ton aide. Si tu pouvais, STP, juste prendre quelques mn pour balayer mon code, je suis sûre que mon/mes erreurs vont te sauter aux yeux.
Voici le lien : http://pastebin.archlinux.fr/459797
Je te remercie encore par avance,
Evelyne
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
20 mars 2013 à 16:07
20 mars 2013 à 16:07
ça c'est pas certain, si je pouvais tester, c'est sûr que ça irait plus vite, mais c'est pas très beaucoup possible.
Maintenant que j'ai ton code sous les yeux, est-ce que tu peux me dire les lignes (le n°) qui te posent problème et le problème en question.
Maintenant que j'ai ton code sous les yeux, est-ce que tu peux me dire les lignes (le n°) qui te posent problème et le problème en question.
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 16:17
20 mars 2013 à 16:17
Je pense qu'il y a un problème dès le début, dans la 1ère requête :
ligne 43 : "print_r ($retour_total_query);" renvoie "Resource id #6"
Ensuite, ligne 57 :
"echo $donnees_total;" affiche "Array". Ca c'est que le tableau est vide. Normal puisque $retour_total_query est vide.
Les 3 autres echos sont OK : echo $messagesParPage;
echo $nombreDePages;
echo $total;
Je suis sûre que c'est toujours le même problème, des mysql_query sur des query, et des mysql_fetch_array sur des mysql_fetch_assoc...
Je ne maîtrise pas du tout ça.
Au final, je n'ai que l'entête de mon tableau qui s'affiche, aucun résultat dedans.
La ligne "Pour le terme recherché : 31, il y a 14 enregistrements dans la Lithothèque." est OK, c'est bien 31 et 14.
Merci.
Evelyne
ligne 43 : "print_r ($retour_total_query);" renvoie "Resource id #6"
Ensuite, ligne 57 :
"echo $donnees_total;" affiche "Array". Ca c'est que le tableau est vide. Normal puisque $retour_total_query est vide.
Les 3 autres echos sont OK : echo $messagesParPage;
echo $nombreDePages;
echo $total;
Je suis sûre que c'est toujours le même problème, des mysql_query sur des query, et des mysql_fetch_array sur des mysql_fetch_assoc...
Je ne maîtrise pas du tout ça.
Au final, je n'ai que l'entête de mon tableau qui s'affiche, aucun résultat dedans.
La ligne "Pour le terme recherché : 31, il y a 14 enregistrements dans la Lithothèque." est OK, c'est bien 31 et 14.
Merci.
Evelyne
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
20 mars 2013 à 16:25
20 mars 2013 à 16:25
ligne 43, c'est un ressource id, c'est normal je pense.
par contre j'ai du mal à comprendre comment tu peux avoir $total alors que $donnees_total est vide.
essaye de remplacer SQLSelect par mysql_query pour voir ce que ça donne
par contre j'ai du mal à comprendre comment tu peux avoir $total alors que $donnees_total est vide.
essaye de remplacer SQLSelect par mysql_query pour voir ce que ça donne
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 16:45
20 mars 2013 à 16:45
OK pour la ligne 43. Je vais voir ce que cela signifie.
C'est vrai que c'est incompréhensible, d'autant que tout marchait bien encore la semaine dernière avec une connexion de type :
mysql_connect('localhost', 'root', 'root');
mysql_select_db('bdd');
et un SELECT pour les requêtes.
J'ai juste voulu utiliser ma fonction pour faire tout bien propre.
SQLSelect est une fonction (dans un fichier à part) qui fait appel à mysql_query donc je ne peux pas remplacer SQLSelect par mysql_query.
Voici la fonction (utilisée pour tout mon site et qui est nickel) :
Je te remercie pour ton aide mais ne perds pas trop de temps. J'ai tout imprimé et je vais décortiquer le code actuel et l'ancien pour voir. C'est galère mais ça fait progresser.
Evelyne
C'est vrai que c'est incompréhensible, d'autant que tout marchait bien encore la semaine dernière avec une connexion de type :
mysql_connect('localhost', 'root', 'root');
mysql_select_db('bdd');
et un SELECT pour les requêtes.
J'ai juste voulu utiliser ma fonction pour faire tout bien propre.
SQLSelect est une fonction (dans un fichier à part) qui fait appel à mysql_query donc je ne peux pas remplacer SQLSelect par mysql_query.
Voici la fonction (utilisée pour tout mon site et qui est nickel) :
function SQLSelect($sql) { global $BDD_host; global $BDD_base; global $BDD_user; global $BDD_password; mysql_pconnect($BDD_host, $BDD_user, $BDD_password) or die("<font color=\"red\">Erreur de connexion : " . mysql_error() . "</font>"); mysql_select_db($BDD_base) or die("<font color=\"red\">Erreur select db : " . mysql_error() . "</font>"); mysql_query("SET NAMES 'utf8'"); $rs = mysql_query($sql) or die("Erreur sur la requete : <font color=\"red\">$sql" . "|" . mysql_error() . "</font>"); $num = mysql_num_rows($rs); if ($num == 0) return false; else return $rs; }
Je te remercie pour ton aide mais ne perds pas trop de temps. J'ai tout imprimé et je vais décortiquer le code actuel et l'ancien pour voir. C'est galère mais ça fait progresser.
Evelyne
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 16:56
20 mars 2013 à 16:56
Une indication : j'ai fait un "print_r($donnees_total);" en ligne 47, juste en-dessous de "$donnees_total = mysql_fetch_assoc($retour_total_query);" et cela m'affiche :
Array correspond à "$donnees_total".
"[total] => 14" : c'est juste il y a bien 14 résultats
En fait cela correspond à la ligne 49 "$total = $donnees_total['total'] or die('requete =>'.$total.'<br> " qui ne s'affichait pas avant ?
Par contre je ne comprends pas du tout cette ligne de code, à quoi correspond ce ['total'] qui n'apparaît nulle part ailleurs dans mon fichier ???
Merci encore.
Evelyne
Array ( [total] => 14 )
Array correspond à "$donnees_total".
"[total] => 14" : c'est juste il y a bien 14 résultats
En fait cela correspond à la ligne 49 "$total = $donnees_total['total'] or die('requete =>'.$total.'<br> " qui ne s'affichait pas avant ?
Par contre je ne comprends pas du tout cette ligne de code, à quoi correspond ce ['total'] qui n'apparaît nulle part ailleurs dans mon fichier ???
Merci encore.
Evelyne
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
20 mars 2013 à 16:59
20 mars 2013 à 16:59
ta requête : SELECT count(a.ID_gite) AS total
c'est ce champ là que tu retrouves dans $donnees_total
c'est ce champ là que tu retrouves dans $donnees_total
Evelyne31
Messages postés
55
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
13 septembre 2016
5
20 mars 2013 à 17:05
20 mars 2013 à 17:05
OK, merci. J'ai tout imprimé, je rentre ça me fera une coupure et je reprends en arrivant.
Merci encore pour ton aide, je reposterai certainement ce soir... peut-être pour indiquer la solution ??? ;-)
Bonne fin d'après-midi,
Evelyne
Merci encore pour ton aide, je reposterai certainement ce soir... peut-être pour indiquer la solution ??? ;-)
Bonne fin d'après-midi,
Evelyne