Livre d'or : Petit problème

Résolu/Fermé
Fun-Brice - 2 sept. 2007 à 15:49
 valpat - 8 janv. 2008 à 02:01
Bonjour ...

En fait je souhaites créer un livre d'or. Aujourd'hui je pensais l'avoir terminé et réussit mais plusieurs problèmes perssistes ... :

1°) Lorsque j'appuie sur le bouton Valider, le message que je souhaites ajouter au livre d'or ne s'affiche pas ...

2°) Le numéro des pages où sont inscrit les messages ne s'affiche pas ...

Et le pire dans tout ça c'est que je n'ai pas le message habituel d'erreur, style "Parse error: parse error, expecting `','' or `';'' in c:\documents and settings\moi\bureau\livre_dor.2\livre.php on line 84"

Voici le code de la page :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Livre d'or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" media="screen" href="css.css" />
</head>
<body>
<p>Hello hello, voici le Livre d'Or du Fun-Mag</p>
<?php

$serveur = 'localhost';
$pseudo = 'monpseudo';
$mot_de_passe = 'monmotdepasse';
$base = 'livre';

mysql_connect("$serveur", "$pseudo", "$mot_de_passe");
mysql_select_db("$base");

if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$date = date ( "d/m/Y H:i:s" ); //Définition de la variable date
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); //Sécurité Powa !
$message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); //Idem ^^
$message = nl2br($message); // Remplacement de "entrer" par <br/>
mysql_query("INSERT INTO livreor VALUES('', '$date', '$pseudo', '$message')");

}

$nombreDeMessagesParPage = 25; // A modifier !
// Récupération du nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
// Calcul du nombres de pages créées
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Boucle ... Affichage des numéro de pages ainsi que des liens vers celles ci ...
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livre.php?page=' . $i . '">' . $i . '</a> ';
}
?>

</p>

<?php
//Affichage des messages
if (isset($_GET['page']))
{
$page = intval($_GET['page']); //Récupération de la page ...
}
else
{
$page = 1; // Page par defaut
}
// Calculation de la limite du numéro de base
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> Posté le :' . $donnees['date'] . '<br />' . $donnees['message'] . '</p>';
}
mysql_close();
?>
<p>Ajouter votre message</p>
<form method="post" action="livre.php">
<p>
<label for="pseudo">Pseudo :<br/></label><input name="pseudo" /><br /><br />
<label for="message">Message :</label><br/>
<textarea name="messsage" cols=50 rows=5>
Votre message ici !
</textarea>
<br>
</p>
<input type="Submit" value="Valider">
</form>
</body>
</html>
A voir également:

12 réponses

LeYaude Messages postés 304 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 8 février 2009 46
2 sept. 2007 à 16:08
As-tu vérifié si tes données entrent dans la base de donnée avec PhpMyAdmin ?

Sinon j'ai eu des problèmes du genre, j'ai dû remplacer '$date' par '".$date."' et de même pour les autres en enregistrant les infos dans la base de donnée.

Sinon ton code a l'air bon, si je me trompe pas il vient du sdz, donc si c'est du M@téo, c'est du bon ! lol.
0
Non les données n'entrent pas dans la base de donnée ^^

Je viens de remplacer les '$variable' en '".$variable."' mais sa ne change pas ...
0
LeYaude Messages postés 304 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 8 février 2009 46
2 sept. 2007 à 17:07
J'ai trouvé ! Tu as 3 "s" à message dans ton formulaire : "messsage", donc $_POST['message'] n'existe pas, donc ce qui est dans la condition ne s'exécute pas. C'est souvent qu'on se fait avoir par une pauvre lette comme ça ! Je viens de faire un site et ça m'est arrivé une bonne dizaine de fois ! lol.
0
Ah merci ! Mais ...

Toujours pas... ^^
0

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

Posez votre question
C'est bon merci ... J'ai réussit ... (Comment je sais pas mais ça marche ^^)

Merci :)
0
Bon j'ai encore deux problème ^^

1) Les dates de mes messages s'affichent comme ceci : Pseudo posté le 2.

2) Ensuite j'ai rajouté un code pour vérifier si les champs sont vides (avec empty) mais maintenant qu'il soient vide ou pas ... Ca me met le message d'erreur prévu si les champs sont vides ...

Voici le code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Livre d'or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
img
{
border:none;
}
-->
</style>
</head>
<body>
<p>Hello hello, voici le Livre d'Or du Fun-Mag</p>
<?php

$serveur = 'localhost';
$pseudo = 'root';
$mot_de_passe = '';
$base = 'livre';

mysql_connect("$serveur", "$pseudo", "$mot_de_passe");
mysql_select_db("$base");

if(empty($_POST['$pseudo']) OR empty($_POST['$message']))
{
echo 'Vous n\'avez pas remplie tous les champs<br /><br />';
}
else
{
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$date = date('d/m/Y/H/i/s'); //Définition de la variable date
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); //Sécurité Powa !
$message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); //Idem ^^
$message = nl2br($message); // Remplacement de "entrer" par <br/>
mysql_query("INSERT INTO livreor VALUES('', '".$date."', '".$pseudo."', '".$message."')");
}
}
?>
<?php
$nombreDeMessagesParPage = 10; // A modifier !
// Récupération du nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
// Calcul du nombres de pages créées
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Boucle ... Affichage des numéro de pages ainsi que des liens vers celles ci ...
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livre.php?page=' . $i . '">' . $i . '</a> ';
}
?>

<?php
//Affichage des messages
if (isset($_GET['page']))
{
$page = intval($_GET['page']); //Récupération de la page ...
}
else
{
$page = 1; // Page par defaut
}
// Calculation de la limite du numéro de base
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> Posté le ' . $donnees['date'] . '<br />' . $donnees['message'] . '<br /><hr /></p>';
}

echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livre.php?page=' . $i . '">' . $i . '</a> ';
}
mysql_close();
?>
<p>Ajouter votre message</p>
<form method="post" action="livre.php">
<p>
<label for="pseudo">Pseudo :<br/></label><input name="pseudo" /><br /><br />
<label for="message">Message :</label><br/>
<textarea name="message" rows="10" cols="50">
0
J'ai aussi oublié de préciser que les "entrer" dans le message ne se transforme pas en <br/> ...

Merci d'avance ^^
0
Bon j'ai reussit à régler les problèmes de date et de saut de ligne ...

Mais je n'arrive toujours pas à empecher la validation d'un formulaire vide ...

de plus je me sens un peu seul là ^^
0
warlix Messages postés 1201 Date d'inscription mercredi 25 juillet 2007 Statut Contributeur Dernière intervention 21 février 2009 288
3 sept. 2007 à 12:58
salut


étant intessé par ce genre de systeme , pourquoi ne pas expliquer comment tu as résolu les erreurs? :)
0
Ok ^^ :

Pour les dates je n'ai pas reussit de le faire celon la méthode courte :

$date = date('d/m/Y');

J'ai donc créé d'autre variables :

$date = date('d'); //Définition de la variable date
$date1 = date('m'); //Définition de la variable date
$date2 = date('Y'); //Définition de la variable date
$date3 = date('H'); //Définition de la variable date
$date4 = date('i'); //Définition de la variable date
$date5 = date('s'); //Définition de la variable date

Dans l'affichage des messages j'ai ajouté les données :

. $donnees['date'] . '/' . $donnees['date1'] . '/' . $donnees['date2'] . ' à ' . $donnees['date3'] . ':' . $donnees['date4'] . ':' . $donnees['date5'] . '<br />' .

Et j'ai aussi ajouté les nouvelles variables dans la base de données ...

Ce qui me donne : 3/09/2007 à 13:04:52

Pour la transformation de "saut de ligne" en <br/> :

J'ai tout simplement réunit les deux différentes variables de message :

$message = mysql_real_escape_string(nl2br(htmlspecialchars($_POST['message'])));

Voila ^^ Mais il me reste toujours l'anti-validation de formulaire vide :p
0
LeYaude Messages postés 304 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 8 février 2009 46
28 déc. 2007 à 19:22
if(empty($_POST['$pseudo']) OR empty($_POST['$message']))
{
echo 'Vous n\'avez pas remplie tous les champs<br /><br />';
}



Les lignes incriminées semblent être ici : enlève les '$' devant les arguments de $_POST

Exemple : $_POST['$pseudo'] ==> $_POST['pseudo']
Sinon PHP cherche le champ ayant pour name "$pseudo" et pas "pseudo"

J'espère que c'est ça, mais normalement ça devrait marcher.

Le Yaude
0
salut !!!! j'ai aussi ce problème !! mes commentaires sur jalbum ne s'affichent pas !! comment as - tu fait????
merci
0