problème d'enregistrement dans bdd mysql

Eléphant du PHP | 419 Messages

01 févr. 2006, 16:35

bonjour lors de l'enregistrement par la page interfaceconfim.php il me sort ses erreurs
et je vois pas où se situe l'erreur :(
pouvez vous éclairer ma lanterne merci
Notice: Undefined index: codenu in c:\program files\easyphp1-8\www\confirminterface.php on line 6
Notice: Undefined index: animj in c:\program files\easyphp1-8\www\confirminterface.php on line 6
Notice: Undefined index: numtypej in c:\program files\easyphp1-8\www\confirminterface.php on line 6
Notice: Undefined index: descrtype in c:\program files\easyphp1-8\www\confirminterface.php on line 6
Notice: Undefined index: actionj in c:\program files\easyphp1-8\www\confirminterface.php on line 6
Notice: Undefined index: precact in c:\program files\easyphp1-8\www\confirminterface.php on line 6
Notice: Undefined index: autrej in c:\program files\easyphp1-8\www\confirminterface.php on line 6
Notice: Undefined index: precautre in c:\program files\easyphp1-8\www\confirminterface.php on line 6
Notice: Undefined index: numcomp in c:\program files\easyphp1-8\www\confirminterface.php on line 6
Notice: Undefined index: preccomp in c:\program files\easyphp1-8\www\confirminterface.php on line 6
INSERT INTO enquete VALUES(,,,,'',,'',,'',,'');Erreur : Erreur de syntaxe près de ',,,'',,'',,'',,'')' à la ligne 1
la page interface où se situe les données
<html>
<head>
<title>Ajouter des acteurs</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body><table bgcolor="#FFFFFF" border="1" width="110%" height="100%">
        <?php
         include('connect.php');
         mysql_connect(SERVEUR,NOM,MOTDEPASSE,BASE)or die("erreur de connexion au serveur".SERVEUR);
        mysql_select_db(BASE)or die("erreur de connexion à la base de données".BASE);
        $SQL="SELECT numtypej,descr from typejard;";
        $resultatrequete=mysql_query($SQL) or die ("erreur requete: ".$SQL);
             if (mysql_num_rows($resultatrequete)==0) {echo "pas de types!";}
        else{
         $SQL1="SELECT numcomp,comp from competence;";
        $resultatrequete1=mysql_query($SQL1) or die ("erreur requete: ".$SQL1);
         if (mysql_num_rows($resultatrequete1)==0) {echo "pas de compétences!";}
        else{
               ?>
  <tr><td width="100%" height="100%"><div align="center">
<div align="center"><font  color="#3366FF">Ajouter acteurs </font><br>
</div>
<form name="form1" method="POST" action="confirminterface.php">
  <table  border="1">
      <td>Numero d'acteurs :</td>
      <td><input name="codenu" type="text" id="codenu"></td>
    </tr>
    <tr>
      <td>Vous possedez, animez et/ou jardinez :</td>
      <td >oui : <input type="Radio" name="animj" id="animj" value=1 checked ><br>
          non : <input type="Radio" name="animj" id="animj" value=0></td>
    </tr>
    <tr>
      <td>Quel type :</td>
      <td align="left">
        <? while($ligne=mysql_fetch_row($resultatrequete))
                         {?>
      <?php echo $ligne[1]; ?><center><input type="checkbox" name="numtypej" id="numtypej" value="<?php $ligne[0] ?>" ></center><br>
          <?php } ?>
          </td>
    </tr>
    <tr>
      <td>Precisez :</td>
      <td><textarea name="descrtype" rows="15" id="descrtype"></textarea></td>
    </tr>
    <tr>
      <td>Vous organisez des actions liés au jardin :</td>
      <td >oui : <input type="Radio" name="actionj" id="actionj" value=1 checked ><br>
          non : <input type="Radio" name="actionj" id="actionj" value=0></td>
    </tr>
    <tr>
      <td>Precisez :</td>
      <td><textarea name="precact" rows="15" id="precact"></textarea></td>
    </tr>
    <tr>
      <td>Autre :</td>
      <td >oui : <input type="Radio" name="autrej" id="autrej" value=1 checked ><br>
          non : <input type="Radio" name="precautre" id="precautre" value=0></td>
    </tr>
    <tr>
      <td>Precisez :</td>
      <td><textarea name="precact" rows="15" id="precact"></textarea></td>
    </tr>
    <tr>
      <td>Quelles compétences pouvez vous et souhaitez vous apporter au réseau JTSE Bretagne :</td>
      <td align="left">
        <? while($ligne1=mysql_fetch_row($resultatrequete1))
                         {?>
      <?php echo $ligne1[1]; ?><center><input type="checkbox" name="numcomp" id="numcomp" value="<?php $ligne1[0] ?>" ></center><br>
          <?php } ?>
          </td>
    </tr>
    <tr>
      <td>Precisez :</td>
      <td><textarea name="preccomp" rows="15" id="preccomp"></textarea></td>
    </tr>
  </table>
  <div align="center"><br>
    <input type="submit" name="Submit" value="Ajout&eacute;">
  </div>
</form></td>
  </tr></table>
  <?php }} ?>
