Vous n'êtes pas identifié(e).
Bonsoir à tous,
J'ai créer un formulaire dans une page qui s'appelle form.php et je souhaire récupérer les valeurs de ce formulaire dans une autre page qui se nomme inscription.php.
Le problème est que j'ai une erreur que voici :
Notice: Undefined index: in C:\wamp\www\SP1_Kolb\inscription.php on line 43
La requete a échoué:Column 'dateNaissance' cannot be null
Je pense que le rpoblème provient de la saisie de la date dans le formulaire qui se fait au format français alors que dans mysql c'est un format us.
Je vous soumets le code :
// On commence par récupérer les champs
if(isset($_POST['leNom'])) $nom=$_POST['leNom'];
else $nom="";
if(isset($_POST['lePrenom'])) $prenom=$_POST['lePrenom'];
else $prenom="";
if(isset($_POST['laDateNaissance'])) $dateNaissance=$_POST['laDateNaissance'];
else $dateNaissance="";
if(isset($_POST['leNiveauBac'])) $niveauBac=$_POST['leNiveauBac'];
else $niveauBac="";
// On vérifie si les champs sont vides
if(empty($nom) OR empty($prenom) OR empty($dateNaissance) OR empty($niveauBac))
{
echo '<font color="red">Attention, tous les champs doivent être saisies !</font>';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
//connexion au serveur
$host = "localhost";
$user = "root";
$pass = "";
$connexion=@mysql_connect($host, $user, $pass) or die("La connexion a échoué :".mysql_error());
}
//connexion à la BD
$bd = "profilapprenant";
@mysql_select_db($bd, $connexion) or die ("selection impossible:".mysql_error());
//On effectue la requete
$query = "INSERT INTO individu (numIndividu, nomIndividu, prenomIndividu, dateTest, dateNaissance, niveauEtudeInd) VALUES (
'" . mysql_real_escape_string($_POST['']) ."',
'" . mysql_real_escape_string($nom) ."',
'" . mysql_real_escape_string($prenom) ."',
CURDATE(),
STR_TO_DATE('" . mysql_real_escape_string($dateNaissance) ."'
, \"%Y/%m/%d\"),
'" . mysql_real_escape_string($niveauBac) ."')";
//On insère les données du formulaire dans la table
$result = mysql_query($query) or die ("La requete a échoué:".mysql_error());
// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';
$numIndividu = mysql_insert_id();
$_SESSION["idUser"]=$numIndividu;
header("Location: question.php");
?>
Si quelqu'un peut m'aider car ça fait un moment que je galère, je l'en remercie vivement
Hors ligne
Salut,
Déjà :
Notice: Undefined index: in C:\wamp\www\SP1_Kolb\inscription.php on line 43
et ligne 43 : mysql_real_escape_string($_POST[''])
??
Ensuite, quel est le format de ta date ?
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Merci pour ta réponse. Le format de la date saisie dans le formulaire est : jrs, mois, aaaa, soit 16-05-2010
Hors ligne
La lecture de la doc et la logique fait comprendre que dans le format il faut indiquer le format de la date dans la chaine.
Donc plutôt : "%d/%m/%Y".
Mais l'erreur ne viens pas de là car si le format est erroné le champ se retrouve à NULL.
Edit: Sauf si tu l'as déclaré NOT NULL...
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Je l'ai affiché dans la BD avec null = non. Est ce qu tu penses que ça vient de la ?
Sinon d'après toi d'où cela peut venir ?
Merci pour ton aide
Hors ligne
Si tu ne mets pas null = non, le champs sera=à null si ta fonction foire...
As tu testé le format "%d-%m-%Y" (exactement le format reçu)?
As tu modifié la ligne : mysql_real_escape_string($_POST['']) ? si numIndividu est autoIncrement, un simple "" suffit.
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Si je ne mets que les "" j'ai un parse error sur cette ligne. Voici la ligne :
$query = "INSERT INTO individu (numIndividu, nomIndividu, prenomIndividu, dateTest, dateNaissance, niveauEtudeInd) VALUES (
"",
Hors ligne
J'ai modifié la ligne et voici l'erreur qui s'affiche :
La requete a échoué: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 ' 'Dupond', 'Jean', CURDATE(), STR_TO_DATE('30-08-1975' , '%d/%m/%Y'), '8')' at line 2
Hors ligne
Oui, je suis allé un peu vite, mais bon, comprends que dans ton as c'est '' (des simples quotes).
EDIT :
Sans oublier la virgule après
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
J'ai mis les simples quotes et toujours l'erreur :
La requete a échoué: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 ' 'Dupond', 'Jean', CURDATE(), STR_TO_DATE('30-08-1975' , '%d/%m/%Y'), '8')' at line 2
Voici la requête :
Hors ligne
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Ok merci ça marche. J'ai pas mal galléré. Merci encore
Hors ligne
si numIndividu est autoIncrement, un simple "" suffit.
Il vaut même mieux ne pas citer la colonne dans la liste et donc ne pas mettre de valeur, MySQL se chargera tout seul de mettre une valeur dans la colonne autoincrémentée.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne