8791 sujets

Développement web côté serveur, CMS

bonjour j'ai rédigé un formulaire avec 4 checkbox qui peuvent être ou non coché en même temps, malheureusement, si je ne coche pas toutes les checkbox et bien j'ai le message d'erreur suivant:

Notice: Undefined index: printemps in C:\wamp\www\ESSAI.com\produits-de-saison\cible.php on line 20
Call Stack
# Time Memory Function Location
1 0.0017 690496 {main}( ) ..\cible.php:0

( ! ) Notice: Undefined index: automne in C:\wamp\www\ESSAI.com\produits-de-saison\cible.php on line 22
Call Stack
# Time Memory Function Location
1 0.0017 690496 {main}( ) ..\cible.php:0

( ! ) Notice: Undefined index: hiver in C:\wamp\www\ESSAI.com\produits-de-saison\cible.php on line 23
Call Stack
# Time Memory Function Location
1 0.0017 690496 {main}( ) ..\cible.php:0
INSERT INTO liste_legumes (image,noms,couleurs,conservation,conseils_achat,provenance,proteines,glucides,fibres,calories,printemps,ete,automne,hiver,mois_debut,mois_fin) VALUES ('../images/legumes/thumbs/113.jpg', 'Ail blanc', 'blanc', 'essai', 'essai ', 'essai ', 6,7, 33, 3,1, 159, '', 'ete', '', '', 6, 7)

--------------------------------------------------

voici mon formulaire

<form action="cible.php" method="post" >
<p>nom:<input name="noms" type="text" style="width: 309px; height: 20px;" /></p>
<p>image:<input name="image" type="text" value="../images/legumes/thumbs/.jpg" style="width: 220px; height: 20px;" /></p>
<p>couleur:<select name="couleurs" tabindex="5">
<optgroup>
<option value="blanc">blanc</option>
<option value="rouge">rouge</option>
<option value="orange">orange</option>
<option value="jaune">jaune</option>
<option value="vert">vert</option>
<option value="violet">violet</option>
</optgroup>
</select></p>
<p>mode de conservation:<textarea name="conservation" type="text" cols="60" rows="5" /> </textarea> </p>
<p>conseils d'achat:<textarea name="conseils_achat" type="text" cols="60" rows="5" /> </textarea> </p>
<p>provenance:<textarea name="provenance" type="text" cols="60" rows="3" /> </textarea> </p>
<p>protéines (pour 100g):<input name="proteines" type="text" maxlength="3"/></p>
<p>glucides (pour 100g):<input name="glucides" type="text" maxlength="4"/></p>
<p>fibres (pour 100g):<input name="fibres" type="text" maxlength="3"/></p>
<p>calories:<input name="calories" type="text" maxlength="4"/></p>
<p>printemps:<input name="printemps" type="checkbox" value="printemps"/> /
été:<input name="ete" type="checkbox" value="ete"/> /
automne:<input name="automne" type="checkbox" value="automne"/> /
hiver:<input name="hiver" type="checkbox" value="hiver"/></p>
<p>mois début:<select name="mois_debut" tabindex="5">
<optgroup>
<option value="1">janvier</option>
<option value="2">février</option>
<option value="3">mars</option>
<option value="4">avril</option>
<option value="5">mai</option>
<option value="6">juin</option>
<option value="7">juillet</option>
<option value="8">août</option>
<option value="9">septembre</option>
<option value="10">octobre</option>
<option value="11">novembre</option>
<option value="12">décembre</option>
</optgroup>
</select></p>
<p>mois fin:<select name="mois_fin" tabindex="5">
<optgroup>
<option value="1">janvier</option>
<option value="2">février</option>
<option value="3">mars</option>
<option value="4">avril</option>
<option value="5">mai</option>
<option value="6">juin</option>
<option value="7">juillet</option>
<option value="8">août</option>
<option value="9">septembre</option>
<option value="10">octobre</option>
<option value="11">novembre</option>
<option value="12">décembre</option>
</optgroup>
</select></p>
<p><input name="Valider" value="Valider" type="submit" /></p>
</form>

