Problème ajout en php

Fermé
emy - 23 juin 2010 à 17:48
 emy - 24 juin 2010 à 15:48
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") ;
}

?>
A voir également:

25 réponses

Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 24/06/2010 à 10:18
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
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
24 juin 2010 à 11:35
effectivement c'est bizarre mais cela devrait se voir dans la base de donnée non ?
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
24 juin 2010 à 13:05
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
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
23 juin 2010 à 17:54
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
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
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
23 juin 2010 à 18:12
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
24 juin 2010 à 09:53
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
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
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
24 juin 2010 à 12:58
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
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
24 juin 2010 à 13:17
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
je fais comme ça echo "$ISB"; apres le post ?
0
donc où est le probleme ? !
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
24 juin 2010 à 13:07
poste ton formulaire , l'erreur est certainement dedans
0
<?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
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
24 juin 2010 à 13:17
non, pas çà, le formulaire, tes $_POST viennent bien d'un formulaire ?
0
<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
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 24/06/2010 à 13:27
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
mnt quand je click sur le boutton modifier rien ne se passe, la page livreliste ne s'affiche pas
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
24 juin 2010 à 13:41
Remet le code du formulaire modifié que je regardes ça.
0
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
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 24/06/2010 à 13:48
renvoie le formulaire .... cette page là, çà fais 3 fois que tu la postes mais l'erreur, c'est sur l'autre page
0
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
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 24/06/2010 à 13:58
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
c 'est quoi le probleme ? !
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
24 juin 2010 à 14:00
c'est que tu fermes ton formulaire avant le bouton confirmer, forcemment il ne peut pas marcher
0
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
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
24 juin 2010 à 14:18
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
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
24 juin 2010 à 14:22
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