[PHP] Problème avec ce code :
RésoluJ'ai un problème dans ce code PHP, on me renvoie une erreur à la ligne de dessin du tableau, si quelqu'un pouvait m'aider ça serait super !!!
<html>
<head>
<title>Liste des produits</title>
</head>
<body>
<?
$bd="LaFleur_version2";
$user="root";
$password="";
$cnx = odbc_connect( $bd , $user, $password );
if( ! $cnx ) echo "Impossible de se connecter";
else
{
$requete= "SELECT pdt_image, pdt_ref, pdt_designation, pdt_prix
FROM produit, categorie
WHERE categorie.cat_libelle='$categorie'
AND produit.pdt_categorie = categorie.cat_code;";
$result=odbc_exec( $cnx , $requete );
while (odbc_fetch_into( $result , $ligne ) ){
echo"<TR><TD>"<img src="../images/'.$ligne[0].'".jpg">"</TD><TD>".$ligne[1]."</TD><TD>".$ligne[2]."</TD><TD>".$ligne[3]."</TD></TR>"};
}
?>
</body>
</html>
--
Plus tu pedales moins vite...
...Moins t'avance plus vite !!
11 réponses
Un développeur rencontre une erreur PHP lors de l'affichage d'un tableau des produits via ODBC, la requête reliant produit et catégorie et la récupération des lignes posant problème. Les difficultés évoquées incluent une concaténation complexe et des guillemets mal placés, l'absence de balises HTML fermées et une variable '$categorie' non définie, entraînant des parse errors et des sorties incomplètes. Des propositions suggèrent de simplifier l echo des lignes, d'échapper correctement les chaînes et de veiller à fermer les balises HTML, tout en vérifiant la définition de la variable '$categorie'. La recommandation principale est d'ajouter avant la requête la ligne '$categorie = $_POST['categorie'];' et de s'assurer que la balise <table> est présente pour un affichage correct.</table>
-
ContributeurSalut,
Remplace ton tableau par celui-ci :while (odbc_fetch_into( $result , $ligne ) ){ echo '<TR><TD><img src="../images/'.$ligne[0].'.jpg"></TD><TD>'.$ligne[1].'</TD><TD>'.$ligne[2].'</TD><TD>'.$ligne[3].'</TD></TR>'}; }
@+
-
Pour commencer merci quand même pour ton aide...
Mais ça ne marche pas non plus il me dit :
Parse error: parse error, expecting `','' or `';'' in c:\program files\easyphp1-8\www\version2\produits.php on line 22
La ligne 22 est celle dessinant le tableau et produits.php le nom du fichier contenant tout ce code..
Merci
-
-
Salut,
Dans ta ligne :echo"<TR><TD>"<img src="../images/'.$ligne[0].'".jpg">"</TD><TD>".$ligne[1]."</TD><TD>".$ligne[2]."</TD><TD>".$ligne[3]."</TD></TR>"};
on dirait bien que tu t'emmêles les pinceaux avec les " et les '... De plus, y a un } qui ne sort de nulle part.
Essaie de mettre ça plutôt :echo '<TR><TD><img src="../images/'.$ligne[0].'.jpg"></TD><TD>'.$ligne[1].'</TD><TD>'.$ligne[2].'</TD><TD>'.$ligne[3].'</TD></TR>';
Ca devrait marcher mieux.
Sinon, donne-nous au moins l'erreur qu'il te renvoie ;)
Au passage, tu n'as pas ouvert de balises <table>, donc je ne garantis pas l'affichage correct sur le navigateur ;)
Bonne chance,
Xavier-
-
-
@Erdnaxodbc_fetch_into( $result , $ligne )
Je ne connais pas l'interfaçage php/odbc, mais j'ai pensé que cette ligne définissait $ligne comme le tuple suivant de $result, non ? -
@NezEnMoinsRajoute un } juste avant ?>
C'est celui du else qui n'est pas fermé. -
@XavierOk merci j'ai fait l'abruti j'avais pas vu merci beaucoup et maintenant il me renvoie : Notice: Undefined variable: categorie in c:\program files\easyphp1-8\www\version2\produits.php on line 17
La ligne 17 correspond a la ligne :AND produit.pdt_categorie = categorie.cat_code;";
Merci beaucoup les gras vous êtes géniaux...
-
-
Mais j'ai quand même l'impression que mon problème vient de la ligne du dessus a savoir :
WHERE categorie.cat_libelle='$categorie'
Si un de vous deux pouvait m'aider ça serait formidable...
Merci-
Effectivement, ta variable $categorie n'a pas l'air d'être définie...
Elle vient d'où ? D'un formulaire ?
Essaie de faire
echo $categorie;
en haut de ta page, voir ce que ça affiche...
Si elle vient d'un formulaire passé en POST, alors il faut l'initialiser de la façon suivante :
$categorie = $_POST['categorie'']
(ou $_GET['categorie] si c'est une variable passée en GET )
-
-
Il me marque qu'elle n'est pas définie...
J'ai deux fichier php..
Le premier qui s'exécute d'abord :<html> <head> <title>menu</title> <script> function afficherProduits(categ) { document.choixCateg.categorie.value = categ; document.choixCateg.submit(); } </script> </head> <body> <h2>Sté Lafleur</h2> <p><a href="logo.htm" target="page">Accueil</a> <hr> <u><b>Nos produits</b></u> <? $bd="LaFleur_version2"; $user="root"; $password=""; $cnx = odbc_connect( $bd , $user, $password ); if( ! $cnx ) echo "Impossible de se connecter"; else { $requete='select * from categorie;'; $result=odbc_do( $cnx , $requete ); while (odbc_fetch_into($result, $ligne)) { echo '<p><a href="javascript:afficherProduits(\''.$ligne[0].'\')">'.$ligne[1].'</a>'; } } ?> <form name="choixCateg" action="produits.php" target="page" method="post"> <input type="hidden" name="categorie"> </form> </body> </html>
et le second fichier php est plus haut dans le post..
C'est en fait un site internet utilisant du php qui récupère des données dans une base de donnée Access, la connexion est faite avec un driver ODBC..
Mon site internet est composé de 2frames (a gauche: menu et a a droite: logo) dans la frame de gauche il me récupère les différentes catégories de fleurs que j'ai dans la base de données et quand je clique dessus (c'est la que mon erreur arrive) il devrait apparaitre un tableau récuperant diverses informations sur les différents produits de cette catégorie..
Comment je peux déclarer $categorie ??
Merci
--
Plus tu pedales moins vite...
...Moins t'avance plus vite !!-
-
@XavierIl ne me sors aucune erreur mais rien ne s'affiche, c'est peut-être due au fait que je n'ai pas mis les balises <Table> et </Table> ??
On doit pas etre loin du but....
Merci quand même...
-
-
Aider moi stp....
-
s'il vous plait aider moi on y est presque...
Merci d'avance...-
Ben t'as essayé avec les <table> ?
J'attends ta réponse, moi...
Et si rien ne s'affiche, affiche le code source (html) de ta page et copie-le ici...
Sinon, il va falloir s'assurer que ta requête renvoie bien un résultat.
Pour ça, tente de l'afficher (echo $requete; ), puis lance-la directement dans ta base de données voir si il en sort quelque chose. -
@XavierTu as mon code source de produits.php là :
<html> <head> <title>Liste des produits</title> </head> <body> <? $bd="LaFleur_version2"; $user="root"; $password=""; $cnx = odbc_connect( $bd , $user, $password ); if( ! $cnx ) echo "Impossible de se connecter"; else { $categorie = $_POST['categorie']; $requete= "SELECT pdt_image, pdt_ref, pdt_designation, pdt_prix FROM produit, categorie WHERE categorie.cat_libelle='".$categorie."' AND produit.pdt_categorie = categorie.cat_code;"; $result=odbc_exec( $cnx , $requete ); while (odbc_fetch_into( $result , $ligne ) ){ echo '<TR><TD><img src="../images/'.$ligne[0].'.jpg"></TD><TD>'.$ligne[1].'</TD><TD>'.$ligne[2].'</TD><TD>'.$ligne[3].'</TD></TR>'; } } ?> </body> </html>
Lorsque je saisi :echo $requete;
il m'affiche :SELECT pdt_image, pdt_ref, pdt_designation, pdt_prix FROM produit, categorie WHERE categorie.cat_libelle='".$categorie."' AND produit.pdt_categorie = categorie.cat_code;
Et quand j'exécute la requète sous access il me trouve aucun résultat probablement car il ne comprend pas à quoi correspond : ".$categorie."
Merci de ton aide...
-
-
Xaaavvvvviiieeeerrrrr...... s'il te plait......
-
up up up
-
ça ne change rien mais est-ce que la requète comprend d'où sort '$categorie' ?? dans la première page php.. ???
est-ce que ma liaison est bien faite ???
Merci -
Contributeurmais est-ce que la requète comprend d'où sort '$categorie' ??
Pour le savoir, écris juste en dessous de $categorie = $_POST['categorie']; :
echo $categorie;
-
-
Contributeur@NezEnMoinsJuste avant ton while, tu écris echo '<table>'; et à la fin de ton while (après le } ) tu écris echo '</table>';
-
-
ça ne marche toujours pas... :'(
Est-ce que mon tableau est rempli correctement ??
Parce que mon écran est blanc et ne me renvoie aucune erreur...-
-
@ErdnaxBein en fait le problème venait du fait que ma requète n'était pas reconnue par le code php.. en modifiant ma requete, miracle, ça marche.. Voilou A+
-