8791 sujets

Développement web côté serveur, CMS

Pages :
Bonjour à toutes et à tous,

Je suis en train de créer mon premier site faisant intervenir du php. J'ai déjà créer mes tables sql et j'ai un peu compris la fonction echo, mais après ça je suis un peu perdu.

Voici un exemple d'une de mes pages.
liens vers mon site qui n'est pas encore en php

chez moi j'ai commencé à rédiger cette page en php qui fonctionne dont voici le code
<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd = "";

$con=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

$res = mysql_query("SELECT * FROM `liste-legumes`") or die(mysql_error());

// Recuperation des resultats
echo "		<section class='ff-container'><ul class='ff-items'>";
while($row = mysql_fetch_array($res)){
	echo "<li><a href=''><span>".$row[2]."</span> <img alt=".$row[2]." src='".$row[0]."' /></a></li>";
}
echo "</ul></section>";
// Deconnexion de la base de donnees
mysql_close();

?>



Ce que je souhaiterai faire quand je clique sur une des images (ex un des légumes) :
- j'accède à une nouvelle page, intitulé du nom du légume sur lequel j'ai cliqué
- la page qui s'ouvre appel les données contenu dans ma base de donnée


upload/40410-Sans-titre.jpg

j'espère que vous aurez le temps et la possibilité de m'aider
Il faut que tu ajoutes dans la structure de ta table une colonne "id_legumes", qui aura pour valeur une valeur unique. Ce sera ta clé primaire (PRIMARY KEY). Comme caractéristique de cette clé, le mieux est de la mettre en "AUTO INCREMENT", cest à dire que la valeur sera un chiffre généré automatiquement à chaque nouvelle entrée d'un légume dans ta table.

Cette partie faite, il faut que sur ta page où tu liste les produits que tu récupères "id_legume" afin de le faire apparaitre dans le lien cliquable de ton image.

Exemple : http://tonsite.com/produit?id_produit=3

Le 3 correspond à l'ID de ton produit dans la table. Ton code étant une boucle, chacun des produits aura son propre ID dans son attribut HREF.

Maintenant il te reste à faire ta page produit en récupérant au tout debut en php l'ID qu'il y a en paramètre dans l'URL et cela grâce à la fonction $_GET.

$id = $_GET['id_produit'];

Il n'y a plus qu'à générer la page en récupérant les données dans ta table avec une requête ciblé selon l'ID que tu as récupéré.

Bon courage.
Modifié par Apoooo (15 Sep 2012 - 10:24)
Apoooo a écrit :
Bon courage.


Merci je test et je reporte ce que j'obtiens comme résultat.

Merci de votre réponse si rapide Smiley smile
Apoooo a écrit :
Il faut que tu ajoutes dans la structure de ta table une colonne &quot;id_legumes&quot;, qui aura pour valeur une valeur unique. Ce sera ta clé primaire (PRIMARY KEY). Comme caractéristique de cette clé, le mieux est de la mettre en &quot;AUTO INCREMENT&quot;, cest à dire que la valeur sera un chiffre généré automatiquement à chaque nouvelle entrée d'un légume dans ta table.


Jusque là j'ai tout compris et appliqué !
J'ai rajouté en début de ma table une ligne nommé id_legumes en primary et auto increment

mais c'est ici que pour moi ça se complique

Apoooo a écrit :
Cette partie faite, il faut que sur ta page où tu liste les produits que tu récupères &quot;id_legumes&quot; afin de le faire apparaitre dans le lien cliquable de ton image.

Exemple : http://tonsite.com/produit?id_produit=3

Le 3 correspond à l'ID de ton produit dans la table. Ton code étant une boucle, chacun des produits aura son propre ID dans son attribut HREF.

Maintenant il te reste à faire ta page produit en récupérant au tout debut en php l'ID qu'il y a en paramètre dans l'URL et cela grâce à la fonction $_GET.

$id = $_GET['id_produit'];

Il n'y a plus qu'à générer la page en récupérant les données dans ta table avec une requête ciblé selon l'ID que tu as récupéré.


Voici ce que j'ai fait

<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd = "";

$con=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

$res = mysql_query("SELECT * FROM `liste-legumes`") or die(mysql_error());

