IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Colonnes sur un livre d'or [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut [SQL] Colonnes sur un livre d'or
    Bonjour,
    j'ai récupérer récement un script pour générer un livre d'or mais lors de l'excusion de celui-ci j'ai un message d'érreur.

    j'ai cette erreur ( pour info j'ai fais un echo de la requete sql pour avoir la 1er ligne)

    INSERT INTO livre_or VALUES("","test", "value@test.fr", "2009-03-15 13:59:32", "encore une galère")

    Erreur SQL !INSERT INTO livre_or VALUES("","test", "value@test.fr", "2009-03-15 13:59:32", "encore une galère")
    Incorrect integer value: '' for column 'id' at row 1
    Je vous remercie pour l'aide que vous pouriez m'apporter car j'arrive pas a trouver d'oùcela viens malgrès mes recherche avec mon ami Google

    Runcafre91

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Enlève les "" qui correspond à l'id (avec la virgule qui suit).

  3. #3
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Le premier élément est, en effet, un entier qui est demandé.

    Cependant, tu essaies de lui passer une chaîne de caractère vide.

    Incorrect integer value: ''
    l'Entier "chaine de caractère vide" n'est pas correct.

    Si ta clef primaire est en auto increment, supprimes tout simplement les guillemets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO livre_or VALUES(,"test", "value@test.fr", "2009-03-15 13:59:32", "encore une galère")
    Si ce n'est pas le cas, récupère le max de la colonne ID et incrémente le de 1.

    EDIT : La syntaxe d'un INSERT est ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO nomTable
    (nomChamps1, nomChamps2, ..., nomChampsN)
    VALUES
    (valeurChamps1, valeurChamps2, ..., valeurChampsN)
    Bien qu'indiquer les champs qui seront saisi est facultatif, cela te permet de bien maîtriser les informations que tu rentres dans ta BdD.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Prend la solution de Deallyra, la mienne ne fonctionne que seulement si on précise les champs à remplir. Enfin si elle repasse, elle t'expliquera mieux que moi.

    Edit : déjà expliqué en haut.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Le premier élément est, en effet, un entier qui est demandé.

    Cependant, tu essaies de lui passer une chaîne de caractère vide.



    l'Entier "chaine de caractère vide" n'est pas correct.

    Si ta clef primaire est en auto increment, supprimes tout simplement les guillemets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO livre_or VALUES(,"test", "value@test.fr", "2009-03-15 13:59:32", "encore une galère")
    Si ce n'est pas le cas, récupère le max de la colonne ID et incrémente le de 1.

    EDIT : La syntaxe d'un INSERT est ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO nomTable
    (nomChamps1, nomChamps2, ..., nomChampsN)
    VALUES
    (valeurChamps1, valeurChamps2, ..., valeurChampsN)
    Bien qu'indiquer les champs qui seront saisi est facultatif, cela te permet de bien maîtriser les informations que tu rentres dans ta BdD.
    RE,
    Merci pour vos réponses mais cette solution j'avais déja testé ce qui me donne l'erreur suivant :

    INSERT INTO livre_or VALUES("marie", "maria@guetali.re", "2009-03-15 14:54:24", "Test sur les insertions dans un livre d\\\'or")

    Erreur SQL !INSERT INTO livre_or VALUES("marie", "maria@guetali.re", "2009-03-15 14:54:24", "Test sur les insertions dans un livre d\\\'or")
    Column count doesn't match value count at row 1
    La franchement je sias pas d'ou cela vient

    Runcafre91

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Regarde bien ce qu'a ecrit Deallyra comme requete.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    INSERT INTO livre_or VALUES("marie", "maria@guetali.re", "2009-03-15 14:54:24", "Test sur les insertions dans un livre d\\\'or")

    Erreur SQL !INSERT INTO livre_or VALUES("marie", "maria@guetali.re", "2009-03-15 14:54:24", "Test sur les insertions dans un livre d\\\'or")
    Column count doesn't match value count at row 1
    Je persiste toujours à dire que tu rentres ta chaine de caractères comme un entier

    De plus, autant qu'avant tu avais le bon nombre de champs renseigné, ce n'est désormais plus le cas.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Je persiste toujours à dire que tu rentres ta chaine de caractères comme un entier

    De plus, autant qu'avant tu avais le bon nombre de champs renseigné, ce n'est désormais plus le cas.
    RE, voici mon code modifié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <?php  
     
    if (isset($_POST['go']) && $_POST['go']=='Signer') { 
     
       if ((isset($_POST['auteur'])) && (isset($_POST['email'])) && (isset($_POST['message']))) { 
          // si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base 
          if ((!empty($_POST['auteur'])) && (!empty($_POST['email'])) && (!empty($_POST['message']))) { 
             // on verifie le format de l'adresse E-mail saisie 
             $test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']); 
             if ($test_mail) { 
                // on se connecte à notre base 
     
                include ('inc_conexion.php'); 
     
     
                // on prepare notre requête d'insertion des données 
                $sql = 'INSERT INTO livre_or VALUES(,"'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['message']).'")'; 
     
     
     echo '<pre>'.$sql.'</pre>';
     
                // on lance la requête 
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
     
                // on ferme la connexion à la base de données 
                mysql_close(); 
     
                // on redirige le visiteur vers l'accueil du livre d'or 
                header('location: index.php'); 
     
                // on termine le script courant 
                exit(); 
             } 
             else { 
                $erreur = 'Votre adresse E-mail est invalide.'; 
             } 
          } 
          else { 
             $erreur = 'Au moins un des champs est vide.'; 
          } 
       } 
       else { 
          $erreur = 'Les variables nécessaires au script ne sont pas définies.'; 
       }  
    }  
    // on entre dans le cas où l'un des trois (au moins) 
    //champs n'a pas été rempli ou si l'adresse E-mail n'a pas été validée
    //(en particulier, lorsque le visiteur charge pour la première fois cette page, 
    //vu que les 3 champs sont vides, le formulaire s'affichera). On remarque également 
    //que l'on met la valeur de chaque champs dans le value (c'est cela qui fait que si 
    //le visiteur ne remplit pas entièrement le formulaire et qu'il clique sur "Signer", 
    //et bien lorsqu'il sera redirigé vers le formulaire, ce qu'il aura déjà saisi sera conservé  
    ?> 
    <html>
    <head>
    <title>Insertion d'une nouvelle signature</title>
    </head>
     
    <body>
     
    <form action="insert_signature.php" method="post">
    <table>
    <tr><td>
    <span class="gras">Auteur :</span>
    </td><td>
    <input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Adresse E-mail :</span>
    </td><td>
    <input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Votre message :</span>
    </td><td>
    <textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
    </td></tr><tr><td><td align="right">
    <input type="submit" name="go" value="Signer">
    </td></tr></table>
    </form>
    <?php
     
    if (isset($erreur)) echo '<br /><br />',$erreur;  
    ?>
     
    </body>
    </html>
    erreur que j'ai
    INSERT INTO livre_or VALUES(,"test", "re@re.dix", "2009-03-15 15:35:53", "Nouveau test avec obs ")
    Erreur SQL !INSERT INTO livre_or VALUES(,"test", "re@re.dix", "2009-03-15 15:35:53", "Nouveau test avec obs ")
    Erreur de syntaxe près de '"test", "re@re.dix", "2009-03-15 15:35:53", "Nouveau test avec obs ")' à la ligne 1
    J'ai fais plusieurs essaie selon vos observation et toujour des erreurs



    Runcafre91

  9. #9
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Ok, je me suis trompée ^^

    Mais tu n'as pas suivi toutes mes consignes :p

    INSERT INTO nomTable
    (nomChamps1, nomChamps2, ..., nomChampsN)
    VALUES
    (valeurChamps1, valeurChamps2, ..., valeurChampsN)
    Utilises cette syntaxe, ça marchera...

    En gros, tu renseignes tout sauf l'ID
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Je te conseille de prendre la méthode que vient de dire Deallyra.

    Je rajouterai : si la variable est un entier, pas de guillemets, si c'est une chaîne de caractères, il faut des guillemets. Je le dis, car je fais souvent des fautes là-dessus.

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Ok, je me suis trompée ^^

    Mais tu n'as pas suivi toutes mes consignes :p



    Utilises cette syntaxe, ça marchera...

    En gros, tu renseignes tout sauf l'ID
    Re,

    Merci , de votre aide, j'ai ajouté le bout de code dans mon script mais j'ai une erreur voici le bour de code concerné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
              // on prepare notre requête d'insertion des données 
                $sql = INSERT INTO livre_or
    			(auteur, email, date, message)
    		VALUES
    			('.mysql_escape_string($_POST['auteur']).', '.mysql_escape_string($_POST['email']).', '.date("Y-m-d H:i:s").', '.mysql_escape_string($_POST['message']).');
    C'est à la ligne 17 : $sql = INSERT INTO livre_or


    Parse error: parse error in E:\Program Files\EasyPHP 3.0\www\zioman\livreor\insert_signature.php on line 17
    Est ce que j'ai par erreur oublier des éléments

    Runcafre91

  12. #12
    Invité
    Invité(e)
    Par défaut
    Mets tout sur la même ligne. Et n'oublies pas les guillemets autour de ta requête.

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Adenora Voir le message
    Mets tout sur la même ligne. Et n'oublies pas les guillemets autour de ta requête.
    Re,

    Merci c'est ok et cela fonctionne correctement
    Pour ce qui veulent voici le code modifié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    <?php  
     
    if (isset($_POST['go']) && $_POST['go']=='Signer') { 
     
       if ((isset($_POST['auteur'])) && (isset($_POST['email'])) && (isset($_POST['message']))) { 
          // si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base 
          if ((!empty($_POST['auteur'])) && (!empty($_POST['email'])) && (!empty($_POST['message']))) { 
             // on verifie le format de l'adresse E-mail saisie 
             $test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']); 
             if ($test_mail) { 
                // on se connecte à notre base 
     
                include ('inc_conexion.php'); 
     
     
                // on prepare notre requête d'insertion des données 
                $sql = 'INSERT INTO livre_or(auteur, email, date_signature, message)VALUES("'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['message']).'")';
     
     echo '<pre>'.$sql.'</pre>';
     
                // on lance la requête 
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
     
                // on ferme la connexion à la base de données 
                mysql_close(); 
     
                // on redirige le visiteur vers l'accueil du livre d'or 
                header('location: index.php'); 
     
                // on termine le script courant 
                exit(); 
             } 
             else { 
                $erreur = 'Votre adresse E-mail est invalide.'; 
             } 
          } 
          else { 
             $erreur = 'Au moins un des champs est vide.'; 
          } 
       } 
       else { 
          $erreur = 'Les variables nécessaires au script ne sont pas définies.'; 
       }  
    }  
    // on entre dans le cas où l'un des trois (au moins) 
    //champs n'a pas été rempli ou si l'adresse E-mail n'a pas été validée
    //(en particulier, lorsque le visiteur charge pour la première fois cette page, 
    //vu que les 3 champs sont vides, le formulaire s'affichera). On remarque également 
    //que l'on met la valeur de chaque champs dans le value (c'est cela qui fait que si 
    //le visiteur ne remplit pas entièrement le formulaire et qu'il clique sur "Signer", 
    //et bien lorsqu'il sera redirigé vers le formulaire, ce qu'il aura déjà saisi sera conservé  
    ?> 
    <html>
    <head>
    <title>Insertion d'une nouvelle signature</title>
    </head>
     
    <body>
     
    <form action="insert_signature.php" method="post">
    <table>
    <tr><td>
    <span class="gras">Auteur :</span>
    </td><td>
    <input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Adresse E-mail :</span>
    </td><td>
    <input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Votre message :</span>
    </td><td>
    <textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
    </td></tr><tr><td><td align="right">
    <input type="submit" name="go" value="Signer">
    </td></tr></table>
    </form>
    <?php
     
    if (isset($erreur)) echo '<br /><br />',$erreur;  
    ?>
     
    </body>
    </html>
    Bon courage

    Runcafre91

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Linq To Sql, trie sur une colonne text
    Par Oberown dans le forum Linq
    Réponses: 4
    Dernier message: 10/12/2011, 14h51
  2. Requete SQL calcule sur les colonnes
    Par rose-rose dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 19/05/2011, 09h47
  3. Réponses: 1
    Dernier message: 01/08/2008, 19h51
  4. SQL - ORACLE : Extraction Nom Colonnes sur 1 seule ligne
    Par Mimile28 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/09/2007, 15h01
  5. [MS-SQL]requete sur 3 tables
    Par pascalT dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/04/2003, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo