Problème avec un livre d'or basé sur 1 .txt

Fermé
steve.bru Messages postés 15 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 11 juin 2008 - 13 mars 2008 à 22:36
sonico Messages postés 152 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 4 mai 2008 - 14 mars 2008 à 21:24
Bonjour,
J'ai un souci, je suis en train de concevoir un livre d'or dont les données sont stockées dynamiquement sur un fichier.txt. le problème, c'est que lorsque je veux ajouter un nouveau message, il ne s'affiche pas lorsque je clique sur le bouton ENVOYER, mais lorsque j'appuye une seconde fois sur ENVOYER. Donc, si j'ai voulut poster un message après avoir cliqué la première fois sur ENVOYER, il ne s'affichera qu'après la 3ème fois.. (et non pas la 2ème). Vous avez saisit ?

J'ai fait une fonction pour afficher le contenu du .txt, et je pensasi appeler cette fonction tout à la fin du script, mais dans ce cas la, le tableau n'affiche plus rien.. je déséspère..

je précise qu'a l'ouverture de la page, elle doit afficher les données déja existantes du livre d'or, et au clic sur le bouton envoyer, le novueau message n'aruait qu'a s'afficher.

Pouvez-vous m'aider ?

Merci, voici mon code:

<?php
function afficherLivre() {
global $bdd;
for ($i=0; $i<count($bdd); $i++) {
$oldMess = explode(";", $bdd[$i]);
echo "<tr bgcoor='grey'>";
for ($j=0; $j<count($oldMess); $j++) {
echo "<td><font face='verdana' size='2'>".$oldMess[$j]."</font></td>";
}
echo "</tr>";
}
}

$bdd = file('files/livreDor.txt');
$dateMess = date('d/m/Y');
$heureMess = date('h:i:s');

afficherLivre();

if (isset($_REQUEST['afficher'])) {
if (isset($_REQUEST['message'])) {
$newMess = $_REQUEST['message'];
$insertNewMess = "\n".$dateMess." - ".$heureMess.";".$newMess;
$openFile = fopen('files/livreDor.txt', 'a+');
$bdd = fwrite($openFile, $insertNewMess);
fclose($openFile);
}
}afficherLivre();
?>
A voir également:

3 réponses

sonico Messages postés 152 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 4 mai 2008 17
13 mars 2008 à 22:43
Ton PHP se trouve après le code html ?

Si oui, il faut que tu mette le php avant le html
0
steve.bru Messages postés 15 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 11 juin 2008
13 mars 2008 à 22:45
Oui, le code au complet (HTML/PHP) est le suivant:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<html>
<head>
<title>
ESVIG > PHP > Exercice 20
</title>
</head>
<body leftmargin=10 rightmargin=10 topmargin=10 bottommargin=10>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
<font face='verdana' size='2'>
<b>Livre d'or</b>
</font>
<br><br>
<font face='verdana' size='2'>
<i>Laissez-nous un message !</i>
</font>
<p>
<textarea name="message" cols="50" rows="10"></textarea>
<p>
<input type='submit' value='Envoyer'></input>
<input type='hidden' value='ok' name='afficher'>
<p><hr><p>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<td>
<font face='verdana' size='2'><b>Date & heure</b></font>
</td>
<td>
<font face='verdana' size='2'><b>Message</b></font>
</td>
</tr>
<?php
function afficherLivre() {
global $bdd;
for ($i=0; $i<count($bdd); $i++) {
$oldMess = explode(";", $bdd[$i]);
echo "<tr bgcoor='grey'>";
for ($j=0; $j<count($oldMess); $j++) {
echo "<td><font face='verdana' size='2'>".$oldMess[$j]."</font></td>";
}
echo "</tr>";
}
}

$bdd = file('files/livreDor.txt');
$dateMess = date('d/m/Y');
$heureMess = date('h:i:s');

afficherLivre();

if (isset($_REQUEST['afficher'])) {
if (isset($_REQUEST['message'])) {
$newMess = $_REQUEST['message'];
$insertNewMess = "\n".$dateMess." - ".$heureMess.";".$newMess;
$openFile = fopen('files/livreDor.txt', 'a+');
$bdd = fwrite($openFile, $insertNewMess);
fclose($openFile);
}
}afficherLivre();
?>
</form>
</body>
</html>

Merci si tu peux m'apporter une réponse.. :)
0
sonico Messages postés 152 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 4 mai 2008 17
13 mars 2008 à 22:47
couper coller de ça

<?php
function afficherLivre() {
global $bdd;
for ($i=0; $i<count($bdd); $i++) {
$oldMess = explode(";", $bdd[$i]);
echo "<tr bgcoor='grey'>";
for ($j=0; $j<count($oldMess); $j++) {
echo "<td><font face='verdana' size='2'>".$oldMess[$j]."</font></td>";
}
echo "</tr>";
}
}

$bdd = file('files/livreDor.txt');
$dateMess = date('d/m/Y');
$heureMess = date('h:i:s');

afficherLivre();

if (isset($_REQUEST['afficher'])) {
if (isset($_REQUEST['message'])) {
$newMess = $_REQUEST['message'];
$insertNewMess = "\n".$dateMess." - ".$heureMess.";".$newMess;
$openFile = fopen('files/livreDor.txt', 'a+');
$bdd = fwrite($openFile, $insertNewMess);
fclose($openFile);
}
}afficherLivre();
?>


