Erreur sur un programme en php
Résolu
kinder77
Messages postés
134
Date d'inscription
Statut
Membre
Dernière intervention
-
jojo673 Messages postés 210 Date d'inscription Statut Membre Dernière intervention -
jojo673 Messages postés 210 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voila j'essaye depuis un moment de realiser un programme qui m'affiche mes commentaires en php j'en peut plus mais j'ai envie de finir et pas faire de cauchemar
Bon apres avoir cree ma base de donne et mes tables voici mon code qui m'affiche ceci:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'' in C:\wamp\www\commentaires\index.php on line 29
( ! ) PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY' in C:\wamp\www\commentaires\index.php on line 29
te voici mon code:
<?php
require ('connect.php');
if(!empty($_POST))
{
$pseudo = strip_tags($_POST['pseudo']);
$commentaire = strip_tags($_POST['commentaire']);
$valid = true;
if (empty($pseudo))
{
$valid = false;
$erreurpseudo='Indiquez un pseudo';
}
if (empty($commentaire))
{
$valid = false;
$erreurcommentaire='Indiquez un commentaire';
}
if (!empty($commentaire) && strlen($commentaire)<10)
{
$valid = false;
$erreurcommentaire='Commentaire trop court';
}
if ($valid)
{
$req = $bdd->prepare('INSERT INTO commentaires (pseudo,contenu) VALUES (:pseudo,:commentaire)');
$req->execute(array(':pseudo'=>$pseudo, ':commentaire'=>$commentaire));
$req->closeCursor();
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" />
<title>Document sans nom</title>
</head>
<body>
<div id="content">
<h1>Essai </h1>
<p>
accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"
</p>
<div id="commentaires">
<?php
$req = $bdd->prepare('SELECT*FROM commentaires ORDER BY id DESC');
$req ->execute();
while ($data = $req->fetch()):?>
<div class="comm">
<h4><?php echo $data ['pseudo'];?> </h4>
<p><?php echo nl2br($data['contenu']);?> </p>
</div>
<?php
endwhile;
?>
</div>
<form action="index.php" method="post">
<fieldset>
<label for="pseudo">Pseudo:</label>
<input type="text" name="pseudo" value="<?php if(isset($pseudo)) echo $pseudo;?>" />
<span class="error"><?php if(isset($erreurpseudo)) echo $erreurpseudo;?></span>
<label for="commentaire">Commentaire: </label>
<textarea name="commentaire"><?php if(isset($commentaire)) echo $commentaire;?></textarea>
<span class="error"><?php if(isset($erreurcommentaire)) echo $erreurcommentaire;?></span>
<input type="submit" value="Envoyer" />
</fieldset>
</form>
</div>
</body>
voila j'essaye depuis un moment de realiser un programme qui m'affiche mes commentaires en php j'en peut plus mais j'ai envie de finir et pas faire de cauchemar
Bon apres avoir cree ma base de donne et mes tables voici mon code qui m'affiche ceci:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'' in C:\wamp\www\commentaires\index.php on line 29
( ! ) PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY' in C:\wamp\www\commentaires\index.php on line 29
te voici mon code:
<?php
require ('connect.php');
if(!empty($_POST))
{
$pseudo = strip_tags($_POST['pseudo']);
$commentaire = strip_tags($_POST['commentaire']);
$valid = true;
if (empty($pseudo))
{
$valid = false;
$erreurpseudo='Indiquez un pseudo';
}
if (empty($commentaire))
{
$valid = false;
$erreurcommentaire='Indiquez un commentaire';
}
if (!empty($commentaire) && strlen($commentaire)<10)
{
$valid = false;
$erreurcommentaire='Commentaire trop court';
}
if ($valid)
{
$req = $bdd->prepare('INSERT INTO commentaires (pseudo,contenu) VALUES (:pseudo,:commentaire)');
$req->execute(array(':pseudo'=>$pseudo, ':commentaire'=>$commentaire));
$req->closeCursor();
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" />
<title>Document sans nom</title>
</head>
<body>
<div id="content">
<h1>Essai </h1>
<p>
accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"
</p>
<div id="commentaires">
<?php
$req = $bdd->prepare('SELECT*FROM commentaires ORDER BY id DESC');
$req ->execute();
while ($data = $req->fetch()):?>
<div class="comm">
<h4><?php echo $data ['pseudo'];?> </h4>
<p><?php echo nl2br($data['contenu']);?> </p>
</div>
<?php
endwhile;
?>
</div>
<form action="index.php" method="post">
<fieldset>
<label for="pseudo">Pseudo:</label>
<input type="text" name="pseudo" value="<?php if(isset($pseudo)) echo $pseudo;?>" />
<span class="error"><?php if(isset($erreurpseudo)) echo $erreurpseudo;?></span>
<label for="commentaire">Commentaire: </label>
<textarea name="commentaire"><?php if(isset($commentaire)) echo $commentaire;?></textarea>
<span class="error"><?php if(isset($erreurcommentaire)) echo $erreurcommentaire;?></span>
<input type="submit" value="Envoyer" />
</fieldset>
</form>
</div>
</body>
A voir également:
- Erreur sur un programme en php
- Mettre en veille un programme - Guide
- Programme demarrage windows - Guide
- Desinstaller un programme sur windows - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
7 réponses
C'est un problème dans la base de données. Une ligne est déjà existante avec comme id le numéro 0 (qui est la clé primaire). Lors de l'ajout d'une nouvelle ligne, il essaye de rajouter l'id 0, qui existe déjà et comme une clé primaire doit être unique il ne veut pas !
Pour corriger ça il faut mettre l'id de la table (la clé primaire) en autoincrement pour que les id soient différents lors d'un nouvel ajout.
Pour corriger ça il faut mettre l'id de la table (la clé primaire) en autoincrement pour que les id soient différents lors d'un nouvel ajout.
je ne suis pas tres en mysql g essayé mais voila ce qu'il m'affiche:
On ne peut déplacer la table sur elle-même!
On ne peut déplacer la table sur elle-même!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est pas la bonne m'anip alors ^^. Il faut modifier la table 'commentaires', onglet 'Structure', modifier la première ligne (celle qui est souligné) et coché la case 'AUTO_INCREMENT'