Pb mysql_fetch_array()

camille_pernot Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
 camille_pernot -
Bonjour,

j'ai une erreur que je n'arrive pas a corriger pouvez vous m'aider?
J'utilise wamp pour créer mon site

Voila mon programme php :
<?php

$nomrecette=$_post['nomrecette'];
$type=$_post['type'];
$pays=$_post['pays'];

mysql_connect("localhost", "root", "") or die("impossible de se connecter a la base."); // connexion au serveur
mysql_select_db("easycooking") or die("impossible de selectionner la base."); // connexion à la base de donnée
$req1= "select * from 'recette' where TypeRecette = 'Entrée' and NomRecette = $nomrecette"; // selectionner toutes les lignes de la table 'recette' où les attributs typerecette et nomrecette contiennent les valeurs Entrée et $nomrecette
$res1= mysql_query($req1) or die ("Pb requette ".mysql_error()) ; //executer la requete ou afficher un message d'erreur
$ligne1=mysql_fetch_array($res1);
$req2= "select * from 'recette' where TypeRecette = 'Entrée' and GenreRecette = $type";
$res2= mysql_query($req2);
$ligne2=mysql_fetch_array($res2) or die ("Pb requette ".mysql_error()) ;
$req3= "select * from 'recette' where TypeRecette = 'Entrée' and Pays = $pays";
$res3= mysql_query($req3);
$ligne3=mysql_fetch_array($res3) or die ("Pb requette ".mysql_error()) ;
echo "$ligne1";
echo "$ligne2";
echo "$ligne3";// afficher l'ensemble des attributs selectionnés grace aux requetes
?>

et voici le message d'erreur :
Pb requette You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''recette' where TypeRecette = 'Entrée' and NomRecette ='


et voici la table correspondante :
CREATE TABLE IF NOT EXISTS `recette` (
`NRecette` int(255) unsigned NOT NULL AUTO_INCREMENT,
`NomRecette` text NOT NULL,
`Budget` text,
`Calorie` text,
`Description` varchar(255) NOT NULL,
`Continent` text NOT NULL,
`Pays` text,
`TypeRecette` text NOT NULL,
`GenreRecette` text NOT NULL,
`Vegetarien` text NOT NULL,
`Boisson` text,
`Ing1` text NOT NULL,
`Ing2` text,
`Ing3` text,
PRIMARY KEY (`NRecette`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Merci

4 réponses

le père
 
Bonjour

Je vois deux problèmes (il y en a peut-être plus ) :
1 - $req1= "select * from 'recette' where TypeRecette = 'Entrée' and NomRecette = $nomrecette"
Nomrecette est un champ texte, la valeur $nomrecette associée devrait être entourée d'apostrophes comme tu l'as fait pour 'Entrée' ->
$req1= "select * from 'recette' where TypeRecette = 'Entrée' and NomRecette = '$nomrecette'"
2 - la variable récupérée depuis un formulaire s'appelle $_POST, pas $_post. Les noms de variables sont sensibles à la casse (majuscules/minuscules) en PHP
0
Dr Zoidberg Messages postés 529 Date d'inscription   Statut Membre Dernière intervention   100
 
Salut,

Ok avec le père, j'ajouterais que mettre le nom de la table entre quotes me parait suspect, mieux vaut ne rien mettre

$req1= "select * from recette where TypeRecette = 'Entrée' and NomRecette = '$nomrecette'"
ou
$req1= "select * from `recette` where TypeRecette = 'Entrée' and NomRecette = '$nomrecette'"
0
le père
 
Tu as raison. Les noms de tables entre quotes ne sont pas suspects, ils sont erronés, c'est sûr.
0
camille_pernot
 
OK j'ai corriger mon programme et maintenant il fonctionne.
Merci pour vos reponses
0