PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 15-05-2010 16:11:44

rimbaut
Membre
Inscription : 15-05-2010
Messages : 11

[Résolu] Problème dans une requete mysql en php

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 :

<?php
//On demarre les sessions
session_start();
session_destroy();
session_start();

// 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

#2 15-05-2010 16:36:20

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] Problème dans une requete mysql en php

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

#3 15-05-2010 16:49:21

rimbaut
Membre
Inscription : 15-05-2010
Messages : 11

Re : [Résolu] Problème dans une requete mysql en php

Merci pour ta réponse. Le format de la date saisie dans le formulaire est : jrs, mois, aaaa, soit 16-05-2010

Hors ligne

#4 15-05-2010 16:53:07

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] Problème dans une requete mysql en php

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... smile


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#5 15-05-2010 17:45:59

rimbaut
Membre
Inscription : 15-05-2010
Messages : 11

Re : [Résolu] Problème dans une requete mysql en php

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

#6 15-05-2010 17:52:14

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] Problème dans une requete mysql en php

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

#7 15-05-2010 17:56:03

rimbaut
Membre
Inscription : 15-05-2010
Messages : 11

Re : [Résolu] Problème dans une requete mysql en php

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

#8 15-05-2010 18:00:42

rimbaut
Membre
Inscription : 15-05-2010
Messages : 11

Re : [Résolu] Problème dans une requete mysql en php

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

#9 15-05-2010 18:01:32

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] Problème dans une requete mysql en php

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 smile


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#10 15-05-2010 18:06:45

rimbaut
Membre
Inscription : 15-05-2010
Messages : 11

Re : [Résolu] Problème dans une requete mysql en php

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 :


//On effectue la requete
$query = "INSERT INTO individu (numIndividu, nomIndividu, prenomIndividu, dateTest, dateNaissance, niveauEtudeInd) VALUES (
'"
. mysql_real_escape_string('') ."',,
'"
. mysql_real_escape_string($nom) ."',
'"
. mysql_real_escape_string($prenom) ."',
CURDATE(),
STR_TO_DATE('"
. mysql_real_escape_string($_POST['laDateNaissance']) ."'
, '%d/%m/%Y'),
'"
. mysql_real_escape_string($niveauBac) ."')";
 

Hors ligne

#11 15-05-2010 18:08:54

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] Problème dans une requete mysql en php


$query = "INSERT INTO individu (numIndividu, nomIndividu, prenomIndividu, dateTest, dateNaissance, niveauEtudeInd) VALUES (
'',
'"
. mysql_real_escape_string($nom) ."',
'"
. mysql_real_escape_string($prenom) ."',
CURDATE(),
STR_TO_DATE('"
. mysql_real_escape_string($_POST['laDateNaissance']) ."'
, '%d-%m-%Y'),
'"
. mysql_real_escape_string($niveauBac) ."')";
 

Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#12 15-05-2010 18:13:10

rimbaut
Membre
Inscription : 15-05-2010
Messages : 11

Re : [Résolu] Problème dans une requete mysql en php

Ok merci ça marche. J'ai pas mal galléré. Merci encore

Hors ligne

#13 15-05-2010 20:42:37

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Problème dans une requete mysql en php

mcAllan a écrit :

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

Pied de page des forums