</body>
</html>
la page interfaceconfirm qui doit enregistrer les données dans la base
<table bgcolor="#FFFFFF" border="1" width="110%" height="100%">
  <tr><td width="100%" height="100%">      <div align="center">
        <? require('connect.php');
mysql_connect(SERVEUR,NOM,MOTDEPASSE,BASE)or die("erreur de connexion au serveur".SERVEUR);
mysql_select_db(BASE)or die("erreur de connexion à la base de données".BASE);
$requete = "INSERT INTO enquete VALUES(,".$_POST['codenu'].", ".$_POST['animj'].", ".$_POST['numtypej'].", '".$_POST['descrtype']."', ".$_POST['actionj'].", '".$_POST['precact']."', ".$_POST['autrej'].", '".$_POST['precautre']."', ".$_POST['numcomp'].", '".$_POST['preccomp']."');";
    echo $requete;
   mysql_query($requete)or die("Erreur : " . mysql_error());
   ?>
        </div>    <div class = center><?
echo "acteurs ajoutés";
?></div><?
mysql_close();
?><br><br><br>
      <div align="center"><a href='index.php?page=2'>retour</a>
        <a href='index.php?page=1'>acceuil</a></div></td>
  </tr></table>
la page connect où se situe les variables de connexion
<?php
if(!defined("NOM")){define("NOM","root");}
if(!defined("MOTDEPASSE")){define("MOTDEPASSE","");}
if(!defined("SERVEUR")){define("SERVEUR","localhost");}
if(!defined("BASE")){define("BASE","vertlejardin");}
?>

Eléphant du PHP | 440 Messages

01 févr. 2006, 16:45

Hello ,

la ligne :
$requete = "INSERT INTO enquete VALUES(,".$_POST['codenu'].", ".$_POST['animj'].", ".$_POST['numtypej'].", '".$_POST['descrtype']."', ".$_POST['actionj'].", '".$_POST['precact']."', ".$_POST['autrej'].", '".$_POST['precautre']."', ".$_POST['numcomp'].", '".$_POST['preccomp']."');"; 
ecrit la deja comme ceci :
$requete = "INSERT INTO enquete VALUES('".$_POST[codenu]."', '".$_POST[animj]."', '".$_POST[numtypej]."', '".$_POST[descrtype]."', '".$_POST[actionj]."', '".$_POST[precact]."', '".$_POST[autrej]."', '".$_POST[precautre]."', '".$_POST[numcomp]."', '".$_POST[preccomp]."')"; 
c'etait un peu le bazar il manque des ' et il y avait des , en trop
C'est en faisant des erreurs et en osant demander de l'aide qu'on apprend ! Il n'est pas ridicule de ne pas savoir !

Mammouth du PHP | 19672 Messages

01 févr. 2006, 16:53

