Pb avec mysql_fetch_assoc
Résolu/Fermé
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
-
4 mai 2011 à 16:37
Utilisateur anonyme - 5 mai 2011 à 19:13
Utilisateur anonyme - 5 mai 2011 à 19:13
11 réponses
Bertrand40
Messages postés
1196
Date d'inscription
vendredi 27 mars 2009
Statut
Membre
Dernière intervention
27 février 2023
194
4 mai 2011 à 16:49
4 mai 2011 à 16:49
Bonjour,
Tu as quoi comme msg d'erreur ?
J'ai regardé vite fait, et a priori il y a une erreur ici :
$SQL_plats = '"SELECT * FROM plats WHERE Num_Menu=".$menu["NumMenu"];';
$SQL_plats = 'SELECT * FROM plats WHERE Num_Menu="' . $menu["NumMenu"] . '"';
@+
Tu as quoi comme msg d'erreur ?
J'ai regardé vite fait, et a priori il y a une erreur ici :
$SQL_plats = '"SELECT * FROM plats WHERE Num_Menu=".$menu["NumMenu"];';
$SQL_plats = 'SELECT * FROM plats WHERE Num_Menu="' . $menu["NumMenu"] . '"';
@+
Lumpy-Rock
Messages postés
68
Date d'inscription
jeudi 6 mai 2010
Statut
Membre
Dernière intervention
19 juillet 2014
1
Modifié par Lumpy-Rock le 4/05/2011 à 20:38
Modifié par Lumpy-Rock le 4/05/2011 à 20:38
Bonjour :)
L'erreur se situe dans la requête :
Essaie comme ça :
Voilà pour ça. D'autre part, je te conseille de réunir ton fetch_assoc en 1, au lieu de faire deux boucles...
L'erreur se situe dans la requête :
$SQL_plats = '"SELECT * FROM plats WHERE Num_Menu=".$menu["NumMenu"];';
Essaie comme ça :
$menuactuel = $menu["NumMenu"]; $SQL_plats = "SELECT * FROM plats WHERE Num_Menu='$menuactuel'";
Voilà pour ça. D'autre part, je te conseille de réunir ton fetch_assoc en 1, au lieu de faire deux boucles...
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
4 mai 2011 à 23:18
4 mai 2011 à 23:18
Non ca marche toujours pas !!!
Lumpy-Rock
Messages postés
68
Date d'inscription
jeudi 6 mai 2010
Statut
Membre
Dernière intervention
19 juillet 2014
1
Modifié par Lumpy-Rock le 5/05/2011 à 09:33
Modifié par Lumpy-Rock le 5/05/2011 à 09:33
Je ne pense pas que c'est ça mais c'est quand même une erreur, enlève les points virgules après les deux While !!
Tu as toujours la même erreur qu'au début ?
Et il y a aussi un problème de HTML :
Remplace
par
Tu as toujours la même erreur qu'au début ?
Et il y a aussi un problème de HTML :
Remplace
echo '<span id="titre">'.$menu["LibMenu"]." : ".$menu["PrixMenu"].'</span>';
par
echo '<span id="titre">'.$menu["LibMenu"].' : '.$menu["PrixMenu"].'</span>';
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 10:33
5 mai 2011 à 10:33
Si j'enlève les deux points virgules après les While, rien ne se passe. Il y a toujours les erreurs.
Lumpy-Rock
Messages postés
68
Date d'inscription
jeudi 6 mai 2010
Statut
Membre
Dernière intervention
19 juillet 2014
1
Modifié par Lumpy-Rock le 5/05/2011 à 15:45
Modifié par Lumpy-Rock le 5/05/2011 à 15:45
Je crois que je sais..
Essaie comme ça au lieu de ce que je t'ai dit au dessus...
De toute façon, le problème est forcément dans la requête, l'erreur que tu décris est souvent provoquée par une mauvaise syntaxe..
Essaie comme ça au lieu de ce que je t'ai dit au dessus...
$menuactuel = $menu["NumMenu"]; $SQL_plats = "SELECT * FROM plats WHERE Num_Menu=$menuactuel";
De toute façon, le problème est forcément dans la requête, l'erreur que tu décris est souvent provoquée par une mauvaise syntaxe..
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 14:35
5 mai 2011 à 14:35
Bah non, ça marche pas. Il n'y a que les titres des menus qui apparaissent.
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 14:44
5 mai 2011 à 14:44
Mais en fait, quand il y a marqué :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\AP Site\Restaurant.php on line 36
Ca veut dire qu'il manque un paramètre nom ?? Il sert à quoi ce paramètre ? Est il important ? Ce n'est pas lui qui commence à m'emm***** ???
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\AP Site\Restaurant.php on line 36
Ca veut dire qu'il manque un paramètre nom ?? Il sert à quoi ce paramètre ? Est il important ? Ce n'est pas lui qui commence à m'emm***** ???
Bertrand40
Messages postés
1196
Date d'inscription
vendredi 27 mars 2009
Statut
Membre
Dernière intervention
27 février 2023
194
Modifié par Bertrand40 le 5/05/2011 à 11:17
Modifié par Bertrand40 le 5/05/2011 à 11:17
Tu peux nous décrire tes tables ?
Ca devrait donner un truc de ce genre-là.
<?php
$cnx = mysql_connect('localhost', 'root','' );
mysql_query("SET NAMES UTF8");
mysql_select_db('site');
$sql = mysql_query (
'SELECT *
FROM menus
LEFT JOIN plats
WHERE plats.NumMenu = menus.Num_Menu'
);
while ($menu = mysql_fetch_assoc($sql))
{
echo '
<p id="titre">' . $menu['LibMenu']. ' : ' . $menu['PrixMenu'] . '</p>
<p>' . $menu['LibPlat'] . '</p>
<p><img src="' . $menu['ImgPlat'] . '" alt="' . $menu['LibPlat'] . '" /></p>';
}
?>
Le jambon de Bayonne c'est bon ! Non, disons que personnellement je trouve ça bon.
Ca devrait donner un truc de ce genre-là.
<?php
$cnx = mysql_connect('localhost', 'root','' );
mysql_query("SET NAMES UTF8");
mysql_select_db('site');
$sql = mysql_query (
'SELECT *
FROM menus
LEFT JOIN plats
WHERE plats.NumMenu = menus.Num_Menu'
);
while ($menu = mysql_fetch_assoc($sql))
{
echo '
<p id="titre">' . $menu['LibMenu']. ' : ' . $menu['PrixMenu'] . '</p>
<p>' . $menu['LibPlat'] . '</p>
<p><img src="' . $menu['ImgPlat'] . '" alt="' . $menu['LibPlat'] . '" /></p>';
}
?>
Le jambon de Bayonne c'est bon ! Non, disons que personnellement je trouve ça bon.
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
Modifié par JésusLeGrec le 5/05/2011 à 11:45
Modifié par JésusLeGrec le 5/05/2011 à 11:45
Les structures de mes tables sont les suivantes :
la table menus :
NumMenu
LibMenu
PrixMenu
la table plats :
NumPlat
LibPlat
ImgPlat
#Num_Menu (clé étrangère vers la table menus)
Et en fait, je veux afficher le titre d'un menu, en dessous les plats qui font partis de ce menu et enfin les images des plats.
la table menus :
NumMenu
LibMenu
PrixMenu
la table plats :
NumPlat
LibPlat
ImgPlat
#Num_Menu (clé étrangère vers la table menus)
Et en fait, je veux afficher le titre d'un menu, en dessous les plats qui font partis de ce menu et enfin les images des plats.
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 11:49
5 mai 2011 à 11:49
En utilisant ta solution, il n'y a plus qu'une erreur, qui est :
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\AP Site\Restaurant.php on line 38
C'est toujours la même!!!
Et la ligne 38 c'est :
while ($menu = mysql_fetch_assoc($sql))
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\AP Site\Restaurant.php on line 38
C'est toujours la même!!!
Et la ligne 38 c'est :
while ($menu = mysql_fetch_assoc($sql))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Eastchild
Messages postés
319
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
28 mars 2012
31
5 mai 2011 à 11:21
5 mai 2011 à 11:21
Bonjour,
J'ai pas trop l'habitude du mysql_fetch_assoc mais peux-tu essayer en les remplaçant par mysql_fetch_array et s'il y a toujours une erreur nous la noté ?
J'ai pas trop l'habitude du mysql_fetch_assoc mais peux-tu essayer en les remplaçant par mysql_fetch_array et s'il y a toujours une erreur nous la noté ?
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 11:47
5 mai 2011 à 11:47
Avec mysql_fetch_array il y a toujour une erreur, qui est :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\AP Site\Restaurant.php on line 36
Avec ligne 36 :
while ($plats = mysql_fetch_array($req_plats))
Apparemment, il manquerait un paramètre. Mais pourquoi faire ?
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\AP Site\Restaurant.php on line 36
Avec ligne 36 :
while ($plats = mysql_fetch_array($req_plats))
Apparemment, il manquerait un paramètre. Mais pourquoi faire ?
Utilisateur anonyme
5 mai 2011 à 14:13
5 mai 2011 à 14:13
saluuuuuuut à tous,
Oh! un problème mysqlllllllllll
vous voulez que je vous aide à le résoudre...... ?
c'est quoi mysql deja ? :(
Oh! un problème mysqlllllllllll
vous voulez que je vous aide à le résoudre...... ?
c'est quoi mysql deja ? :(
Utilisateur anonyme
5 mai 2011 à 15:27
5 mai 2011 à 15:27
je vois que personne n'a répondu à ma question, mais justement c'est normal qu'on prenne toujours celui qui pose la question conne comme un con.
Et bien ma question était de savoir si vous savez que mysql est un langage de programmation, je vois que la plupart des gens ne le savent pas et prenne plutôt php comme le langage et mysql comme une fonction et bien non justement c'est plus que ça.
j'espère que tu as corrigé tes erreurs syntaxes php comme t'a dit les autres et cette portion de concaténation qui peut aussi s'écrire comme ceci:
et bien sûr c'est justement là le problème pour php le code est bon mais pour mysql il y a un problème se cache dans la clé étrangère
on prend les plat qui correspondent au menu :
la clé étrangère étant de relier l'index du menus au plats (NumMenu) aux plats par #Num_Menu (qui montre qu'une catégorie de plat appartient à un menu)
il faut donc mettre #Num_Menu dans la requête sur le nombre de plats appartenant à un menu (Num_Menu n'est pas une colonne de la table plats mais #Num_Menu)
soit:
et voilà!
s'il y a une erreur de concaténation php tu peux le corriger toi même
attention aux noms donnés aux variables (#Num_Menu ) cela peut entrainer de tels erreurs
@+
l'injecteur sql !
Et bien ma question était de savoir si vous savez que mysql est un langage de programmation, je vois que la plupart des gens ne le savent pas et prenne plutôt php comme le langage et mysql comme une fonction et bien non justement c'est plus que ça.
j'espère que tu as corrigé tes erreurs syntaxes php comme t'a dit les autres et cette portion de concaténation qui peut aussi s'écrire comme ceci:
$SQL_plats = "SELECT * FROM plats WHERE Num_Menu='".$menu["NumMenu"]."'";
et bien sûr c'est justement là le problème pour php le code est bon mais pour mysql il y a un problème se cache dans la clé étrangère
on prend les plat qui correspondent au menu :
la clé étrangère étant de relier l'index du menus au plats (NumMenu) aux plats par #Num_Menu (qui montre qu'une catégorie de plat appartient à un menu)
il faut donc mettre #Num_Menu dans la requête sur le nombre de plats appartenant à un menu (Num_Menu n'est pas une colonne de la table plats mais #Num_Menu)
soit:
$SQL_plats = "SELECT * FROM plats WHERE #Num_Menu='".$menu["Num_Menu"]."'";
et voilà!
s'il y a une erreur de concaténation php tu peux le corriger toi même
attention aux noms donnés aux variables (#Num_Menu ) cela peut entrainer de tels erreurs
@+
l'injecteur sql !
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 15:52
5 mai 2011 à 15:52
Eh bien mauvaise nouvelle pour toi!!! Rien ne marche avec ce que tu m'as donné.
J'en ai marre!!! Je vais me pendre!!! lol
J'en ai marre!!! Je vais me pendre!!! lol
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 16:31
5 mai 2011 à 16:31
Voici le code de la BDD
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- https://www.phpmyadmin.net/
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- https://www.phpmyadmin.net/
oui déjà merci pour le #Num_Menu que tu avais mis tout à l'heure qui m'a fait écrire des bêtises lol
bon voilà on comprend mieux
oui la requête sql c'est bien ceci
le problème est donc autre qu'un problème sql si ceci ne fonctionne pas
bon voilà on comprend mieux
oui la requête sql c'est bien ceci
$SQL_plats = "SELECT * FROM plats WHERE Num_Menu='".$menu["NumMenu"]."'";
le problème est donc autre qu'un problème sql si ceci ne fonctionne pas
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 16:58
5 mai 2011 à 16:58
Là, il n'y a plus d'erreur, mais (et oui, désolé, il y a toujours un "mais"), il n'y a plus que les titres de mes menus qui sont affichés... o_0
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 17:00
5 mai 2011 à 17:00
Je suis chiant hein ...
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 17:08
5 mai 2011 à 17:08
Oui je sais on me le fis souvent !!!!
Bon alors, là c'est de mieux en mieux!!! Il y a des noms de repas qui s'affichent. Pas tous par contre. Et les images non plus ne s'affichent pas...
Bon alors, là c'est de mieux en mieux!!! Il y a des noms de repas qui s'affichent. Pas tous par contre. Et les images non plus ne s'affichent pas...
Utilisateur anonyme
Modifié par eone2 le 5/05/2011 à 18:05
Modifié par eone2 le 5/05/2011 à 18:05
le truc ce serai de récupérer les images dans la deuxième
boucle et de les traiter(afficher) dans une troisième
bon voilà c'est un truc du genre
boucle et de les traiter(afficher) dans une troisième
//apres $req_plats = mysql_query($SQL_plats); $i=0; $j=0; $imgPlat=array(); while ($plats = mysql_fetch_assoc($req_plats)); { echo '<br/>'.$plats["LibPlat"]; $imgPlat[$i][0]=$plats["ImgPlat"]; $imgPlat[$i][1]=$plats["LibPlat"]; $i++; } //afichage des images while($j<count($imgPlat)) { echo '<img src="'.$imgPlat[$j][0].'" alt="'.$imgPlat[$j][1].'" title="'.$imgPlat[$j][1].'"/>'; $j++; }
bon voilà c'est un truc du genre
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 18:19
5 mai 2011 à 18:19
Alors, TU ES TROP UN BOSS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
CA marche!!! YOUPI!!!
Merci Beaucoup!!! Et encore, ce n'est pas assez!!! Ça fait deux semaines que je cherche la solution et toi tu la trouve en à peine 4 heures!!! Tu es un génie!!!
CA marche!!! YOUPI!!!
Merci Beaucoup!!! Et encore, ce n'est pas assez!!! Ça fait deux semaines que je cherche la solution et toi tu la trouve en à peine 4 heures!!! Tu es un génie!!!
JésusLeGrec
Messages postés
96
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 mars 2013
2
5 mai 2011 à 19:03
5 mai 2011 à 19:03
Ça t'a quand même prit la tête hein ?
pas vraiment puisque je savais déjà ce tout ce qui pouvais être comme erreur, mais c'est toi qui rendait les choses difficiles ^^
Tu sais, j'ai beaucoup programmé en php, et beaucoup trop même on va dire. Mais bon ce n'est plus trop mon passe temps. Si tu continues tu arriveras à un stade où tu sera capable de résoudre presque tous les problèmes car tu les auras déjà rencontré.
ça fait plaisir de refaire ces choses.
Tu sais, j'ai beaucoup programmé en php, et beaucoup trop même on va dire. Mais bon ce n'est plus trop mon passe temps. Si tu continues tu arriveras à un stade où tu sera capable de résoudre presque tous les problèmes car tu les auras déjà rencontré.
ça fait plaisir de refaire ces choses.
Modifié par JésusLeGrec le 4/05/2011 à 17:08
Et les messages d'erreurs (que j'ai oublié de donné) c'est
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\[...] on line 36
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\[...] on line 40
En sachant que les lignes 36 et 40 c'est :
while ($plats = mysql_fetch_assoc($req_plats));
4 mai 2011 à 18:42
Si tu l'enlèves il n'y a plus d'erreur non ? Apparemment tu envoies un booléen à ta requête.
4 mai 2011 à 19:28
Modifié par Bertrand40 le 4/05/2011 à 20:15
Le pb vient donc de ta condition (WHERE). Tu as fait un echo de la variable que tu passes en condition ?
Si Num_Menu est un nombre, tu as essayé comme ça ?
WHERE Num_Menu = ' . $menu['NumMenu'] . '