// Recuperation des resultats
echo "		<section class='ff-container'><ul class='ff-items'>";
while($row = mysql_fetch_array($res)){
	echo "<li><a href='[#red][b]http://www.bien-manger-selon-les-saisons.com/produits-de-saison/legumes-de-saison.php?id_legumes=".$id."'[/b][/#]><span>".$row[2]."</span> <img alt=".$row[2]." src='".$row[0]."' /></a></li>";
}
echo "</ul></section>";
// Deconnexion de la base de donnees
mysql_close();

?>


Je ne sais pas bien où et comment je dois écrire la fonction
$id = $_GET['id_legumes'];

echo "<li><a href='http://www.bien-manger-selon-les-saisons.com/produits-de-saison/legumes-de-saison.php?id_legumes=".$id."'><span>".$row[2]."</span> <img alt=".$row[2]." src='".$row[0]."' /></a></li>";


Déjà, n'accède pas à tes données via un chiffre comme indice. Ta fonction mysql_fetch_array retourne un tableau associatif où chaque colonne a pour nom le nom de la colonne SQL associée.
Donc utilise directement le nom de tes colonnes :

echo "<li><a href='http://www.bien-manger-selon-les-saisons.com/produits-de-saison/legumes-de-saison.php?id_legumes=".$row['id_legumes']."'><span>".$row['name']."</span> <img alt=".$row['name']." src='".$row['image']."' /></a></li>";


Autre inconvénient de ton utilisation de chiffre, c'est si tu mets à jour ta base en ajoutant une nouvelle colonne au début de ta table par exemple, ton indice "2" ne sera plus la même colonne et tout ton script ne sera plus bon.

Avec ce bout de code au dessus, tu remarqueras que les liens de tes legumes qui sont listés ont un lien différent généré dynamiquement a chaque fois.

Le "$id = $_GET['id_legumes'];" est a utilisé sur ta nouvelle page que tu vas créé pour le descriptif de ton produit (ton legume ici)...

Doc de la fonction GET de PHP : http://php.net/manual/fr/reserved.variables.get.php

Donc imaginons tu crées une page "legumes-de-saison.php" dont le lien de ton produit pour y accéder est "legumes-de-saison.php?id_legumes=3". La variable $id va se voir affecter la valeur "3" grâce à la fonction $_GET.
Apoooo a écrit :

Donc utilise directement le nom de tes colonnes :

echo &quot;&lt;li&gt;&lt;a href='http://www.bien-manger-selon-les-saisons.com/produits-de-saison/legumes-de-saison.php?id_legumes=&quot;.$row['id_legumes'].&quot;'&gt;&lt;span&gt;&quot;.$row['name'].&quot;&lt;/span&gt; &lt;img alt=&quot;.$row['name'].&quot; src='&quot;.$row['image'].&quot;' /&gt;&lt;/a&gt;&lt;/li&gt;&quot;;


Autre inconvénient de ton utilisation de chiffre, c'est si tu mets à jour ta base en ajoutant une nouvelle colonne au début de ta table par exemple, ton indice &quot;2&quot; ne sera plus la même colonne et tout ton script ne sera plus bon.

Avec ce bout de code au dessus, tu remarqueras que les liens de tes legumes qui sont listés ont un lien différent généré dynamiquement a chaque fois.


Super, effectivement autant utilisé le nom plutôt qu'un chiffre !!!

Je vais lire attentivement le doc de la fonction get de php !!!

merci de tes conseils ! Smiley smile
voici ce que j'ai créé, mais mon serveur local ne me retourne absolument rien !


<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd  = "";

// Connexion au serveur
$con=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

// Creation et envoi de la requete
$res = mysql_query("SELECT * FROM `liste-legumes`") or die(mysql_error());

// Recuperation des resultats
echo		<h2 class="ribbon"><span>Tout sur ;
	if (isset($_GET['particule']) AND isset($_GET['noms'])))
	{
	echo .$_GET['particule']. ' ' .$_GET['noms'].</span></h2>;
	}
	else // Il manque des paramètres, on avertit le visiteur
	{
		echo 'Ce légume n\'éxiste pas!';
	}
echo		<div class="featured">
			<h3 class="title">Informations sur le produit</h3>
			<p>Nom anglais: $_GET['name']</p>
			<p>Saison (s): $_GET['saison']</p>
			<p>A consommer de préférence entre le mois de $_GET['mois_debut'] à $_GET['mois_fin']</p>
			<p>Provenances: $_GET['provenance']</p>
			<p>Variétées: $_GET['varietees']</p>
			<p>Couleur : $_GET['couleurs']</p>
			<a href="../dietetique-poids-sante.html" accesskey="5" class="more"><i>découvrez toutes les informations liées aux couleurs.</i></a>
			</div>;
			