Ben non DarkBlue, tu as viré les apostrophes autour des index de tableau, c'est pas bon : [-X
$requete = "INSERT INTO enquete ".
           "VALUES(". $_POST['codenu'] .", 
		           ". $_POST['animj'] .", 
				   ". $_POST['numtypej'] .", 
				  '". $_POST['descrtype'] ."', 
				   ". $_POST['actionj'] .", 
				  '". $_POST['precact'] ."', 
				   ". $_POST['autrej'] .", 
				  '". $_POST['precautre'] ."', 
				   ". $_POST['numcomp'] .", 
				  '". $_POST['preccomp'] ."');";
En revanche, il y a des apostrophes autour de certaines valeurs, pas autour d'autres, le problème, c'est qu'on ne peut pas deviner ce qui est Entier ou chaine de caractère.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 419 Messages

01 févr. 2006, 17:03

merci darkblue et cyrano
il reste plus qu'une ligne d'erreur
je vous met la struture de la table aussi

Code : Tout sélectionner

CREATE TABLE `enquete` ( `codeen` int(11) NOT NULL auto_increment, `codenu` int(11) default NULL, `animj` tinyint(1) default NULL, `numtypej` int(11) default NULL, `descrtype` text, `actionj` tinyint(1) default NULL, `precact` text, `autrej` tinyint(1) default NULL, `precautre` text, `numcomp` int(11) default NULL, `preccomp` text, PRIMARY KEY (`codeen`)

Notice: Undefined index: precautre in c:\program files\easyphp1-8\www\confirminterface.php on line 14
INSERT INTO enquete VALUES(1, 1, , 'a', 1, 'a', 1, '', , 'a');Erreur : Erreur de syntaxe près de ' 'a', 1, ' à la ligne 3
désolé de mettre du temps met je dois naviguer entre 3 ordis :?

l'erreur ne viendrait pas de mes cases à cocher ?
qui se situe là dans la base
`numtypej` int(11) default NULL,
`numcomp` int(11) default NULL,
dans l'echo ça apparaît comme vide :?

Mammouth du PHP | 19672 Messages

01 févr. 2006, 17:12

Non, tu as des espaces vides non délimités entre deux virgules : donc la correction à faire serait la suivante:
$requete = "INSERT INTO enquete ".
           "VALUES('". $_POST['codenu'] ."', 
		           '". $_POST['animj'] ."', 
				   '". $_POST['numtypej'] ."', 
				   '". $_POST['descrtype'] ."', 
				   '". $_POST['actionj'] ."', 
				   '". $_POST['precact'] ."', 
				   '". $_POST['autrej'] ."', 
				   '". $_POST['precautre'] ."', 
				   '". $_POST['numcomp'] ."', 
				   '". $_POST['preccomp'] ."');";
Comme ça, pas de risque et les champs numériques seront correctement enregistrés quand même, mais les chaines vides ne génèreront pas d'erreur non plus
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 419 Messages

01 févr. 2006, 17:18

