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 :

Insertion incorrecte au niveau d'un champ [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut Insertion incorrecte au niveau d'un champ
    Bonjour,

    Je suis en train de concevoir un site Internet php qui me servirait à gérer ma collection de jeux videos.
    Pour cela j'utilise Dreamweaver MX.

    J'ai créer une page comportant un formulaire d'insertion de donnée vers la base de donnée Mysql.

    Ce formulaire fonctionne bien sauf lorsque je veux insérer une image.

    lorsque le script php d'insertion est le suivant :

    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
    if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form2")) {
    $insertSQL = sprintf("INSERT INTO jeux (titre, date_d_achat, annee, spine_card, boite, code, notice, version, test, note, fun, musique, duree_de_vie, nb_joueurs, date_ins, idediteur, iddeveloppeur, idgenre, systemeID, screen01) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), %s, %s, %s, %s, %s)",
    GetSQLValueString($HTTP_POST_VARS['titrejeux'], "text"),
    GetSQLValueString($HTTP_POST_VARS['datedachat'], "date"),
    GetSQLValueString($HTTP_POST_VARS['anneesortie'], "text"),
    GetSQLValueString($HTTP_POST_VARS['spinecard'], "text"),
    GetSQLValueString($HTTP_POST_VARS['boite'], "int"),
    GetSQLValueString($HTTP_POST_VARS['code'], "text"),
    GetSQLValueString($HTTP_POST_VARS['notice'], "text"),
    GetSQLValueString($HTTP_POST_VARS['version'], "text"),
    GetSQLValueString($HTTP_POST_VARS['ajouttest'], "text"),
    GetSQLValueString($HTTP_POST_VARS['note'], "text"),
    GetSQLValueString($HTTP_POST_VARS['fun'], "text"),
    GetSQLValueString($HTTP_POST_VARS['musique'], "text"),
    GetSQLValueString($HTTP_POST_VARS['duree_de_vie'], "text"),
    GetSQLValueString($HTTP_POST_VARS['nbjoueur'], "text"),
    GetSQLValueString($HTTP_POST_VARS['ab'], "date"),
    GetSQLValueString($HTTP_POST_VARS['editeurjeux'], "int"),
    GetSQLValueString($HTTP_POST_VARS['developpeurjeux'], "int"),
    GetSQLValueString($HTTP_POST_VARS['genrejeu'], "text"),
    GetSQLValueString($HTTP_POST_VARS['systemejeu'], "int"),
    GetSQLValueString($HTTP_POST_VARS['screen1'], "text"));
    le champ sensé contenir le nom du fichier "screen1" (une photo en l'occurrence) se transforme en chiffre
    par exemple je souhaite insérer qqchose comme "c:\site\bb\bdimages\luards004.gif" j'aurais dans la base de donnée non pas "luards004.gif" mais un chiffre...

    Par contre si je remplace le "NOW()" contenu dans "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), %s, %s, %s, %s, %s)"," par un "%s" le problème n'apparait plus.
    Par contre cette fois ci la date du champ "date_ins" ne prend pas la valeur de la date du jour, mais une valeur au hasard...

    Quelqu'un peut-il m'aider svp ? (sachant que je ne maitrise pas des masses le langage informatique)

  2. #2
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Chaque "%s" correspond à une variable que tu trouves en dessous, sous la forme : GetSQLValueString($HTTP_POST_VARS['.........'], ".....").
    Pour moi, il faut enlever "NOW()" ...
    La variable qui sera donc prise en compte pour l'insertion dans le champs "date_ins" de ta table SQL sera :
    "GetSQLValueString($HTTP_POST_VARS['ab'], "date")".
    C'est donc, théoriquement, une variable que tu récupères par rapport à un champs de formulaire nommé "ab" qui a été rempli ou par rapport à un champs "hidden" nommé "ab" de ton formulaire.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Oui en effet la variable "GetSQLValueString($HTTP_POST_VARS['ab'], "date")" sert à renseigner le champs date_ins.
    Mais je voudrais que ce champ (qui est une date) soit renseigné automatiquement à la date du jour. C'est pour cela que j'avais mis "NOW()".

    Mais comme précisé sur mon post précédent, ce NOW() semble perturber la variable "GetSQLValueString($HTTP_POST_VARS['screen1']" qui elle sert à insérer dans le champs "screen01" l'adresse d'une image.

  4. #4
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Ce champs "ab" se trouve où, dans ton formulaire ?
    Comment l'as tu renseigné ?

  5. #5
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Sinon tu peux faire comme ceci :
    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
     
    if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form2")) {
     
    $date_ins = date('Y-m-d'); // Variable $date_ins correspondant à la date du jour au format Anglais pour insertion dans la base
     
    $insertSQL = sprintf("INSERT INTO jeux (titre, date_d_achat, annee, spine_card, boite, code, notice, version, test, note, fun, musique, duree_de_vie, nb_joueurs, date_ins, idediteur, iddeveloppeur, idgenre, systemeID, screen01) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
    GetSQLValueString($HTTP_POST_VARS['titrejeux'], "text"),
    GetSQLValueString($HTTP_POST_VARS['datedachat'], "date"),
    GetSQLValueString($HTTP_POST_VARS['anneesortie'], "text"),
    GetSQLValueString($HTTP_POST_VARS['spinecard'], "text"),
    GetSQLValueString($HTTP_POST_VARS['boite'], "int"),
    GetSQLValueString($HTTP_POST_VARS['code'], "text"),
    GetSQLValueString($HTTP_POST_VARS['notice'], "text"),
    GetSQLValueString($HTTP_POST_VARS['version'], "text"),
    GetSQLValueString($HTTP_POST_VARS['ajouttest'], "text"),
    GetSQLValueString($HTTP_POST_VARS['note'], "text"),
    GetSQLValueString($HTTP_POST_VARS['fun'], "text"),
    GetSQLValueString($HTTP_POST_VARS['musique'], "text"),
    GetSQLValueString($HTTP_POST_VARS['duree_de_vie'], "text"),
    GetSQLValueString($HTTP_POST_VARS['nbjoueur'], "text"),
    $date_ins,
    GetSQLValueString($HTTP_POST_VARS['editeurjeux'], "int"),
    GetSQLValueString($HTTP_POST_VARS['developpeurjeux'], "int"),
    GetSQLValueString($HTTP_POST_VARS['genrejeu'], "text"),
    GetSQLValueString($HTTP_POST_VARS['systemejeu'], "int"),
    GetSQLValueString($HTTP_POST_VARS['screen1'], "text"));

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Salut,

    Le script fonctionne, la date est bien insérée à la date du jour, mais par contre pour le champs censé contenir l'adresse de l'image (screen01) j'obtiens un nombre à 2 chiffres au lieu d'avoir le noms de l'image en .jpg ...

    Le problème ne proviendrait il pas du formulaire ?

  7. #7
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Il faudrait voir le code de ton formulaire ...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    La voici :

    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    <form name="form2" id="form1" method="POST" action="<?php echo $editFormAction; ?>">
      <table class="form" width="75%" border="0" cellpadding="2" cellspacing="2">
        <tr> 
          <td>Titre : </td>
          <td><input class="input1" type="text" name="titrejeux" /></td>
          <td>Note : </td>
          <td><input class="input1" type="text" name="note" /></td>
          <td>Spine-card :</td>
          <td><input class="input1" ype="text" name="spinecard" /></td>
        </tr>
        <tr> 
          <td>Année de sortie : </td>
          <td><input class="input1" type="text" name="anneesortie" /></td>
          <td>Fun : </td>
          <td><input class="input1" type="text" name="fun" /></td>
          <td>Notice :</td>
          <td><input class="input1" type="text" name="notice" /></td>
        </tr>
        <tr> 
          <td>Nb de joueur : </td>
          <td><input class="input1" type="text" name="nbjoueur" /></td>
          <td>Musique : </td>
          <td><input class="input1" type="text" name="musique" /></td>
          <td>Version :</td>
          <td><input class="input1" type="text" name="version" /></td>
        </tr>
        <tr> 
          <td>Date d'achat :</td>
          <td><input class="input1" type="text" name="datedachat" /></td>
          <td>Dur&eacute;e de vie : </td>
          <td><input class="input1" type="text" name="duree_de_vie" /></td>
          <td>Code</td>
          <td><input class="input1" type="text" name="code" /></td>
        </tr>
        <tr>
          <td>Boite :</td>
          <td><input class="input1" type="text" name="boite" /></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table>
      <br/>
      <input name="ab" type="hidden" value="<?php echo $row_rs_jeux['date_ins']; ?>">
      <br/>
      <table class="form" width="80%" border="0" cellpadding="2" cellspacing="2">
        <tr> 
          <td>Editeur :</td>
          <td><select class="input1" name="editeurjeux">
              <?php
    do {  
    ?>
              <option value="<?php echo $row_rs_editeur['id']?>"><?php echo $row_rs_editeur['nom_edi']?></option>
              <?php
    } while ($row_rs_editeur = mysql_fetch_assoc($rs_editeur));
      $rows = mysql_num_rows($rs_editeur);
      if($rows > 0) {
          mysql_data_seek($rs_editeur, 0);
    	  $row_rs_editeur = mysql_fetch_assoc($rs_editeur);
      }
    ?>
            </select><br/>
            <span class="input3"> <a href="ajout_editeur.php" target="_blank">ajout editeur</a></span></td>
          <td>D&eacute;veloppeur :</td>
          <td> <select class="input1" name="developpeurjeux">
              <?php
    do {  
    ?>
              <option value="<?php echo $row_rs_deve['id']?>"><?php echo $row_rs_deve['nom_dev']?></option>
              <?php
    } while ($row_rs_deve = mysql_fetch_assoc($rs_deve));
      $rows = mysql_num_rows($rs_deve);
      if($rows > 0) {
          mysql_data_seek($rs_deve, 0);
    	  $row_rs_deve = mysql_fetch_assoc($rs_deve);
      }
    ?>
            </select>
            <br/>
            <a href="ajout_developpeur.php" target="_parent"><span class="input3">ajout d&eacute;veloppeur</span></a></td>
          <td>Syst&egrave;me :</td>
          <td><select class="input1" name="systemejeu">
              <?php
    do {  
    ?>
              <option value="<?php echo $row_rs_systeme['id']?>"><?php echo $row_rs_systeme['nom_system']?></option>
              <?php
    } while ($row_rs_systeme = mysql_fetch_assoc($rs_systeme));
      $rows = mysql_num_rows($rs_systeme);
      if($rows > 0) {
          mysql_data_seek($rs_systeme, 0);
    	  $row_rs_systeme = mysql_fetch_assoc($rs_systeme);
      }
    ?>
            </select> <br/>
            <a href="ajout_systeme.php" target="_parent"><span class="input3">ajout syst&egrave;me</span></a></td>
          <td>Genre :</td>
          <td><select class="input1" name="genrejeu" id="genrejeu">
              <?php
    do {  
    ?>
              <option value="<?php echo $row_rs_genre['id']?>"><?php echo $row_rs_genre['nom_genre']?></option>
              <?php
    } while ($row_rs_genre = mysql_fetch_assoc($rs_genre));
      $rows = mysql_num_rows($rs_genre);
      if($rows > 0) {
          mysql_data_seek($rs_genre, 0);
    	  $row_rs_genre = mysql_fetch_assoc($rs_genre);
      }
    ?>
            </select><br>
            <a href="ajout_genre.php"><span class="input3">ajout genre</span></a></td>
        </tr>
        <tr> 
          <td colspan="8">Test : <br/> <br/> <textarea name="ajouttest" cols="100" rows="30" class="input1"></textarea></td>
        </tr>
      </table>
      <input name="screen1" type="FILE" value="">
      <br/>
     
      <input type="submit" name="Submit" value="Envoyer" />
      <br/>
      <input type="hidden" name="MM_insert" value="form2">
    </form>

  9. #9
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Le fichier image est déjà présent sur ton serveur ou faut-il le télécharger ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    non le fichier n'est pas présent sur le serveur. Je l'upload a posteriori.

    Voici une extrait de la table :

    date_ins idediteur iddeveloppeur idauteur idgenre systemeID screen01

    08/04/08 23 3 10 1 15 metroid_zero_mission_cover.jpg
    12/04/08 127 25 10 1 5 13


    La 1ère ligne est correcte, c'est lorsque il n'y a pas le "NOW()" dans la requete d'insertion.
    La seconde ligne elle, est celle où je cherche à mettre le "NOW()".
    D'ailleurs je viens de constater une autre erreur, c'est le "127" pour le champs "idediteur". Car dans la table "editeur" il n'y en a pas avec l'id 127...

  11. #11
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Donc ton problème est résolu puisque avec le code que je t'es donné il n'y a plus le "NOW()" ...

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Désolé j'ai oublié de préciser que ton script produit la même erreur.

  13. #13
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Dans ton formulaire remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="ab" type="hidden" value="<?php echo $row_rs_jeux['date_ins']; ?>">
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="ab" type="hidden" value="<?php echo date('Y-m-d') ; ?>">
    Et dans ta requète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    GetSQLValueString($HTTP_POST_VARS['nbjoueur'], "text"),
    $date_ins,
    GetSQLValueString($HTTP_POST_VARS['editeurjeux'], "int"),
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    GetSQLValueString($HTTP_POST_VARS['nbjoueur'], "text"),
    GetSQLValueString($HTTP_POST_VARS['ab'], "date"),
    GetSQLValueString($HTTP_POST_VARS['editeurjeux'], "int"),
    Tu supprimes le "NOW()" et tu mets un "%s" à la place, tu dois donc avoir 20 "%s"

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Ok c'est fait, mais lorsque je clique sur le bouton "envoyer" j'obtiens désormais le message suivant :
    "Erreur de syntaxe près de '' à la ligne 1"

  15. #15
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Postes juste la ligne correspondant à la requete sql ...

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Ah non c'est bon !
    Ca marche

    Un grand merci à toi !

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

Discussions similaires

  1. [MySQL] Insertion incorrecte de Valeur de champ formulaire
    Par marispark dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/08/2010, 00h05
  2. INSERT à partir d'un SELECT avec champ SERIAL
    Par bruno.wiesen dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/03/2007, 12h07
  3. Réponses: 3
    Dernier message: 09/01/2006, 17h19
  4. Réponses: 2
    Dernier message: 07/11/2005, 19h54
  5. Insertion d'un nombre dans un champs varchar ?
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 07/04/2005, 16h17

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