Erreur Undefined index incompréhensible

Eléphanteau du PHP | 38 Messages

05 mai 2011, 10:39

Bonjour à tous,

Je fais un stage chez un vétérinaire qui m'a demandé de rajouter une modification sur un formulaire.
Je dois rajouter 10 rubriques. Avec des noms bizarre comme enva1, envl1, etc ...

J'ai commencé par rajouter la ligne dans le tableau html déjà existant, puis dans la table dans la table phpmyadmin, et maintenant j'ai écris ceci :

Code : Tout sélectionner

if (isset ($_POST['valider'])){ //On récupère les valeurs entrées par l'utilisateur : $accept=$_POST['accept']; $structure=$_POST['structure']; $etablissement=$_POST['etablissement']; $adresse=$_POST['adresse']; $cp=$_POST['cp']; $ville=$_POST['ville']; $mail=$_POST['mail']; $site=$_POST['site']; $nbveto=$_POST['nbveto']; $nom1=$_POST['nom1']; $prenom1=$_POST['prenom1']; $mail1=$_POST['mail1']; $enva1=$_POST['enva1'];
Tout fonctionne sauf ceci :
[img]Notice:%20Undefined%20index:%20enva1%20in%20C:\wamp\www\vethica\formulaire_echantillon_puce.php%20on%20line18[/img]

Quelqu'un pourrai t-il m'expliquer pourquoi la rubrique enva1 ne veut pas s'enregistrer ?

Merci d'avance,
Diabolo

Eléphanteau du PHP | 38 Messages

05 mai 2011, 10:58

Cette fois je n'ai plus d'erreur mais rien ne s'enregistre dans ma base !!!

Mammouth du PHP | 672 Messages

05 mai 2011, 11:00

Bonjour.

Le message t'indique que $_POST['enva1'] n'existe pas...

1. Pour vérifier, tu peux faire un print_r($_POST); en début de script, pour voir le contenu de $_POST.
2. Tu as bien créé le champ dans ton formulaire ?

Eléphanteau du PHP | 38 Messages

05 mai 2011, 11:31

Bonjour macgavel,

Oui dans ma base j'ai bien insérer un champs pour enval1 et dans mon code insert j'ai écris ceci :
$sql = 'INSERT INTO demande VALUES("","'.$accept.'","'.$structure.'","'.$etablissement.'","'.$adresse.'","'.$cp.'","'.$ville.'","'.$mail.'","'.$site.'","'.$nbveto.'","'.$nom1.'","'.$prenom1.'","'.$mail1.'","'.$enva1.'","'.envl1.'")';
Parfois le message ne s'affiche pas, mais dans tous les cas rien ne s'insére dans ma base pour enval1

Eléphant du PHP | 241 Messages

05 mai 2011, 11:58

Salut,

pour te simplifier la vie, au lieu de mettre des guillemets simple et double de partout, encadre ta requête avec des guillemets double, ensuite les valeurs dans la requête simplement avec des guillemets simple:
$sql = "INSERT INTO demande VALUES('','$accept','$structure','$etablissement','$adresse','$cp','$ville','$mail','$site','$nbveto','$nom1','$prenom1','$mail1','$enva1','$envl1')";
De plus ta dernière valeur n'avait pas de $ ce qui devait poser problème !


Il faut absolument que tes valeurs soient sécurisées avant d'être inséré dans la ta bdd !
- Soit avec une requête preparé en PDO : http://fr2.php.net/manual/fr/book.pdo.php,
- Ou alors avec un mysql_escape_string : http://php.net/manual/fr/function.mysql ... string.php

Eléphanteau du PHP | 38 Messages

05 mai 2011, 13:05

Salut MisterFlo,

J'ai copier coller ton code les mentions enva1 et envl1 fonctionne bien maintenant et tout s'enregistre.

Par contre dès que je rajoute les suivantes, les nouvelles mentions ne veulent plus rentrer !!
$sql = "INSERT INTO demande VALUES('','$accept','$structure','$etablissement','$adresse','$cp','$ville','$mail','$site','$nbveto','$nom1','$prenom1','$mail1','$enva1','$envl1','$envt1','$autres1','$cn1','$bov1','$eq1','$nac1')";
if (isset ($_POST['valider'])){
	//On récupère les valeurs entrées par l'utilisateur :
	$accept=$_POST['accept'];
	$structure=$_POST['structure'];
	$etablissement=$_POST['etablissement'];
	$adresse=$_POST['adresse'];
	$cp=$_POST['cp'];
	$ville=$_POST['ville'];
	$mail=$_POST['mail'];
	$site=$_POST['site'];
	$nbveto=$_POST['nbveto'];
	$nom1=$_POST['nom1'];
	$prenom1=$_POST['prenom1'];
	$mail1=$_POST['mail1'];
	$enva1=$_POST['enva1'];
	$envl1=$_POST['envl1'];
	$envt1=$_POST['envt1'];
	$autres1=$_POST['autres1'];
	$cn1=$_POST['cn1'];
	$bov1=$_POST['bov1'];
	$eq1=$_POST['eq1'];
	$nac1=$_POST['nac1'];

C'est à rien y comprendre !! Et les mentions existe bel et bien dans la base !

ViPHP
ViPHP | 2577 Messages

05 mai 2011, 14:07

Bonjour,
...
Par contre dès que je rajoute les suivantes, les nouvelles mentions ne veulent plus rentrer !!
...
Un message d'erreur peut être ?

Eléphanteau du PHP | 38 Messages

05 mai 2011, 15:12

Toujours les mêmes :

undefined structure in C:\wamp\www\vethica\formulaire_echantillon_puce.php on line 7
Undefined index: envt1 in C:\wamp\www\vethica\formulaire_echantillon_puce.php on line 20
Undefined index: autres1 in C:\wamp\www\vethica\formulaire_echantillon_puce.php on line 21
Undefined index: cn1 in C:\wamp\www\vethica\formulaire_echantillon_puce.php on line 22
Undefined index: eq1 in C:\wamp\www\vethica\formulaire_echantillon_puce.php on line 24
Undefined index: nac1 in C:\wamp\www\vethica\formulaire_echantillon_puce.php on line 25
if (isset ($_POST['valider'])){
	//On récupère les valeurs entrées par l'utilisateur :
	$accept=$_POST['accept'];
	$structure=$_POST['structure'];
	$etablissement=$_POST['etablissement'];
	$adresse=$_POST['adresse'];
	$cp=$_POST['cp'];
	$ville=$_POST['ville'];
	$mail=$_POST['mail'];
	$site=$_POST['site'];
	$nbveto=$_POST['nbveto'];
			$sql = 'INSERT INTO demande VALUES("","'.$accept.'","'.$structure.'","'.$etablissement.'","'.$adresse.'","'.$cp.'","'.$ville.'","'.$mail.'","'.$tel.'","'.$site.'"'.$nbveto.'")';

Eléphanteau du PHP | 38 Messages

05 mai 2011, 15:15

zut c'est ce code qui ne fonctionne pas (tenez pas compte du code php du message précédent)
if (isset ($_POST['valider'])){
	//On récupère les valeurs entrées par l'utilisateur :
	$accept=$_POST['accept'];
	$structure=$_POST['structure'];
	$etablissement=$_POST['etablissement'];
	$adresse=$_POST['adresse'];
	$cp=$_POST['cp'];
	$ville=$_POST['ville'];
	$mail=$_POST['mail'];
	$site=$_POST['site'];
	$nbveto=$_POST['nbveto'];
	$nom1=$_POST['nom1'];
	$prenom1=$_POST['prenom1'];
	$mail1=$_POST['mail1'];
	$enva1=$_POST['enva1'];
	$envl1=$_POST['envl1'];
	$envt1=$_POST['envt1'];
	$autres1=$_POST['autres1'];
	$cn1=$_POST['cn1'];
	$bov1=$_POST['bov1'];
	$eq1=$_POST['eq1'];
	$nac1=$_POST['nac1'];
$sql = "INSERT INTO demande VALUES('','$accept','$structure','$etablissement','$adresse','$cp','$ville','$mail','$site','$nbveto','$nom1','$prenom1','$mail1','$enva1','$envl1','$envt1','$autres1','$cn1','$bov1','$eq1','$nac1')";
merci

Eléphant du PHP | 241 Messages

05 mai 2011, 15:21

Es-tu sur qu'au niveau de ton code HTML tous les champs existent ? Parce que d'après les erreurs non :D

Eléphanteau du PHP | 38 Messages

05 mai 2011, 15:54

bon j'ai revérifier entièrement mon code html,

cette fois plus d'erreur d'afficher mes deux de mes rubriques ne sont pas enregistrer dans ma base !
if (isset ($_POST['valider'])){
	//On récupère les valeurs entrées par l'utilisateur :
	$accept=$_POST['accept'];
	$structure=$_POST['structure'];
	$etablissement=$_POST['etablissement'];
	$adresse=$_POST['adresse'];
	$cp=$_POST['cp'];
	$ville=$_POST['ville'];
	$mail=$_POST['mail'];
	$site=$_POST['site'];
	$nbveto=$_POST['nbveto'];
	$nom1=$_POST['nom1'];
	$prenom1=$_POST['prenom1'];
	$mail1=$_POST['mail1'];
	$enva1=$_POST['enva1'];
	$envl1=$_POST['envl1'];
	$envt1=$_POST['envt1'];
	$autres1=$_POST['autres1'];
	$cn1=$_POST['cn1'];
	$bov1=$_POST['bov1'];
	$eq1=$_POST['eq1'];
	$nac1=$_POST['nac1'];
$sql = "INSERT INTO demande VALUES('','$accept','$structure','$etablissement','$adresse','$cp','$ville','$mail','$site','$nbveto','$nom1','$prenom1','$mail1','$enva1','$envl1','$envt1','$autres1','$cn1','$bov1','$eq1','$nac1')";
            <table width="499" border="0" bgcolor="#F1DAC4">
              <tr>
                <td width="51">Nom</td>
                <td colspan="2"><input type="text" name="nom1"/></td>
                <td width="32"><div align="right">ENVA</div></td>
                <td width="20"><input type="checkbox" name="enva1"/></td>
                <td width="30"><div align="right">ENVL</div></td>
                <td width="20"><input type="checkbox" name="envl1"/></td>
                <td width="26"><div align="right">ENVT</div></td>
                <td width="22"><input type="checkbox" name="envt1"/></td>
                <td width="32"><div align="right">Autres</div></td>
                <td width="22"><input type="checkbox" name="autres1"/></td>
                </tr>
              <tr>
                <td>Pr&eacute;nom</td>
                <td colspan="2"><input type="text" name="prenom1"/></td>
                <td>e-mail</td>
                <td colspan="7"><input type="text" name="mail1"/></td>
                </tr>
              <tr>
                <td>Ann&eacute;e diplome</td>
                <td width="144"><input type="text" name="nom1" maxlength="4"/></td>
                <td width="54">Sp&eacute;cialit&eacute;</td>
                <td><div align="right">CN</div></td>
                <td><input type="checkbox" name="cn1"/></td>
                <td><div align="right">BOV</div></td>
                <td><input type="checkbox" name="bov1"/></td>
                <td><div align="right">EQ</div></td>
                <td><input type="checkbox" name="eq1"/></td>
                <td><div align="right">NAC</div></td>
                <td><input type="checkbox" name="nac1"/></td>
                </tr>
              <tr>
            </table>
Il s'agit de nom1, prenom1 et mail1 et le reste fonctionne

Eléphant du PHP | 241 Messages

05 mai 2011, 16:12

Vérifie que ces variables ne sont pas vides avant de les mettre dans la requête SQL.
var_dump($nom1);
var_dump($prenom1);
var_dump($mail1);

Eléphanteau du PHP | 38 Messages

05 mai 2011, 16:38

:D Je pourrais pas vous dire pourquoi mais après un dump sur mes variables, j'ai réécris celle qui ne collais pas et maintenant tout fonctionne.

Merci à tous ceux qui ont pris un peu de leur temps pour me venir en aide.*

Bonne fin d'après midi à tous !

ViPHP
ViPHP | 2577 Messages

05 mai 2011, 17:38

Bonjour,

Pour les checkbox, la variable n'est renseignée que si celle-ci est cochée. Il faut donc faire $toto = isset($_POST['toto']);

Eléphanteau du PHP | 38 Messages

06 mai 2011, 09:20

Merci Mazarini pour ta remarque.

Il me reste encore une petite question, dans ma base de donnée les enregistrements concernant les checkbox faut-il les mettre en type boolean ou est ce que je peux les garder en char taille 1 ?

merci,
diabolo