Id et commentaire- error

Petit nouveau ! | 6 Messages

22 juil. 2013, 14:43

Bonjour,

dans ma bdd - j ai fais:
 

nom=commentaire type=medium text defaut=null 

<?php

if(isset($_POST['submit']))
{

	$commentaire = htmlspecialchars(trim($_POST['commentaire']));
	
	mysql_connect('localhost','root','');
	mysql_select_db('phpmembre');
	
	$query = mysql_query("
	
	INSERT INTO commentaire VALUES('$commentaire')
	
	");
}
?>
	
<form method="post" action="membre.php">
<p>Poster votre message</p>
<input type="text" name="commentaire" size="60" value="<?php echo $value; ?> : " >
<input type="submit" name="submit" value="Poster">
</form>


une fois le commentaire poster ca s enregistre bien dans la bdd...

mais! quand j ajoute une ligne id dans la bdd ca s enregistre plus dans ma base...

nom=id type=int(7) auto-increment cle=primaire

savez vous pourquoi ca bloque?

merci

Eléphant du PHP | 190 Messages

22 juil. 2013, 18:07

Salut,

Lorsque tu as plusieurs champs, tu dois dire à mysql lequel il doit remplir. Un champ auto incrément n'a pas besoin d’être renseigné mais bien ton champ commentaire.
INSERT INTO commentaire (commentaire) VALUES('$commentaire')
tu peux aussi faire comme ceci
INSERT INTO commentaire (id,commentaire) VALUES('','$commentaire')
;)

Petit nouveau ! | 6 Messages

22 juil. 2013, 21:53

re, j ai fais comme vous m avez dit mais ca ne fonctionne toujours pas, ca ne s enregistre pas dans la bdd

id pas primaire ni AI
et commentaire pareil car on ne sait pas le mettre en AI

j ai essayé avec les deux codes que vous m avez donné sans resultat...

<?php

if(isset($_POST['submit']))
{

	$commentaire = htmlspecialchars(trim($_POST['commentaire']));
	
	mysql_connect('localhost','root','');
	mysql_select_db('phpmembre');
	
	$query = mysql_query("
	
	INSERT INTO commentaire (commentaire) VALUES('$commentaire')
	");
}
?>
	
<form method="post" action="membre.php">
<p>Poster votre message</p>
<input type="text" name="commentaire" size="60" value="<?php echo $value; ?> : " >
<input type="submit" name="submit" value="Poster">
</form>

<?php

mysql_connect('localhost','root','');
mysql_select_db('phpmembre');


$sql="SELECT * FROM commentaire";
$req= mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data=mysql_fetch_assoc($req)){
	echo "<p>".$data["commentaire"]."</p>";
}	

mysql_close();
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 juil. 2013, 22:25

salut,

s'il n'y a pas d'insertion c'est que soit le code n'est pas exécutée, soit qu'il y aune erreur.

que contient $query avec l’exécution de la requête ?

il faut toujours tester le retour d'une requete.

de plus l'extension mysql est en voie de disparition il serait bon de passer à mysqli ou pdo suivant préférence.

je ferais ainsi dans un 1er temps
<?php
if (isset($_POST['submit'])) {
    $commentaire = trim($_POST['commentaire']);
    $conn = mysqli_connect('localhost', 'root', '', 'phpmembre');
    $ret = mysqli_query($conn, 'INSERT INTO commentaire (commentaire) VALUES(\'' . mysqli_real_escape_string($conn, $commentaire) . '\')');
    if ($ret === false) {
        echo 'Erreur SQL ' . mysqli_error($conn);
    }
}
Il en faut peu pour être heureux ......