merci mais il y a un autre problème maintenant :(
Notice: Undefined index: precautre in c:\program files\easyphp1-8\www\confirminterface.php on line 14
INSERT INTO enquete VALUES('1', '1', '', 'a', '1', 'a', '1', '', '', 'a');Erreur : Column count doesn't match value count at row 1
la ligne 14 correspond à
'". $_POST['precautre'] ."',
qui est une zone de texte et dans la requête représenté par les second guillements
d'ailleurs je comprends pourquoi il me met des guillements :?

le premier et dernier guillement coorespondent aux cases à cocher normalement ce sont des chiffres qui devraient apparître :?
Modifié en dernier par sausee2005 le 01 févr. 2006, 17:21, modifié 1 fois.

Mammouth du PHP | 19672 Messages

01 févr. 2006, 17:21

Column count doesn't match value count at row 1
Ça signifie que le nombre de valleurs envoyées ne correspond pas au nombre de champs dans la table: à priori, il y a une valeur en trop ou il en manque une...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 419 Messages

01 févr. 2006, 17:30

ça enregistre :D mais encore des petits soucis :(

ce qui apparaît
Notice: Undefined index: precautre in c:\program files\easyphp1-8\www\confirminterface.php on line 15
INSERT INTO enquete VALUES('1', '1', '1', '', 'a', '1', 'a', '1', '', '', 'a');
acteurs ajoutés
retour acceuil
toujours ses guillements :(

et la requête actuelle j'avais oublié la clef :roll:
enfin je l'avais mise en auto donc je pensais qu'elle n'avait pas besoin de valeurs :oops:
$requete = "INSERT INTO enquete ".
           "VALUES('". $_POST['codeen'] ."',
                   '". $_POST['codenu'] ."',
                   '". $_POST['animj'] ."',
                   '". $_POST['numtypej'] ."',
                   '". $_POST['descrtype'] ."',
                   '". $_POST['actionj'] ."',
                   '". $_POST['precact'] ."',
                   '". $_POST['autrej'] ."',
                   '". $_POST['precautre'] ."',
                   '". $_POST['numcomp'] ."',
                   '". $_POST['preccomp'] ."');";
    echo $requete;

Eléphant du PHP | 440 Messages

01 févr. 2006, 18:18

Ben non DarkBlue, tu as viré les apostrophes autour des index de tableau, c'est pas bon : [-X
$requete = "INSERT INTO enquete ".
           "VALUES(". $_POST['codenu'] .", 
		           ". $_POST['animj'] .", 
				   ". $_POST['numtypej'] .", 
				  '". $_POST['descrtype'] ."', 
				   ". $_POST['actionj'] .", 
				  '". $_POST['precact'] ."', 
				   ". $_POST['autrej'] .", 
				  '". $_POST['precautre'] ."', 
				   ". $_POST['numcomp'] .", 
				  '". $_POST['preccomp'] ."');";
En revanche, il y a des apostrophes autour de certaines valeurs, pas autour d'autres, le problème, c'est qu'on ne peut pas deviner ce qui est Entier ou chaine de caractère.
Personelement je pratique comme ceci et ça fonctione , si je laisse les apostrophes il m arrive d avoir des messages d'erreur ! (promis juré lol)
C'est en faisant des erreurs et en osant demander de l'aide qu'on apprend ! Il n'est pas ridicule de ne pas savoir !

Eléphant du PHP | 419 Messages

02 févr. 2006, 11:20

bonjour ça marche toujours pas :shock:
et pour les cases à cocher comment faire pour qu'il plusieurs choix et qu'il les enregistre :?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 févr. 2006, 23:51

toujours ses guillements :(
(...)
C'est à dire ? tu ne veux pas en avoir ?
parce que tu demands d'en mettre, ce qu'il faut bien entendu faire dans certains cas, si le champ est de type VARCHAR ou autre type texte.
et pour les cases à cocher comment faire pour qu'il plusieurs choix et qu'il les enregistre :?
Il y a un post dans la FAQ elle est la pour ça :wink:

par contre il faut aussi voir la façon de vouloir enregistrer les cases.
Dans un seul champ ou plusieurs :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 419 Messages

03 févr. 2006, 12:05

merci pour la faq :D
les guillements c'est ça :
Notice: Undefined index: precautre in c:\program files\easyphp1-8\www\confirminterface.php on line 15
INSERT INTO enquete VALUES('2', '2', '1', 'Array', 'zazz', '1', 'dsfq', '1', '', 'Array', 'qsdfqf');
acteurs ajoutés
il devrait y avoir du texte à la place :?
je comprends pas pourquoi il le prend pas en compte

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 févr. 2006, 14:41

tu as un champs de trop dans la table, du moins inutile me semble:
oui : <input type="Radio" name="autrej" id="autrej" value=1 checked ><br> 
non : <input type="Radio" name="precautre" id="precautre" value=0></td> 
de type radio portent le meme nom lorsqu'il s'agit d'un groupe de bouton, ce qui est le cas ici (OUI, NON)

donc tu as soit:
name="precautre" pour les 2
soit:
name="autrej"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

03 févr. 2006, 16:17

ça marche :D
merci beaucoup
c'était une erreur de copier/coller je suis un boulet :oops: