Problème INSERT

ViPHP
ViPHP | 2291 Messages

09 août 2006, 17:20

Bonjour,

J'essaye d'introduire des données dans une TABLE mais cela fonctionne bizarement
$date = $_POST["date_realisation"];
$date2 = $_POST["date_encodage"];
$user = $_POST["user"];
$ref = $_POST["ref"];
$adr = $_POST["adr"];
$code = $_POST["postal"];
$localite = $_POST["loca"];
$address_mac = $_POST['mac'].":".$_POST['mac'].":".$_POST['mac'].":".$_POST['mac'].":".$_POST['mac'].":".$_POST['mac'] ;
$tech = $_POST["technicien"];
$heure_debut = $_POST['ha1'].":".$_POST['ha2'];
$heure_fin = $_POST['hd1'].":".$_POST['hd2'];
$commentaire = $_POST['com'];








/********************************************************************************
Insertion dans la base
********************************************************************************/

                                        $sql="INSERT INTO prestation_beta (date_realisation,  date_encodage, nom_utilisateur, ref_client, 
adr_client, code_postal, commune, adr_modem, technicien,heure_debut, heure_fin, commentaire) VALUES";
                                        $sql= "('$date', '$date2', '$user', '$ref', '$adr', '$code', '$localite
', '$address_mac', '$tech', '$heure_debut', '$heure_fin', '$commentaire')";

                                        $insert = mysql_query($sql) or die (mysql_error());
Il ne prend pas les champs date, et dans d'autre champs j'ai Array au lieux des données encoder ????

Qui pourrais me dire ou est mon erreur

Merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

09 août 2006, 17:23

Moi, je remplacerais :
$sql = "('$date', '$date2', '$user', '$ref', '$adr', '$code', '$localite', '$address_mac', '$tech', '$heure_debut', '$heure_fin', '$commentaire')"; 
par :
$sql .= "('$date', '$date2', '$user', '$ref', '$adr', '$code', '$localite', '$address_mac', '$tech', '$heure_debut', '$heure_fin', '$commentaire')"; 
:wink:
Et n'oublie pas de prévoir une espace après VALUES...

ViPHP
ViPHP | 2291 Messages

09 août 2006, 17:28

Moi, je remplacerais :
$sql = "('$date', '$date2', '$user', '$ref', '$adr', '$code', '$localite', '$address_mac', '$tech', '$heure_debut', '$heure_fin', '$commentaire')"; 
par :
$sql .= "('$date', '$date2', '$user', '$ref', '$adr', '$code', '$localite', '$address_mac', '$tech', '$heure_debut', '$heure_fin', '$commentaire')"; 
:wink:
Et n'oublie pas de prévoir une espace après VALUES...
Merci mais cela ne change rien :oops:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 353 Messages

09 août 2006, 17:38

Pour ce qui est des dates , vérifier le type de champ que tu as mis dans ta base de donnée !! si tu as mis DATE , tu dois formater la date que tu veux y introduire de la façon suivante : yyyy-mm-dd !

Ensuite pour le problème où tu as ARRAY() il faut que tu approfondisse un peu !!

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

09 août 2006, 17:38

Pourtant, cette deuxième ligne remplaçait la première au lieu de s'y concaténer...


Bon, si on concatène directement et si on sort les variables de la chaîne de caractères, on obtient :
$sql="INSERT INTO prestation_beta (date_realisation,
                                         date_encodage,
                                         nom_utilisateur,
                                         ref_client,
                                         adr_client,
                                         code_postal,
                                         commune,
                                         adr_modem,
                                         technicien,
                                         heure_debut,
                                         heure_fin,
                                         commentaire)
            VALUES                      ('".$date1."',
                                         '".$date2."',                                                          
                                         '".$user."',
                                         '".$ref."',
                                         '".$adr."',
                                         '".$code."',
                                         '".$localite."',
                                         '".$address_mac."',
                                         '".$tech."',
                                         '".$heure_debut."',
                                         '".$heure_fin."',
                                         '".$commentaire."')"; 
Ça donne quelque chose ?

NB : J'ai aussi remplacé $date par $date1, c'est plus sûr...

ViPHP
ViPHP | 2291 Messages

09 août 2006, 17:38

Oui absolument ca je savais :lol:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 2291 Messages

09 août 2006, 17:48

Pourtant, cette deuxième ligne remplaçait la première au lieu de s'y concaténer...


Bon, si on concatène directement et si on sort les variables de la chaîne de caractères, on obtient :
$sql="INSERT INTO prestation_beta (date_realisation,
                                         date_encodage,
                                         nom_utilisateur,
                                         ref_client,
                                         adr_client,
                                         code_postal,
                                         commune,
                                         adr_modem,
                                         technicien,
                                         heure_debut,
                                         heure_fin,
                                         commentaire)
            VALUES                      ('".$date1."',
                                         '".$date2."',                                                          
                                         '".$user."',
                                         '".$ref."',
                                         '".$adr."',
                                         '".$code."',
                                         '".$localite."',
                                         '".$address_mac."',
                                         '".$tech."',
                                         '".$heure_debut."',
                                         '".$heure_fin."',
                                         '".$commentaire."')"; 
Ça donne quelque chose ?

NB : J'ai aussi remplacé $date par $date1, c'est plus sûr...
Et bien non sorry :oops:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

09 août 2006, 17:50

Il ne prend pas les champs date, et dans d'autre champs j'ai Array au lieux des données encoder ????
  • Et ton champ $_POST['date_encodage'] il contient quoi ? Une date préparée pour MySQL ?
  • Est-ce que tu ne devrais pas verifier le contenu de tes variables avant de les insérer dans la requête ?

    Array c'est ce qui arrive quand on fait echo $tableau; avec une variable de type tableau.

    Fais donc un var_dump($mavar); avec toutes tes variables pour voir ce qu'elles ont dans le ventre.
[/color]
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 332 Messages

09 août 2006, 17:55

fais un echo de ta variable $sql puis copie la syntaxe affichée dans phpMyAdmin.

Tu auras un message d'erreur un peu plus explicite

ViPHP
ViPHP | 2291 Messages

09 août 2006, 18:30

Pourtant, cette deuxième ligne remplaçait la première au lieu de s'y concaténer...


Bon, si on concatène directement et si on sort les variables de la chaîne de caractères, on obtient :
$sql="INSERT INTO prestation_beta (date_realisation,
                                         date_encodage,
                                         nom_utilisateur,
                                         ref_client,
                                         adr_client,
                                         code_postal,
                                         commune,
                                         adr_modem,
                                         technicien,
                                         heure_debut,
                                         heure_fin,
                                         commentaire)
            VALUES                      ('".$date1."',
                                         '".$date2."',                                                          
                                         '".$user."',
                                         '".$ref."',
                                         '".$adr."',
                                         '".$code."',
                                         '".$localite."',
                                         '".$address_mac."',
                                         '".$tech."',
                                         '".$heure_debut."',
                                         '".$heure_fin."',
                                         '".$commentaire."')"; 
Ça donne quelque chose ?

NB : J'ai aussi remplacé $date par $date1, c'est plus sûr...
Et bien non sorry :oops:

Eta alors pour en revenir un sujet sur lequel ns avions déjà discuté pais pas fini :lol:
ici je déclare par exemple
$ref = ['ref'];
et en réalité le champs ref de mon form est nommé exactememnt comme ceci
name = ref[1] et idem pour les autres champs
La technique est telle correct ?

Merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 2291 Messages

09 août 2006, 18:41

Il ne prend pas les champs date, et dans d'autre champs j'ai Array au lieux des données encoder ????
  • Et ton champ $_POST['date_encodage'] il contient quoi ? Une date préparée pour MySQL ?
  • Est-ce que tu ne devrais pas verifier le contenu de tes variables avant de les insérer dans la requête ?

    Array c'est ce qui arrive quand on fait echo $tableau; avec une variable de type tableau.

    Fais donc un var_dump($mavar); avec toutes tes variables pour voir ce qu'elles ont dans le ventre.
[/color]
en fessant comme tu me conseille volà par exemple se qu'il me retourne

Code : Tout sélectionner

array(1) { [1]=> string(0) "" } string(1) ":" string(1) ":" string(0) "" string(35) "Array:Array:Array:Array:Array:Array" array(1) { [1]=> string(0) "" } array(1) { [1]=> string(0) "" } array(1) { [1]=> string(0) "" } array(1) { [1]=> string(0) "" }
cela voudrais dire quoi ?
Merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

09 août 2006, 19:49

Peux tu faire le code suivant stp ? Et nous dire ce que tu obtiens ?
echo '<pre>';
var_dump($_POST);
echo '</pre>';
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

ViPHP
ViPHP | 2291 Messages

09 août 2006, 19:53

Peux tu faire le code suivant stp ? Et nous dire ce que tu obtiens ?
echo '<pre>';
var_dump($_POST);
echo '</pre>';
J'obtiens ceci

Code : Tout sélectionner

NULL string(1) ":" string(1) ":" NULL string(5) ":::::" NULL NULL NULL NULL NULL NULL array(0) { }
Merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.