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

steve.bru Messages postés 15 Statut Membre -  
sonico Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   -
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();
?>

3 réponses

sonico Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   17
 
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 Statut Membre
 
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   Statut Membre Dernière intervention   17
 
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 Statut Membre
 
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 Statut Membre
 
..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   Statut Membre Dernière intervention   17 > steve.bru Messages postés 15 Statut Membre
 
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   Statut Membre Dernière intervention   17 > steve.bru Messages postés 15 Statut Membre
 
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 Statut Membre > sonico Messages postés 152 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   17
 
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   Statut Membre Dernière intervention   17
 
Il serait sympa de prévenir si ça marche ou si ça ne marche pas.
0