echo		<div class="featured">
			<h3 class="title">Valeurs nutritionnelles $_GET['noms']</h3>
			<aside class="nutrition">
			<ul>
				<li>Protéines : $_GET['proteines']</li>
				<li>Lipides : $_GET['lipides']</li>
				<li>Glucides : $_GET['glucides']</li>
				<li>Calories : $_GET['calories']</li>
				<li>Fibres : $_GET['fibres']</li>
			</ul>
			<p><i>Valeurs pour 100g</i><br>Source ANSES Ciqual 2012 (Fr), Fichier Canadien 2010, Nubel (Be)</p>
			</aside>
			</div>;
					
echo		<h2 class="ribbon"><span>Choisir et conserver</span></h2>
			<div class="featured">
			<h3 class="title">Nos conseils pour vos achats</h3>
			<p>$_GET['conseils_achat']</p>
			</div>

	                <div class="featured">
			<h3 class="title">Comment conserver $_GET['particule']. ' ' .$_GET['noms']</h3>
			<p>$_GET['conservation']</p>
			</div>;
		
echo		<h2 class="ribbon"><span>Idées recettes : $_GET['particule']. ' ' .$_GET['noms'] dans tous ses états</span></h2>
			<div>
			<p>$_GET['recettes_preconisees']</p>
			<p>en cours de rédaction</p>
			</div>;

// Deconnexion de la base de donnees
mysql_close();

?>		

Modifié par dafid5 (17 Sep 2012 - 08:22)
Non non, tu n'as pas compris l'utilité de la fonction GET. Cette fonction te sert à récupérer des valeurs passées en paramètres dans l'URL.

En récupérant l'ID du légume, dans mon exemple l'ID 3, tu peux t'en servir pour faire une requete SQL directement pour chercher le legume qui a id_legume='3'.

SELECT * FROM liste-legumes WHERE id_legumes='$id'


Cette requete te retournera que la ligne où id_legume=3. Ensuite, il faut juste faire comme tu as fais sur ton autre page, passer par une boucle et utiliser les données etc...

Donc tu devra remplacer tous tes $_GET que tu as mis dans ton code par ton tableau de ta boucle "while".

Petite correction pour que tu comprennes où mettre ton $_GET :


$id=$_GET['id_legumes']; // Tu récupères le '3' de [b]legumes-de-saison.php?id_legumes=3[/b]

// Creation et envoi de la requete
$res = mysql_query("SELECT * FROM liste-legumes WHERE id_legumes='".$id."'") or die(mysql_error());

while($rows = mysql_fetch_array($res)){
         // Tu génères ta page avec les données.
}


Modifié par Apoooo (17 Sep 2012 - 13:25)
Merci Apooo d'être aussi patient avec mon cas !

Bon j'essaye de comprendre, ses requêtes sont à mettre dans une nouvelle page exemple nommée "fiche-legume.php"

ensuite je rédige ce que je souhaites voir apparaître comme information dans les pages générées.


<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd  = "";

// Connexion au serveur
$con=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

$id=$_GET['id_legumes']; // Tu récupères le '3' de legumes-de-saison.php?id_legumes=3

// Creation et envoi de la requete
$res = mysql_query("SELECT * FROM liste-legumes WHERE id_legumes='".$id."' ") or die(mysql_error());

while($rows = mysql_fetch_array($res)){
         // Tu génères ta page avec les données.
}

// Recuperation des resultats
echo		"<h2 class='ribbon'><span>Tout sur ";
	if (isset(".$particule.") AND isset(".$noms."))
	{
	echo ".$particule." ".$noms."</span></h2>;
	}
	else // Il manque des paramètres, on avertit le visiteur
	{
		echo "Ce légume n\'éxiste pas!";
	}
echo		"<div class='featured'>
			<h3 class='title'>Informations sur le produit</h3>
			<p>Nom anglais: ".$name."</p>
			<p>Saison (s): ".$saison."</p>
			<p>A consommer de préférence entre le mois de ".$mois_debut." à ".$mois_fin."</p>
			<p>Provenances: ".$provenance."</p>
			<p>Variétées: ".$varietees."</p>
			<p>Couleur : ".$couleurs."</p>
			<a href='../dietetique-poids-sante.html' accesskey='5' class='more'><i>découvrez toutes les informations liées aux couleurs.</i></a>
			</div>";
			