---------------------------------------------------
et voici mon fichier cible.php

<?php

// Connexion au serveur mysql
$connection=mysql_connect("localhost", "root", "");
mysql_select_db("eat-to-season", $connection) or die("Impossible d'ouvrir la base de donn&#43443; ");

if($connection)
{
$sql = "INSERT INTO liste_legumes (image,noms,couleurs,conservation,conseils_achat,provenance,proteines,glucides,fibres,calories,printemps,ete,automne,hiver,mois_debut,mois_fin)
VALUES ('".$_POST['image']."',
'".$_POST['noms']."',
'".$_POST['couleurs']."',
'".$_POST['conservation']."',
'".$_POST['conseils_achat']."',
'".$_POST['provenance']."',
".$_POST['proteines'].",
".$_POST['glucides'].",
".$_POST['fibres'].",
".$_POST['calories'].",
'".$_POST['printemps']."',
'".$_POST['ete']."',
'".$_POST['automne']."',
'".$_POST['hiver']."',
".$_POST['mois_debut'].",
".$_POST['mois_fin'].")
";
echo $sql;

$requete=mysql_query($sql);
mysql_close($connection);
}

// ?>

pourriez-vous m'aidez pour que je puisse cocher une ou plusieurs checkbox s'en rencontrer ce problème

upload/40410-screen-sho.png
Le fait qu'il affiche le chemin sous cette forme :
C:\wamp\www\ESSAI.com\produits-de-saison\cible.php
me perturbe...
Pour ouvrir ton formulaire, tu ne fais pas un double clic sur ton fichier, tu fais bien un requête HTTP ?
Gothor a écrit :
Le fait qu'il affiche le chemin sous cette forme :
C:\wamp\www\ESSAI.com\produits-de-saison\cible.php
me perturbe...
Pour ouvrir ton formulaire, tu ne fais pas un double clic sur ton fichier, tu fais bien un requête HTTP ?


Bonjour Gothor,

j'utilise le logiciel wamp, puis j'ouvre mon site.
Pour arriver à ma page de formulaire, je la tape comme une url
C'est à dire ?
Dans ton navigateur, tu écris
C:\wamp\www\blablabla.html
ou bien
localhost/blablabla.html
C'est le deuxième modèle qu'il faut suivre.
Gothor a écrit :
C'est à dire ?
Dans ton navigateur, tu écris
C:\wamp\www\blablabla.html
ou bien
localhost/blablabla.html
C'est le deuxième modèle qu'il faut suivre.


La deuxième méthode !!

localhost/nom du site/page-avec-formulaire.html
Gothor a écrit :
Le fait qu'il affiche le chemin sous cette forme :
C:\wamp\www\ESSAI.com\produits-de-saison\cible.php
me perturbe...


Pourtant c'est parfaitement normal, PHP affiche toujours le chemin du fichier sur le disque quand il affiche une erreur.
Modifié par jb_gfx (01 Aug 2012 - 13:06)
Intéressant =) Même si ça me semble un peu curieux... PHP n'est pas mon langage de prédilection...
Utilises-tu la fonction isset() pour vérifier que tes variables $_POST['printemps'], été, etc. existent ?
Gothor a écrit :
Utilises-tu la fonction isset() pour vérifier que tes variables $_POST['printemps'], été, etc. existent ?



comme ceci :

isset('".$_POST['printemps']."')

ou

isset($_POST['printemps'])

