Problème ajout en php

emy -  
 emy -
salut, je suis entrain de concevoir une application en php/mysql , mon prob c'est que quand je veux insérer un nouvel enregistrement dans la base, un message s'affiche comme quoi "L'insertion a ete correctement effectuée", quand je reviens à ma base de donnée, je trouve une nouvelle ligne insérée mais vide. voila mon script:

<?php
$con=mysql_connect("localhost","root","");
mysql_select_db("new_base",$con);

$ISBN=isset($_POST['IS']);
$CODEED=isset($_GET['CE']);
$NOMLIV=isset($_POST['NL']);
$AUTEUR=isset($_POST['AUT']);
$NUMSERIE=isset($_POST['NS']);
$NB_EXEMPLAIRE=isset($_POST['NE']);
$MOCLE=isset($_POST['motcle']);

$sql = "INSERT INTO livre VALUES ('$ISBN','$CODEED','$NOMLIV','$AUTEUR','$NUMSERIE','$NB_EXEMPLAIRE','$MOCLE')";
$requete = mysql_query($sql, $con) or die( mysql_error() ) ;
if($sql)
{
echo("L'insertion a ete correctement effectuee") ;
}
else
{
echo("L'insertion à echouee") ;
}

?>

25 réponses

  • 1
  • 2
  1. Leviathan49 Messages postés 267 Statut Membre 70
     
    Le problème viens de :
    $ISBN=isset($_POST['IS']); 
    à mon avis.
    issset revoie un booléen (0 ou 1, false ou true ) et pas un nombre la syntaxe correcte serait juste
    $ISBN=$_POST['IS'];

    Tu peux mettre une conditions avec
    if($ISBN=isset($_POST['IS']))
    si tu veux traiter le cas où
    $_POST['IS']
    n'est pas initialisé
    1
    1. okuni Messages postés 1325 Statut Membre 126
       
      effectivement c'est bizarre mais cela devrait se voir dans la base de donnée non ?
      0
    2. Leviathan49 Messages postés 267 Statut Membre 70
       
      Non, pas vraiment ta base de données considère ça comme un 1, je suppose qu'il existe quelque chose avec un ISDN de 1, par exemple si ta variable $_POST['IS'] existe.
      0
  2. Krysstof Messages postés 1659 Statut Membre 295
     
    pour ce qui est de la requete SQL en elle meme, elle me parait correcte, par contre fait un peu de débogage :

    affiche le contenu de tes variables sur la page, pour etre sur qu'il y a bien des valeur dans ton Post.
    si les vairable sont vides, cela peut expliquer la ligne vide dans la base.

    ensuite je ne comprend pas le test :
    if($sql)

    $sql c'est ta chaine de caractere de la requete, donc if($sql) sera toujours vrai, tu ne voulais pas plutot mettre "if($requete) "
    0
  3. emy
     
    oé exact mais sa marche tjrs pas

    <?php
    $con=mysql_connect("localhost","root","");
    mysql_select_db("new_base",$con);

    $ISBN=isset($_POST['IS']);
    $CODEED=isset($_GET['CE']);
    $NOMLIV=isset($_POST['NL']);
    $AUTEUR=isset($_POST['AUT']);
    $NUMSERIE=isset($_POST['NS']);
    $NB_EXEMPLAIRE=isset($_POST['NE']);
    $MOCLE=isset($_POST['motcle']);

    $sql = "INSERT INTO livre VALUES ('$ISBN','$CODEED','$NOMLIV','$AUTEUR','$NUMSERIE','$NB_EXEMPLAIRE','$MOCLE')";
    $requete = mysql_query($sql, $con) or die( mysql_error() ) ;
    if($requete)
    {
    echo("L'insertion a ete correctement effectuee") ;
    }
    else
    {
    echo("L'insertion à echouee") ;
    }?>
    apres l'insertion de la ligne vide , qd je veux réinserer un autre enregistrement avec un autre identifiant un msg s'affiche comme koi Duplicata du champ '' pour la clef 'PRIMARY' or que moi je n'ai pas inserer 2 clé similaire
    0
  4. Krysstof Messages postés 1659 Statut Membre 295
     
    Essaye de faire des réponse, pas des commentaires à ta question, on va se perdre sinon... :)

    donne le schéma de ta table. tu as une colonne clé primaire, et tu essaye d'insérer une ligne avec la meme clé.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. emy
     
    non c pas ça , qd j'insere un nouvel enregistrement , une ligne vide se rajoute ds ma base apres si j insere un autre enregistrment avec une nouvelle clé qui ne figue pas deja dans la base, un message s'affiche comme quoi la clé est dupliquée. donc j'ai un probleme qd j'isere ( sa me donne une ligne vide) et qd je réinsere (duplicata)
    0
    1. Krysstof Messages postés 1659 Statut Membre 295
       
      bon...
      ton duplicata vient du fait qu'une de tes valeur est vide, mais pas vraiment, c'est la valeur chaine vide : ''

      c'est une valeur valide pour le moteur de base de donnée, et donc a la 2eme insersion, tu as une erreur de duplicata car tu ne peux pas insérer 2 fois '' dans une colone en clé primaire.

      donc, voila mon deal... tu postes sur ce forum ce que je t'ai demandé dès le début :
      le contenu de tes variables POST, car clairement il y a un problème là. Et je continue à t'aider.

      Sinon, si tu veux continuer à discuter et tourner autour du pot, ce sera sans moi.
      0
  7. emy
     
    ben qd j'enleve le isset il affiche comme erreur "indeclared index" ds ttes les lignes où g declaré les variables sans mettre isset et qd je mets isset l'erreur ne s'affiche plus et une ligne vide s'insère, je sais que isset ne devrait pas etre utilisé comme je le fais moi mais c'est ma solution pour que le message d'erreur ne s'affiche pas!!
    0
    1. maka54 Messages postés 721 Statut Membre 80
       
      isset n'y est pour rien

      tes POST et Get ne récupère aucune valeur , isset te les transforme en booleen, donc 0 a priori et du coup ta requete marche, si tu les enleves, comme ton index ne vaut rien, ta requete plante, essayes deja de recuperer tes valeurs (tu test en faisant echo de tes POST
      0
    2. Leviathan49 Messages postés 267 Statut Membre 70
       
      Si tu as des erreurs de type indeclared index c'est que certain des champs de ton formulaire n'ont pas été remplis ou que tu as confondu $_GET et $_POST (oui je l'ai déjà vu). Donc a regarder de ce coté. Si des champs PEUVENT être nuls tu peut faire un truc du genre :
      if(isset($_POST['XXXXX']))
      {
           $XXXX=$_POST['XXXXX'];
      }
      else
      {
          $XXXX=""; // ou $XXXX=0; selon les cas
      }

      De plus ce n'est pas une solution ce que tu utilise vu que ce que entre dans ton formulaire n'ira JAMAIS dans ta base de données, les isset ne renvoyant que des booléen je l'ai déjà dit.

      Montre nous ce que contiens ta variable $_POST, avec un
      print_r($_POST);
      placé au début de ton code par exemple.
      0
  8. emy
     
    je fais comme ça echo "$ISB"; apres le post ?
    0
  9. maka54 Messages postés 721 Statut Membre 80
     
    poste ton formulaire , l'erreur est certainement dedans
    0
  10. emy
     
    <?php
    $con=mysql_connect("localhost","root","");
    mysql_select_db("new_base",$con);

    $ISB=isset($_POST['IS']);
    $CODEE=isset($_GET['CE']);
    $NOMLI=isset($_POST['NL']);
    $AUTEU=isset($_POST['AUT']);
    $NUMSERI=isset($_POST['NS']);
    $NB_EXEMPLAIR=isset($_POST['NE']);
    $MOCL=isset($_POST['motcle']);

    $sql = "INSERT INTO livre VALUES ('$ISB','$CODEE','$NOMLI','$AUTEU','$NUMSERI','$NB_EXEMPLAIR','$MOCL')";
    $requete = mysql_query($sql, $con) or die( mysql_error() ) ;
    if($requete)
    {
    echo("L'insertion a ete correctement effectuee") ;
    }
    else
    {
    echo("L'insertion à echouee") ;
    }
    include"disconnect.php";
    ?>
    0
  11. maka54 Messages postés 721 Statut Membre 80
     
    non, pas çà, le formulaire, tes $_POST viennent bien d'un formulaire ?
    0
  12. emy
     
    <p align="center" class="Style39">Ajout Livre </p>
    <p> </p>
    <p> </p>
    <form>
    <table width="209" height="468" border="0" align="center" cellspacing="20">
    <tr>
    <td width="49"><div align="center"><span class="Style45">ISBN</span> </div></td>
    <td width="144"><label>
    <input type="text" name="IS" />
    </label></td>
    </tr>
    <tr>
    <td><p align="center" class="Style45">Code Edition</p></td>
    <td><label></label>
    <select name="CODEED">

    <option>SLECTIONNER LE CODE D EDITION</option>
    <?php

    include "connect.php";

    $req_edit=mysql_query("SELECT DISTINCT CODEED FROM edition");

    while ($data_edit=mysql_fetch_array($req_edit)){
    $CODEED=$data_edit['CODEED'];

    echo "<optgroup label=\"$CODEED\">";

    echo "<option value=\"$CODEED\">$CODEED</option>";
    echo "</optgroup>";
    }
    include "disconnect.php";
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td><div align="center"><span class="Style45">Nom </span></div></td>
    <td><label>
    <input type="text" name="NL" />
    </label></td>
    </tr>
    <tr>
    <td class="Style41"><div align="center" class="Style45">Auteur</div></td>
    <td><label>
    <input type="text" name="AUT" />
    </label></td>
    </tr>
    <tr>
    <td class="Style41"><div align="center" class="Style45">Numéro Série </div></td>
    <td><div align="center">
    <label>
    <input type="text" name="NS" />
    </label>
    </div></td>
    </tr>
    <tr>
    <td><div align="center"><span class="Style45">Nombre Exemplaire</span> </div></td>
    <td><label>
    <input type="text" name="NE" />
    </label></td>
    </tr>
    <tr>
    <td class="Style45"><div align="center">Mot Clé </div></td>
    <td><input type="text" name="motcle" /></td>
    </tr>
    </table>
    </form>
    <p>  </p>
    <p>
    <label></label>
    </p>
    <p align="center" class="Style2"> </p>
    <form method="post" action="LivreListe.php">
    <input type="submit" name="Submit" value="Confirmer" class="Style28"/>
    </form>
    0
  13. Leviathan49 Messages postés 267 Statut Membre 70
     
    Ouais en effet, ça venait de là
    Le formulaire que tu envoyais ne contenais rien.

    Donc regroupe tes deux formulaire en un seul (code ci-dessous) ET VIRE CES ISSET ils ne servent A RIEN comme tu les utilise ^^

    <p align="center" class="Style39">Ajout Livre </p>   
    <p> </p>   
    <p> </p>   
    <form method="post" action="LivreListe.php">   
    <table width="209" height="468" border="0" align="center" cellspacing="20">   
    <tr>   
    <td width="49"><div align="center"><span class="Style45">ISBN</span> </div></td>   
    <td width="144"><label>   
    <input type="text" name="IS" />   
    </label></td>   
    </tr>   
    <tr>   
    <td><p align="center" class="Style45">Code Edition</p></td>   
    <td><label></label>   
    <select name="CODEED">   
    
    <option>SELECTIONNEZ LE CODE D EDITION</option>   
    <?php   
    
    include "connect.php";   
    
    $req_edit=mysql_query("SELECT DISTINCT CODEED FROM edition");   
    
    while ($data_edit=mysql_fetch_array($req_edit)){   
    $CODEED=$data_edit['CODEED'];   
    
    echo "<optgroup label=\"$CODEED\">";   
    
    echo "<option value=\"$CODEED\">$CODEED</option>";   
    echo "</optgroup>";   
    }   
    include "disconnect.php";   
    ?>   
    </select>   
    </td>   
    </tr>   
    <tr>   
    <td><div align="center"><span class="Style45">Nom </span></div></td>   
    <td><label>   
    <input type="text" name="NL" />   
    </label></td>   
    </tr>   
    <tr>   
    <td class="Style41"><div align="center" class="Style45">Auteur</div></td>   
    <td><label>   
    <input type="text" name="AUT" />   
    </label></td>   
    </tr>   
    <tr>   
    <td class="Style41"><div align="center" class="Style45">Numéro Série </div></td>   
    <td><div align="center">   
    <label>   
    <input type="text" name="NS" />   
    </label>   
    </div></td>   
    </tr>   
    <tr>   
    <td><div align="center"><span class="Style45">Nombre Exemplaire</span> </div></td>   
    <td><label>   
    <input type="text" name="NE" />   
    </label></td>   
    </tr>   
    <tr>   
    <td class="Style45"><div align="center">Mot Clé </div></td>   
    <td><input type="text" name="motcle" /></td>   
    </tr>   
    </table>   
    
    <p>  </p>   
    <p>   
    <label></label>   
    </p>   
    <p align="center" class="Style2"> </p>   
    
    <input type="submit" name="Submit" value="Confirmer" class="Style28"/>   
    </form>
    0
  14. emy
     
    mnt quand je click sur le boutton modifier rien ne se passe, la page livreliste ne s'affiche pas
    0
    1. Leviathan49 Messages postés 267 Statut Membre 70
       
      Remet le code du formulaire modifié que je regardes ça.
      0
  15. emy
     
    boutton confirmer plutot :) :

    <?php
    $con=mysql_connect("localhost","root","");
    mysql_select_db("new_base",$con);

    $ISB=$_POST['IS'];
    $CODEE=$_GET['CE'];
    $NOMLI=$_POST['NL'];
    $AUTEU=$_POST['AUT'];
    $NUMSERI=$_POST['NS'];
    $NB_EXEMPLAIR=$_POST['NE'];
    $MOCL=isset($_POST['motcle']);

    $sql = "INSERT INTO livre VALUES ('$ISB','$CODEE','$NOMLI','$AUTEU','$NUMSERI','$NB_EXEMPLAIR','$MOCL')";
    $requete = mysql_query($sql, $con) or die( mysql_error() ) ;
    if($requete)
    {
    echo("L'insertion a ete correctement effectuee") ;
    }
    else
    {
    echo("L'insertion à echouee") ;
    }
    include"disconnect.php";
    ?>

    j'a un formulaire ajout livre c'est ce que je viens de t'envoyer tte à l'heure et un autre liste livre où s'affiche une liste qui importe les données de la base avec un lieu dessus "ajouter livre" qd je Click dessus normalement sa doit ajouter le nouvel enregistrement que j'ai passé ds le formulaire " ajout livre "
    0
    1. maka54 Messages postés 721 Statut Membre 80
       
      renvoie le formulaire .... cette page là, çà fais 3 fois que tu la postes mais l'erreur, c'est sur l'autre page
      0
  16. emy
     
    voici le fomrulaire "ajouter livre"

    <p align="center" class="Style39">Ajout Livre </p>
    <p> </p>
    <p> </p>
    <form method="post" action="LivreListe.php">
    <table width="209" height="468" border="0" align="center" cellspacing="20">
    <tr>
    <td width="49"><div align="center"><span class="Style45">ISBN</span> </div></td>
    <td width="144"><label>
    <input type="text" name="IS" />
    </label></td>
    </tr>
    <tr>
    <td><p align="center" class="Style45">Code Edition</p></td>
    <td><label></label>
    <select name="CODEED">

    <option>SLECTIONNER LE CODE D EDITION</option>

    <?php

    include "connect.php";

    $req_edit=mysql_query("SELECT DISTINCT CODEED FROM edition");

    while ($data_edit=mysql_fetch_array($req_edit)){
    $CODEED=$data_edit['CODEED'];

    echo "<optgroup label=\"$CODEED\">";

    echo "<option value=\"$CODEED\">$CODEED</option>";
    echo "</optgroup>";
    }
    include "disconnect.php";
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td><div align="center"><span class="Style45">Nom </span></div></td>
    <td><label>
    <input type="text" name="NL" />
    </label></td>
    </tr>
    <tr>
    <td class="Style41"><div align="center" class="Style45">Auteur</div></td>
    <td><label>
    <input type="text" name="AUT" />
    </label></td>
    </tr>
    <tr>
    <td class="Style41"><div align="center" class="Style45">Numéro Série </div></td>
    <td><div align="center">
    <label>
    <input type="text" name="NS" />
    </label>
    </div></td>
    </tr>
    <tr>
    <td><div align="center"><span class="Style45">Nombre Exemplaire</span> </div></td>
    <td><label>
    <input type="text" name="NE" />
    </label></td>
    </tr>
    <tr>
    <td class="Style45"><div align="center">Mot Clé </div></td>
    <td><input type="text" name="motcle" /></td>
    </tr>
    </table>
    </form>
    <p>  </p>
    <p>
    <label></label>
    </p>
    <p align="center" class="Style2"> </p>

    <input type="submit" name="Submit" value="Confirmer" class="Style28"/>
    </form>
    <div align="center">

    voici le formulaire liste livre
    <?php
    include "connect.php";

    echo "<h3>Liste des Livres</h3>";
    $sql = "SELECT * FROM Livre";
    $resultat = mysql_query($sql);
    echo "[<a href=livreAjoutExec.php>Ajouter un Livre</a>]";
    echo "<table border=1 width=75%>";
    echo "<tr><td bgcolor=11FF11>IS</td><td bgcolor=11FF11>CE</td><td bgcolor=11FF11>NL</td><td bgcolor=11FF11>AUT</td><td bgcolor=11FF11>NS</td><td bgcolor=11FF11>NE</td><td bgcolor=11FF11>motcle</td><td bgcolor=11FF11>Modification</td><td bgcolor=11FF11>Suppression</td></tr>";
    while ($row = mysql_fetch_array($resultat)) {
    echo "<tr>";
    echo "<td>".$row[0]."</td><td>".$row[1]."</td><td>".$row[2]."</td><td>".$row[3]."</td<td>".$row[4]."</td><td>".$row[5]."</td><td>".$row[6]."</td>";

    echo "<td><a href=livreModif.php?ref=$row[0] color=#000000> modifier</a></td><td><a href=livreSupp.php?ref=$row[0] color=#000000>supprimer</a></td>";
    echo "</tr>";
    }
    echo "</table>";

    include "disconnect.php";
    ?>
    0
  17. Leviathan49 Messages postés 267 Statut Membre 70
     
    Un </form> en trop, j'en était sur.
    Vire le </form> que j'ai mis en gras.
    <?php

    include "connect.php";

    $req_edit=mysql_query("SELECT DISTINCT CODEED FROM edition");

    while ($data_edit=mysql_fetch_array($req_edit)){
    $CODEED=$data_edit['CODEED'];

    echo "<optgroup label=\"$CODEED\">";

    echo "<option value=\"$CODEED\">$CODEED</option>";
    echo "</optgroup>";
    }
    include "disconnect.php";
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td><div align="center"><span class="Style45">Nom </span></div></td>
    <td><label>
    <input type="text" name="NL" />
    </label></td>
    </tr>
    <tr>
    <td class="Style41"><div align="center" class="Style45">Auteur</div></td>
    <td><label>
    <input type="text" name="AUT" />
    </label></td>
    </tr>
    <tr>
    <td class="Style41"><div align="center" class="Style45">Numéro Série </div></td>
    <td><div align="center">
    <label>
    <input type="text" name="NS" />
    </label>
    </div></td>
    </tr>
    <tr>
    <td><div align="center"><span class="Style45">Nombre Exemplaire</span> </div></td>
    <td><label>
    <input type="text" name="NE" />
    </label></td>
    </tr>
    <tr>
    <td class="Style45"><div align="center">Mot Clé </div></td>
    <td><input type="text" name="motcle" /></td>
    </tr>
    </table>
    </form>
    <p> </p>
    <p>
    <label></label>
    </p>
    <p align="center" class="Style2"> </p>

    <input type="submit" name="Submit" value="Confirmer" class="Style28"/>
    </form>
    <div align="center">
    0
  18. emy
     
    c 'est quoi le probleme ? !
    0
    1. maka54 Messages postés 721 Statut Membre 80
       
      c'est que tu fermes ton formulaire avant le bouton confirmer, forcemment il ne peut pas marcher
      0
  19. emy
     
    TU AS RAISON, mnt qd je click sur confirmer le formulaire liste livre s'affiche et qd je clik sur le lien ajouter livre voila les message d'erreurs

    Notice: Undefined index: IS in C:\Program Files\EasyPHP-5.3.2\www\livreAjoutExec.php on line 6

    Notice: Undefined index: CE in C:\Program Files\EasyPHP-5.3.2\www\livreAjoutExec.php on line 7

    Notice: Undefined index: NL in C:\Program Files\EasyPHP-5.3.2\www\livreAjoutExec.php on line 8

    Notice: Undefined index: AUT in C:\Program Files\EasyPHP-5.3.2\www\livreAjoutExec.php on line 9

    Notice: Undefined index: NS in C:\Program Files\EasyPHP-5.3.2\www\livreAjoutExec.php on line 10

    Notice: Undefined index: NE in C:\Program Files\EasyPHP-5.3.2\www\livreAjoutExec.php on line 11

    Notice: Undefined variable: sql in C:\Program Files\EasyPHP-5.3.2\www\livreAjoutExec.php on line 17
    Query est vide

    suite à ce script

    <?php
    $con=mysql_connect("localhost","root","");
    mysql_select_db("new_base",$con);

    $ISB=$_POST['IS'];
    $CODEE=$_GET['CE'];
    $NOMLI=$_POST['NL'];
    $AUTEU=$_POST['AUT'];
    $NUMSERI=$_POST['NS'];
    $NB_EXEMPLAIR=$_POST['NE'];
    $MOCL=isset($_POST['motcle']);

    $sql = "INSERT INTO livre VALUES ('$ISB','$CODEE','$NOMLI','$AUTEU','$NUMSERI','$NB_EXEMPLAIR','$MOCL')";
    $requete = mysql_query($sql, $con) or die( mysql_error() ) ;
    if($requete)
    {
    echo("L'insertion a ete correctement effectuee") ;
    }
    else
    {
    echo("L'insertion à echouee") ;
    }
    include"disconnect.php";
    ?>

    et qd je mets $ISB=isset($_POST['IS']);
    les message d'erreurs ne s'affcihent plus mais une ligne vide s'ajoute ds la base de donnée
    0
    1. maka54 Messages postés 721 Statut Membre 80
       
      encore une fois, ton isset ne sert a rien comme tu t'en sert, c'est lui qui provoque ta ligne vide ....
      maintenant il peut te servir a faire des tests, pour chacune de tes valeurs, tu peux mettre

      if(isset($_POST['champ'])){
           $champ = $_POST['champ']
      }
      0
  20. Leviathan49 Messages postés 267 Statut Membre 70
     
    Normal, les variables dans $_POST n'existe que sur la page LivreListe.php après elle sont perdues. Donc tu ne peut pas les récupérer sur livreAjoutExec.php.
    0
  • 1
  • 2