Bonjour à tous,
Je créer actuellement un livre d'or pour un site, en PHP ( fonction PDO ) et je suis confronté à quelques petits soucis.
Ayant déjà créé précédemment un système d'inscription, j'ai essayé de reprendre le même principe pour créer un livre d'or.
Dans un premier temps, j'aimerais faire en sorte que le message de l'internaute soit posté correctement sur le site avec son pseudo, sont message et la date d'édition du message ( également ajouter une note entre 1 et 10 mais à voir plus tard ^^ ).
Une erreur apparaît lors de l'envoie de donnée :
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in /home/croba/public_html/signaturelivreor.php:12 Stack trace: #0 /home/croba/public_html/signaturelivreor.php(12): PDOStatement->execute(Array) #1 {main} thrown in /home/croba/public_html/signaturelivreor.php on line 12
voici ma page livreor.php :
<?php session_start(); ?>
<!DOCTYPE HTML>
<html>
<head>
<link href="mafavicon.png" rel="shortcut icon" title="montitre" type="image/png" />
<link href="css1.css" rel="stylesheet" type="text/css">
<title>Livre d'or / Laissez votre avis par rapport au site, aux artistes, et divers sujets.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Livre d'or, donner votre avis, sur les artistes, le site ou d'autres thèmes." />
<meta name="keywords" content="livre d'or, avis, commentaires, messages, site, notation, sujet" />
</head>
<body>
<div id="container">
<?php include("header.inc.php"); ?>
<?php include("menus.inc.php"); ?>
<div id="corpslivreor">
<div id="retourselect">
<a href="livreor.php" title="recharger la page"><h1 class="titre1">Livre d'or</h1></a>
</div>
<div id="textelivreor">
<p class="texte2">Ici, vous pourrez donner votre avis par rapport au site, aux artistes ou autres sujets...</p>
</div>
<?php require_once("connexionlivreor.inc.php"); ?>
<?php
$reponse = $bdd->prepare('SELECT membre_pseudo,messagelo,note,dateedit FROM commentaire ORDER BY dateedit DESC');
$reponse->execute();
$nb_signature = $reponse->fetch();
if ($nb_signature==0)
{
echo '<p class="textewarning">'."aucune signature.".'<p>';
}
else {
?>
<?php
while ($data = $reponse->fetch())
echo htmlspecialchars($data'membre_pseudo']);
echo htmlspecialchars($data'messagelo']);
echo htmlspecialchars($data'note']);
echo htmlspecialchars($data'dateedit']);
} $reponse->closeCursor(); ?>
<form action="signaturelivreor.php" method="post">
<fieldset>
<p class="classinscr"><label>Votre pseudo :
<input type="text" name="membre_pseudo" />
</label>
</p>
<p class="classinscr">
<label>Votre message :
<input type="text" name="messagelo" />
</label>
</p>
<p class="classinscr">
<label>donnez une note :
<input type="text" name="note" />
</label>
</p>
<p class="classinscr">
<label>
<input type="submit" name="submit" value="envoyer" />
</label>
</p>
</fieldset>
</form>
<?php include("signaturelivreor.php"); ?>
</div>
<?php include("footer.inc.php"); ?>
</div>
</body>
</html>
et voici ma seconde page permettant l'insertion des données signaturelivreor.php :
<?php session_start(); ?>
<?php
if ((isset($_POST'membre_pseudo'])) && (isset($_POST'messagelo']))) {
// si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base
if ((!empty($_POST'membre_pseudo'])) && (!empty($_POST'messagelo']))) {
require_once("connexionlivreor.inc.php");
// on prepare notre requête d'insertion des données
$reponse = $bdd->prepare('INSERT INTO commentaire (membre_pseudo,messagelo,note,dateedit) VALUES (:membre_pseudo,:messagelo,:dateedit,CURDATE())');
$reponse->execute(array('membre_pseudo'=>$_POST'membre_pseudo'], 'messagelo'=>$_POST'messagelo'], 'note'=>$_POST'note']));
// on ferme la connexion à la base de données
// on redirige le visiteur vers l'accueil du livre d'or
header('Location: livreor.php');
}
else {
echo "Au moins un des champs est vide.";
}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>laissez votre signature, vos commentaires et votre note</title>
</head>
<body>
</body>
</html>
Merci beaucoup pour votre attention et votre aide.