au tout début et le tour est joué
0
steve.bru Messages postés 15 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 11 juin 2008
13 mars 2008 à 22:52
Tu veux dire, avant le code html ? Si oui, a quel niveau exactement ?
Et le souci, c'ets que je commence le tableau en HTML, et je le finis en PHP...
Je dois faire suivre le code du début du talbeau dans ce cas ?
0
steve.bru Messages postés 15 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 11 juin 2008
13 mars 2008 à 22:55
..de plus, si je déplace le script au haut de la page, le résultat s'affichera pas ou je veux dans la page web.. je veux que les messages du livre d'or, soient affichés tout en bas de la page web, pas avant le titre de celle-ci..

Encore merci pour ton aide !
0
sonico Messages postés 152 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 4 mai 2008 17 > steve.bru Messages postés 15 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 11 juin 2008
13 mars 2008 à 22:55
tu sépare le code html des tableaux par rapport au php et tu met les calculs (en PHP) avant même qu'il y ait un code html.

en fait toi tu a ton affichage avant les calculs donc il va afficher rien puis faire la mise à jour.

il faut faire la mise à jour et ensuite afficher les variables misent à jour.
0
sonico Messages postés 152 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 4 mai 2008 17 > steve.bru Messages postés 15 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 11 juin 2008
13 mars 2008 à 22:57
Si tu veux afficher en bas, tu laisse seulement l'affichage en bas mais les calculs doivent être en haut.
Je ne suis pas très clair dans mes explications.

Je schématise ^^


tu dois faire
-----------------

calcul en php

notamment la mise à jour de tes fichiers

?>
- <html>

<?PHP
echo en php des résultat en php ou tu veux dans le code si ils sont mis à jour avant au tout début

?>
</html

0
steve.bru Messages postés 15 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 11 juin 2008 > sonico Messages postés 152 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 4 mai 2008
13 mars 2008 à 23:08
lol

Je te remercie pour tout. Sauf que le tableau ne s'affiche toujours pas.. Peut etre que je t'ai mal compris ?

J'ai fait ca, tu peux encore me dire si c'est ce que tu voulais me faire faire ?

<?php
function afficherLivre() {
global $bdd;
for ($i=0; $i<count($bdd); $i++) {
$oldMess = explode(";", $bdd[$i]);
echo "<tr bgcoor='grey'>";
for ($j=0; $j<count($oldMess); $j++) {
echo "<td><font face='verdana' size='2'>".$oldMess[$j]."</font></td>";
}
echo "</tr>";
}
}

$bdd = file('files/livreDor.txt');
$dateMess = date('d/m/Y');
$heureMess = date('h:i:s');

if (isset($_REQUEST['afficher'])) {
if (isset($_REQUEST['message'])) {
$newMess = $_REQUEST['message'];
$insertNewMess = "\n".$dateMess." - ".$heureMess.";".$newMess;
$openFile = fopen('files/livreDor.txt', 'a+');
$bdd = fwrite($openFile, $insertNewMess);
fclose($openFile);
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<html>
<head>
<title>
ESVIG > PHP > Exercice 20
</title>
</head>
<body leftmargin=10 rightmargin=10 topmargin=10 bottommargin=10>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
<font face='verdana' size='2'>
<b>Livre d'or</b>
</font>
<br><br>
<font face='verdana' size='2'>
<i>Laissez-nous un message !</i>
</font>
<p>
<textarea name="message" cols="50" rows="10"></textarea>
<p>
<input type='submit' value='Envoyer'></input>
<input type='hidden' value='ok' name='afficher'>
<p><hr><p>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<td>
<font face='verdana' size='2'><b>Date & heure</b></font>
</td>
<td>
<font face='verdana' size='2'><b>Message</b></font>
</td>
</tr>
<?php
afficherLivre();
?>
</form>
</body>
</html>
0
sonico Messages postés 152 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 4 mai 2008 17
13 mars 2008 à 23:36
Bon voila, copie colle ça :


<?php

$dateMess = date('d/m/Y');
$heureMess = date('h:i:s');

if (isset($_REQUEST['afficher'])) {
if (isset($_REQUEST['message'])) {
$newMess = $_REQUEST['message'];
$insertNewMess = "\n".$dateMess." - ".$heureMess.";".$newMess;
$openFile = fopen('files/livreDor.txt', 'a+');
$bdd = fwrite($openFile, $insertNewMess);
fclose($openFile);
}
}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<html>
<head>
<title>
ESVIG > PHP > Exercice 20
</title>
</head>
<body leftmargin=10 rightmargin=10 topmargin=10 bottommargin=10>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
<font face='verdana' size='2'>
<b>Livre d'or</b>
</font>
<br><br>
<font face='verdana' size='2'>
<i>Laissez-nous un message !</i>
</font>
<p>
<textarea name="message" cols="50" rows="10"></textarea>
<p>
<input type='submit' value='Envoyer'></input>
<input type='hidden' value='ok' name='afficher'>
<p><hr><p>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<td>
<font face='verdana' size='2'><b>Date & heure</b></font>



</td>
<td>
<font face='verdana' size='2'><b>Message</b></font>
</td>
<?php
$bdd = file('files/livreDor.txt');



?>
</tr>
<?php
function afficherLivre() {
global $bdd;
for ($i=0; $i<count($bdd); $i++) {
$oldMess = explode(";", $bdd[$i]);
echo "<tr bgcoor='grey'>";


for ($j=0; $j<count($oldMess); $j++) {
echo "<td><font face='verdana' size='2'>".$oldMess[$j]."</font></td>";
}
echo "</tr>";
}
}

afficherLivre();
?>
</form>
</body>
</html>


0
sonico Messages postés 152 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 4 mai 2008 17
14 mars 2008 à 21:24
Il serait sympa de prévenir si ça marche ou si ça ne marche pas.
0