echo		"<div class='featured'>
			<h3 class='title'>Valeurs nutritionnelles ".$noms."</h3>
			<aside class='nutrition'>
			<ul>
				<li>Protéines : ".$proteines."</li>
				<li>Lipides : ".$lipides."</li>
				<li>Glucides : ".$glucides."</li>
				<li>Calories : ".$calories."</li>
				<li>Fibres : ".$fibres."</li>
			</ul>
			<p><i>Valeurs pour 100g</i><br>Source ANSES Ciqual 2012 (Fr), Fichier Canadien 2010, Nubel (Be)</p>
			</aside>
			</div>";
					
echo		"<h2 class='ribbon'><span>Choisir et conserver</span></h2>
			<div class='featured'>
			<h3 class='title'>Nos conseils pour vos achats</h3>
			<p>".$conseils_achat."</p>
			</div>

	                <div class='featured'>
			<h3 class='title'>Comment conserver ".$particule.". ' ' .".$noms."</h3>
			<p>".$conservation."</p>
			</div>";
		
echo		"<h2 class='ribbon'><span>Idées recettes : ".$particule.". ' ' .".$noms." dans tous ses états</span></h2>
			<div>
			<p>".$recettes_preconisees."</p>
			<p>en cours de rédaction</p>
			</div>";

// Deconnexion de la base de donnees
mysql_close();

?>


mais ça ne fonctionne toujours pas, celà m'affiche une erreur
a écrit :
Parse error: syntax error, unexpected '"' in C:\wamp\www\BIEN-MANGER-SELON-LES-SAISONS.com\produits-de-saison\fiche-legume.php on line 118


La ligne 118 correspond
a écrit :
if (isset(".$particule.") AND isset(".$noms."))

Modifié par dafid5 (17 Sep 2012 - 15:13)
Dans une condition, on n'utilise pas AND mais &&. De plus, la présence de la concaténation n'est pas nécessaire ici. Tu peux écrire :

if (isset($particule) && isset($noms))

Modifié par MattBPA (17 Sep 2012 - 15:30)
dafid5 a écrit :


Bon j'essaye de comprendre, ses requêtes sont à mettre dans une nouvelle page exemple nommée "fiche-legume.php"


Jusqu'ici tout va bien Smiley lol

Quand je te met en commentaire dans la boucle : // Tu génères ta page avec les données.