(désolé de cette question qui peut te paraître bête, mais ça fait 2 jours que j'ai commencé le php) !!!
Ok,
Bon, je me suis décidé à lire un peu ton code...

En fait, tu utilises les variables $_POST['printemps'], $_POST['ete'], $_POST['automne'], $_POST['hiver'] dans ton script pour effectuer ta requête...
Le problème, c'est que si ces checkbox ne sont pas cochées, alors leurs valeurs ne sont pas envoyées...

A toi de voir ce que tu veux mettre dans ta cellule lorsque ces checkbox ne sont pas cochées...

Les valeurs à insérer dans ta requête pour ces quatre variables devraient être quelque chose du type :
isset($_POST['printemps']) ? $_POST['printemps'] : "valeur quand la case n'est pas remplie"
Si tu ne comprends pas cette syntaxe, ça veut dire :
Est-ce que la variable $_POST['printemps'] existe ?
- Si oui, alors envoie la valeur $_POST['printemps']
- Si non, alors envoie la valeur "valeur quand la case n'est pas remplie"
Modifié par Gothor (01 Aug 2012 - 13:23)
Gothor a écrit :
Ok,
Bon, je me suis décidé à lire un peu ton code...

En fait, tu utilises les variables $_POST['printemps'], $_POST['ete'], $_POST['automne'], $_POST['hiver'] dans ton script pour effectuer ta requête...
Le problème, c'est que si ces checkbox ne sont pas cochées, alors leurs valeurs ne sont pas envoyées...

A toi de voir ce que tu veux mettre dans ta cellule lorsque ces checkbox ne sont pas cochées...

Les valeurs à insérer dans ta requête pour ces quatre variables devraient être quelque chose du type :
isset($_POST['printemps']) ? $_POST['printemps'] : &quot;valeur quand la case n'est pas remplie&quot;
Si tu ne comprends pas cette syntaxe, ça veut dire :
Est-ce que la variable $_POST['printemps'] existe ?
- Si oui, alors envoie la valeur $_POST['printemps']
- Si non, alors envoie la valeur &quot;valeur quand la case n'est pas remplie&quot;


je viens de tester, selon ton exemple Smiley smile

j'ai un retour :
Parse error: syntax error, unexpected T_ISSET in C:\wamp\www\MANGER-SELON-LES-SAISONS.com\produits-de-saison\cible.php on line 20

qui correspond à la première ligne avec isset


<?php

// Connexion au serveur mysql
$connection=mysql_connect("localhost", "root", ""); 
mysql_select_db("eat-to-season", $connection) or die("Impossible d'ouvrir la base de données "); 
 
if($connection)
{
$sql = "INSERT INTO liste_legumes (image,noms,couleurs,conservation,conseils_achat,provenance,proteines,glucides,fibres,calories,printemps,ete,automne,hiver,mois_debut,mois_fin) 
VALUES ('".$_POST['image']."',
'".$_POST['noms']."',
'".$_POST['couleurs']."',
'".$_POST['conservation']."',
'".$_POST['conseils_achat']."',
'".$_POST['provenance']."',
".$_POST['proteines'].",
".$_POST['glucides'].",
".$_POST['fibres'].",
".$_POST['calories'].",
"isset($_POST['printemps']) ? $_POST['printemps'] : "non"",
"isset($_POST['ete']) ? $_POST['ete'] : "non"",
"isset($_POST['automne']) ? $_POST['automne'] : "non"",
"isset($_POST['hiver']) ? $_POST['hiver'] : "non"",
".$_POST['mois_debut'].",
".$_POST['mois_fin'].")
";
echo $sql;
  
$requete=mysql_query($sql);
mysql_close($connection);
}
 
// ?>

Modifié par dafid5 (01 Aug 2012 - 17:00)
serais-ce plus simple que seule les checkbox cochés soit envoyé dans une seule ligne de la base sql ?
jb_gfx a écrit :
En même temps du code en plein milieu d'une chaine de caractère ça va avoir du mal à fonctionner.


C'est à dire tu parles de la ligne "INSERT INTO ...... (...) ? VALUES
ta chaine n'est plus correcte,
tes lignes devraient ressembler à ça :
".(isset($_POST['printemps']) ? $_POST['printemps'] : "non").",
Gothor a écrit :
ta chaine n'est plus correcte,
tes lignes devraient ressembler à ça :
&quot;.(isset($_POST['printemps']) ? $_POST['printemps'] : &quot;non&quot;).&quot;,


tu es un chef Gothor, merci

je n'ai plus de message d'erreur!