Tu es censé y mettre le code HTML de ta page. Soit tout le code que tu as mis en dessous. Et les variables, tu les changes par les noms des valeurs retournées par ta requête (tu l'as très bien fait dans ta page principale...).

Exemple :

while($rows = mysql_fetch_array($res)){
         // Recuperation des resultats
echo		"<h2 class='ribbon'><span>Tout sur ";
	if (isset($particule) AND isset($noms))
	{
	   echo $particule." ".$noms."</span></h2>";
	}
	else // Il manque des paramètres, on avertit le visiteur
	{
		echo "Ce légume n\'éxiste pas!";
	}
echo		"<div class='featured'>
			<h3 class='title'>Informations sur le produit</h3>
			<p>Nom anglais: ".$rows['name']."</p>
			<p>Saison (s): ".$rows['$saison']."</p>
			<p>A consommer de préférence entre le mois de ".$rows['mois_debut']." à ".$rows['mois_fin']."</p>
			<p>Provenances: ".$rows['provenance']."</p>
			<p>Variétées: ".$rows['varietees']."</p>
			<p>Couleur : ".$rows['couleurs']."</p>
			<a href='../dietetique-poids-sante.html' accesskey='5' class='more'><i>découvrez toutes les informations liées aux couleurs.</i></a>
			</div>";

... LA SUITE DE TON CODE ...
}


Prend ce code a titre d'exemple, je fais peut être des erreurs de syntaxe vu que je te le fais via la boite du forum donc sans colorisation...

Vu que tu débutes, je te donne également un conseil, habitue toi dès maintenant à essayer de séparer HTML et PHP dans ton code. Car tu fais un echo de toute ta page et il y a une enorme chance d'erreur d'apostrophe, d'oubli de ";" etc...

Je te montre un exemple avec le même code qu'au dessus :

<?php

while($rows = mysql_fetch_array($res)){
?>
    <div class='featured'>
			<h3 class='title'>Informations sur le produit</h3>
			<p>Nom anglais: <?php echo $rows['name'] ?></p>
			<p>Saison (s): <?php echo $rows['$saison'] ?></p>
			<p>A consommer de préférence entre le mois de <?php echo $rows['mois_debut'] ?> à <?php echo $rows['mois_fin'] ?></p>
			<p>Provenances: <?php echo $rows['provenance'] ?></p>
			<p>Variétées: <?php echo $rows['varietees'] ?></p>
			<p>Couleur : <?php echo $rows['couleurs'] ?></p>
			<a href='../dietetique-poids-sante.html' accesskey='5' class='more'><i>découvrez toutes les informations liées aux couleurs.</i></a>
    </div>

... LA SUITE DE TON CODE ...
<?php
}
?>


Qu'utilises tu comme logiciel pour développer ? Pour debuter, je te conseil NotePad++. C'est la base on va dire mais surtout il te fournit un outil indispensable qui est la colorisation syntaxique. Un moyen de voir si tu fais des erreurs de syntaxe (oubli de ";", met en couleur les différentes balises HTML, variables PHP etc...)

Je te parle de ça car je viens de passer ton code dans mon editeur (PhpDesigner pour ma part) et tu as énormément d'erreur de syntaxe qui pourrait être évitées.
Apoooo a écrit :

Qu'utilises tu comme logiciel pour développer ? Pour debuter, je te conseil NotePad++. C'est la base on va dire mais surtout il te fournit un outil indispensable qui est la colorisation syntaxique. Un moyen de voir si tu fais des erreurs de syntaxe (oubli de &quot;;&quot;, met en couleur les différentes balises HTML, variables PHP etc...)

Je te parle de ça car je viens de passer ton code dans mon editeur (PhpDesigner pour ma part) et tu as énormément d'erreur de syntaxe qui pourrait être évitées.


J'utilise notepad depuis peu, avant j'utilisais le bloc-notes Smiley langue !!

Je comprend je ne pensais pas à faire figurer la colonne row pour cibler mon appel de données de plus effectivement la synthaxe, encore et toujours !! je me replonge dedans!!

merci
Apoooo a écrit :


Jusqu'ici tout va bien Smiley lol

Quand je te met en commentaire dans la boucle : // Tu génères ta page avec les données.

Tu es censé y mettre le code HTML de ta page. Soit tout le code que tu as mis en dessous. Et les variables, tu les changes par les noms des valeurs retournées par ta requête (tu l'as très bien fait dans ta page principale...).

Exemple :

while($rows = mysql_fetch_array($res)){
         // Recuperation des resultats
echo		&quot;&lt;h2 class='ribbon'&gt;&lt;span&gt;Tout sur &quot;;
	if (isset($particule) AND isset($noms))
	{
	   echo $particule.&quot; &quot;.$noms.&quot;&lt;/span&gt;&lt;/h2&gt;&quot;;
	}
	else // Il manque des paramètres, on avertit le visiteur
	{
		echo &quot;Ce légume n\'éxiste pas!&quot;;
	}
echo		&quot;&lt;div class='featured'&gt;
			&lt;h3 class='title'&gt;Informations sur le produit&lt;/h3&gt;
			&lt;p&gt;Nom anglais: &quot;.$rows['name'].&quot;&lt;/p&gt;
			&lt;p&gt;Saison (s): &quot;.$rows['$saison'].&quot;&lt;/p&gt;
			&lt;p&gt;A consommer de préférence entre le mois de &quot;.$rows['mois_debut'].&quot; à &quot;.$rows['mois_fin'].&quot;&lt;/p&gt;
			&lt;p&gt;Provenances: &quot;.$rows['provenance'].&quot;&lt;/p&gt;
			&lt;p&gt;Variétées: &quot;.$rows['varietees'].&quot;&lt;/p&gt;
			&lt;p&gt;Couleur : &quot;.$rows['couleurs'].&quot;&lt;/p&gt;
			&lt;a href='../dietetique-poids-sante.html' accesskey='5' class='more'&gt;&lt;i&gt;découvrez toutes les informations liées aux couleurs.&lt;/i&gt;&lt;/a&gt;
			&lt;/div&gt;&quot;;

... LA SUITE DE TON CODE ...
}


Prend ce code a titre d'exemple, je fais peut être des erreurs de syntaxe vu que je te le fais via la boite du forum donc sans colorisation...

Vu que tu débutes, je te donne également un conseil, habitue toi dès maintenant à essayer de séparer HTML et PHP dans ton code. Car tu fais un echo de toute ta page et il y a une enorme chance d'erreur d'apostrophe, d'oubli de &quot;;&quot; etc...

Je te montre un exemple avec le même code qu'au dessus :

&lt;?php

while($rows = mysql_fetch_array($res)){
?&gt;
    &lt;div class='featured'&gt;
			&lt;h3 class='title'&gt;Informations sur le produit&lt;/h3&gt;
			&lt;p&gt;Nom anglais: &lt;?php echo $rows['name'] ?&gt;&lt;/p&gt;
			&lt;p&gt;Saison (s): &lt;?php echo $rows['$saison'] ?&gt;&lt;/p&gt;
			&lt;p&gt;A consommer de préférence entre le mois de &lt;?php echo $rows['mois_debut'] ?&gt; à &lt;?php echo $rows['mois_fin'] ?&gt;&lt;/p&gt;
			&lt;p&gt;Provenances: &lt;?php echo $rows['provenance'] ?&gt;&lt;/p&gt;
			&lt;p&gt;Variétées: &lt;?php echo $rows['varietees'] ?&gt;&lt;/p&gt;
			&lt;p&gt;Couleur : &lt;?php echo $rows['couleurs'] ?&gt;&lt;/p&gt;
			&lt;a href='../dietetique-poids-sante.html' accesskey='5' class='more'&gt;&lt;i&gt;découvrez toutes les informations liées aux couleurs.&lt;/i&gt;&lt;/a&gt;
    &lt;/div&gt;

... LA SUITE DE TON CODE ...
&lt;?php
}
?&gt;



Effectivement le faites d'ouvrir et fermer la requete echo à chaque fois permet de limiter les erreurs :

<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd  = "";

// Connexion au serveur
$con=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

$id=$_GET['id_legumes']; // Tu récupères le '3' de legumes-de-saison.php?id_legumes=3

// Creation et envoi de la requete
$res = mysql_query("SELECT * FROM liste-legumes WHERE id_legumes='".$id."' ") or die(mysql_error());

while($rows = mysql_fetch_array($res)){
         // Tu génères ta page avec les données.
		 
// Deconnexion de la base de donnees
mysql_close();

?>	

			<h2 class="ribbon"><span>Tout sur
<?php	if (isset($rows['noms']))
	{
	echo $rows['noms'];</span></h2>
	}
	else // Il manque des paramètres, on avertit le visiteur
	{
		echo "Ce légume n\'éxiste pas!";
	}
?>
			<div class="featured">
			<h3 class="title">Informations sur le produit</h3>
			<p>Nom anglais: <?php echo $rows['name'] ?></p>
			<p>Saison (s): <?php echo $rows['saison'] ?></p>
			<p>A consommer de préférence entre le mois de <?php echo $rows['mois_debut'] ?> à <?php echo $rows['mois_fin'] ?></p>
			<p>Provenances: <?php echo $rows['provenance'] ?></p>
			<p>Variétées: <?php echo $rows['varietees'] ?></p>
			<p>Couleur : <?php echo $rows['couleurs'] ?></p>
			<a href="../dietetique-poids-sante.html" accesskey="5" class="more"><i>découvrez toutes les informations liées aux couleurs.</i></a>
			</div>
			
			<div class="featured">
			<h3 class="title">Valeurs nutritionnelles <?php echo $rows['noms'] ?></h3>
			<aside class='nutrition'>
			<ul>
				<li>Protéines : <?php echo $rows['proteines'] ?></li>
				<li>Lipides : <?php echo $rows['lipides'] ?></li>
				<li>Glucides : <?php echo $rows['glucides'] ?></li>
				<li>Calories : <?php echo $rows['calories'] ?></li>
				<li>Fibres : <?php echo $rows['fibres'] ?></li>
			</ul>
			<p><i>Valeurs pour 100g</i><br>Source ANSES Ciqual 2012 (Fr), Fichier Canadien 2010, Nubel (Be)</p>
			</aside>
			</div>
					
			<h2 class="ribbon"><span>Choisir et conserver</span></h2>
			<div class="featured">
			<h3 class="title">Nos conseils pour vos achats</h3>
			<p><?php echo $rows['conseils_achat'] ?></p>
			</div>

	        <div class="featured">
			<h3 class="title">Comment conserver <?php echo $rows['particule'] ?><?php echo $rows['noms'] ?></h3>
			<p><?php echo $rows['conservation'] ?></p>
			</div>
		
			<h2 class="ribbon"><span>Idées recettes : <?php echo $rows['particule'] ?><?php echo $rows['noms'] ?> dans tous ses états</span></h2>
			<div>
			<p><?php echo $rows['recettes_preconisees'] ?></p>
			<p>en cours de rédaction</p>
			</div>

		</div>


Cependant, je rencontre toujours un message d'erreur (probablement de syntaxe) sur le code suivant:
<?php	if (isset($rows['noms']))
	{
	echo $rows['noms'];</span></h2>
	}
	else // Il manque des paramètres, on avertit le visiteur
	{
		echo "Ce légume n\'éxiste pas!";
	}
?>
echo $rows['noms'];</span></h2>


tu mets le point virgule, ce qui signifie que tu termines ton instruction echo avant ton HTML. Du coup le navigateur se retrouve avec deux balises qu'il ne sait pas interpréter puisque tu es toujours dans ta portion de code php.

Il faut concaténer la variable et les balises HTML.

echo $rows['noms']."</span></h2>";
MattBPA a écrit :

echo $rows['noms'].&quot;&lt;/span&gt;&lt;/h2&gt;&quot;;


Effectivement cette erreur n’apparaît plus, mais un autre plus surprenante arrive :
a écrit :
Parse error: syntax error, unexpected $end in C:\wamp\www\BIEN-MANGER-SELON-LES-SAISONS.com\produits-de-saison\fiche-legume.php on line 181

ce qui correspond à la fin de ma page : </html>

serais-ce à cause de mon mélange de html et de php ?


<!DOCTYPE html>
<html lang="fr">
    <head>
		<meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
***///je vous épargne ses lignes ///***
    </head>
	
<body id="home_page">
	<div id="header">
		<h1><a href="http://www.bien-manger-selon-les-saisons.com/" rel="home" id="logo"><img src="../images/logo_bien-manger-de-saison.png" alt="Bien manger selon les saisons, c'est opter pour la qualité" /></a></h1>
		<ul id="nav">
			<li class="menu_home on"><a href="../index.html" accesskey="1">Home</a></li>
			<li><a href="legumes-de-saison.html" accesskey="2">Légumes</a></li>
			<li><a href="fruits-de-saison.html" accesskey="3">Fruits</a></li>
			<li><a href="poissons-de-saison.html" accesskey="4">Poissons</a></li>
			<li><a href="../dietetique-poids-sante.html" accesskey="5">Diététique</a></li>
		</ul>
		</div>
	
<div id="main">
		
<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd  = "";

// Connexion au serveur
$con=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

$id=$_GET['id_legumes']; // Tu récupères le '3' de legumes-de-saison.php?id_legumes=3

// Creation et envoi de la requete
$res = mysql_query("SELECT * FROM liste-legumes WHERE id_legumes='".$id."' ") or die(mysql_error());

while($rows = mysql_fetch_array($res)){
         // Tu génères ta page avec les données.
		 
// Deconnexion de la base de donnees
mysql_close();

?>	

			<h2 class="ribbon"><span>Tout sur
<?php	if (isset($rows['noms']))
	{
	echo $rows['noms']."</span></h2>";
	}
	else // Il manque des paramètres, on avertit le visiteur
	{
		echo "Ce légume n\'éxiste pas!";
	}
?>
			<div class="featured">
			<h3 class="title">Informations sur le produit</h3>
			<p>Nom anglais: <?php echo $rows['name'] ?></p>
			<p>Saison (s): <?php echo $rows['saison'] ?></p>
			<p>A consommer de préférence entre le mois de <?php echo $rows['mois_debut'] ?> à <?php echo $rows['mois_fin'] ?></p>
			<p>Provenances: <?php echo $rows['provenance'] ?></p>
			<p>Variétées: <?php echo $rows['varietees'] ?></p>
			<p>Couleur : <?php echo $rows['couleurs'] ?></p>
			<a href="../dietetique-poids-sante.html" accesskey="5" class="more"><i>découvrez toutes les informations liées aux couleurs.</i></a>
			</div>
			
			<div class="featured">
			<h3 class="title">Valeurs nutritionnelles <?php echo $rows['noms'] ?></h3>
			<aside class="nutrition">
			<ul>
				<li>Protéines : <?php echo $rows['proteines'] ?></li>
				<li>Lipides : <?php echo $rows['lipides'] ?></li>
				<li>Glucides : <?php echo $rows['glucides'] ?></li>
				<li>Calories : <?php echo $rows['calories'] ?></li>
				<li>Fibres : <?php echo $rows['fibres'] ?></li>
			</ul>
			<p><i>Valeurs pour 100g</i><br>Source ANSES Ciqual 2012 (Fr), Fichier Canadien 2010, Nubel (Be)</p>
			</aside>
			</div>
					
			<h2 class="ribbon"><span>Choisir et conserver</span></h2>
			<div class="featured">
			<h3 class="title">Nos conseils pour vos achats</h3>
			<p><?php echo $rows['conseils_achat'] ?></p>
			</div>

	        <div class="featured">
			<h3 class="title">Comment conserver <?php echo $rows['particule'] ?><?php echo $rows['noms'] ?></h3>
			<p><?php echo $rows['conservation'] ?></p>
			</div>
		
			<h2 class="ribbon"><span>Idées recettes : <?php echo $rows['particule'] ?><?php echo $rows['noms'] ?> dans tous ses états</span></h2>
			<div>
			<p><?php echo $rows['recettes_preconisees'] ?></p>
			<p>en cours de rédaction</p>
			</div>

		</div>
	
</div>
	
    </body>
</html>

Modifié par dafid5 (18 Sep 2012 - 11:51)
Quand il t'annonce une erreur à la dernière ligne de ton code, c'est que tu as ouvert une accolade sans la refermer.

Ici, tu ouvres une accolade avec
while($rows = mysql_fetch_array($res)){

et tu ne la refermes pas.

Je pense qu'il faut la refermer ici :

		</div>
	<?php } ?>
</div>
    </body>
</html>
MattBPA a écrit :
Quand il t'annonce une erreur à la dernière ligne de ton code, c'est que tu as ouvert une accolade sans la refermer.

		&lt;/div&gt;
	&lt;?php } ?&gt;
&lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;


tu avais raison !!!

Maintenant ça génere bien une page quand je clique sur un lien, reste à trouver l'erreur de syntaxe suivante

 Notice: Undefined index: id_legumes in C:\wamp\www\BIEN-MANGER-SELON-LES-SAISONS.com\produits-de-saison\fiche-legume.php on line 107
Call Stack
#	Time	Memory	Function	Location
1	0.0009	697712	{main}( )	..\fiche-legume.php:0
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 '-legumes WHERE id_legumes=''' at line 1


je ne comprend pas "id_legumes" fait bien partit de ma base sql, il est en auto_increment et en primary

// Connexion au serveur
$con=mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

$id=$_GET['id_legumes'];

// Creation et envoi de la requete
$res = mysql_query("SELECT * FROM liste-legumes WHERE id_legumes='".$id."' ") or die(mysql_error());

while($rows = mysql_fetch_array($res)){
         // contenu ....
		 
// Deconnexion de la base de donnees
mysql_close();

Modifié par dafid5 (18 Sep 2012 - 23:12)
Pas sur de moi, mais je pense qu'il n'aime pas le trait d'union dans le nom de ta table : liste-legumes. Ca va être un peu plus contraignant si tu as déjà utilisé ce nom de table plusieurs fois, mais essaie de duplique la table liste-legumes vers une nouvelle table liste_legumes et modifie ton code en conséquence pour voir ce que ça donne.
MattBPA a écrit :
Pas sur de moi, mais je pense qu'il n'aime pas le trait d'union dans le nom de ta table : liste-legumes. Essaie de rajouter le signe ` dans ta requête.

// Creation et envoi de la requete
$res = mysql_query("SELECT * FROM `liste-legumes` WHERE id_legumes='".$id."' ") or die(mysql_error());


Si ça ne marche pas, ça va être un peu plus contraignant si tu as déjà utilisé ce nom de table plusieurs fois, mais essaie de duplique la table liste-legumes vers une nouvelle table liste_legumes et modifie ton code en conséquence pour voir ce que ça donne.
MattBPA a écrit :


Je pense que mettre le signe ` dans la requête à fonctionné (bizarrement le - n'est pas apprécié en php on dirait), mais cela a encore montré une autre erreur

Notice: Undefined index: id_legumes in C:\wamp\www\BIEN-MANGER-SELON-LES-SAISONS.com\produits-de-saison\fiche-legume.php on line 107

$id=$_GET['id_legumes'];
Pages :