Parse error: syntax error, unexpected T_VARIA

derrick -  
 derrick -
Bonjour,
je débute dans la programmation en php. Pour mon site j'ai l'idée de réaliser un livre d'or.

Pour le code source, je me suis inspiré de ce livre : https://books.google.fr/books?id=ZbHa0Y8F6ugC&pg=PA60&lpg=PA60&dq=%24message+pr%C3%A9c%C3%A9dent%3Dfread+%24fichier,+filesize(%22livre.txt%22)%3B&source=bl&ots=wv-TchovwT&sig=nocMfzPAfpBt8shJqAoO6ZxApRo&hl=fr&ei=5IniS6KoM5qGmwOFlehC&sa=X&oi=book_result&ct=result#v=onepage&q&f=false

J'aimerais qu'on m'aide pour corriger les erreurs. la version php du serveur est la 5.

Dans ajout_livre.php, j'ai beau changer, j'ai toujours ce message :
Parse error: syntax error, unexpected T_VARIABLE in /home/venteart/public_html/ajout_livre.php on line 3

Est-ce que quelqu'un peut m'aider?
Merci

13 réponses

Neliel Messages postés 7012 Statut Contributeur 1 696
 
Poste ton source... sans ça, on ne peut pas t'aider...
0
derrick
 
<?php
$fichier=fopen("livre.txt", "r");
($messageprecedent = fread $fichier, filesize("livre.txt"));
fclose ($fichier);

$date=date("d/n/Y");
$nom=ereg_replace("[\]", " ", $nom);
$message=ereg_replace("[\]", "", $message);
$mail=ereg_replace("[\]", "", $mail);
$fichier=fopen("livre.txt", "w");

fwrite ($fichier, "<br> <NewMsg><div align=center><table bgcolor=#cccccc border=1 borderColorDark=#000080 borderColorLight=#000080 cellspacing=0 width=650 bordercolor=#9999FF><tbody><tr><td width=100%><table border=0 width=100%> <tr><td colspan=2> <tr><td width=16%>
<font color=#CC3300 face=arial size=2><b><font color='#FF9900>$nom</font></b></font></td>
<td width=84%><font color=#CC3300 face=arial size=2><b><a href='mailto:$mail'>$nom</a></b></font></td></tr>");

fwrite($fichier, "<tr><td colspan=2><font color=#cc3300 face=arial size=2></font>");
fwrite($fichier, "<tr><td colspan=4><font face=arial size=2 color=#FFFFFF>$message</font></td></tr><tr><td colspan=2>Posté le $date </table></td></tr></tbody></table></div><div align=center></div>");
fwrite($fichier, "</NewMsg><br>");
fwrite($fichier, "\n");
fwrite($fichier, $messageprecedent);

fclose($fichier);

header ("Location : http://www.ventearticles.webou.net/livre.php");
?>
0
Neliel Messages postés 7012 Statut Contributeur 1 696
 
($messageprecedent = fread $fichier, filesize("livre.txt"));

Incorrect!

Remplace par: $messageprecedent = fread($fichier, filesize("livre.txt"));

0
derrick
 
Ok merci!

et pour un autre fichier livre.php, j'ai ce message :
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/venteart/public_html/livre.php on line 24

Voici le code source correspondant:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Le livre d'or</title>
</head>

<body>
<?php
$nbmsg=0;
$fichier = fopen ("livre.txt", "r");
while($ligne = fread ($fichier, 150)){
if (eregi ("<NewMsg>", $ligne)){
$nbmsg += 1;
}
}
fclose ($fichier);
?>

<center>Livre d'or</center><br><br>
<center>
<?php
if ($nbmsg == 0) {
echo "<br><center>Aucun message dans le livre d'or<br><br></center>
<a href="www.ventearticles.webou.net/index.htm">Accueil</a></body></html>";
exit;
}
?>
<div align="center"><center>
<table border="1"> width="650" cellspacing="0" bordercolorlight="#000000" bordercolordark="#000000"><tr>
<td width="34%" bgcolor="#0033CC"><p align="left"><font face="arial" size="2" color="#C0C0C0"><b>Nombre de messages:</b></font><b>
<font face="arial" size="2" color="#FFFFFF">
<?php
echo "$nbmsg";
?>
</font><font face="arial" size="2" color="#C0C0C0"></font></b></td></tr></table></div>
<?php
include "message.php";
?>
<a href="index.htm">accueil</a>
</body>
</html>
0

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

Posez votre question
Neliel Messages postés 7012 Statut Contributeur 1 696
 
echo "<br><center>Aucun message dans le livre d'or<br><br></center>
<a href="www.ventearticles.webou.net/index.htm">Accueil</a></body></html>";

Incorrect!

Remplace par:

echo "<br><center>Aucun message dans le livre d'or<br><br></center>
<a href='www.ventearticles.webou.net/index.htm'>Accueil</a></body></html>";

ou bien par:

$lien="www.ventearticles.webou.net/index.htm";
echo "<br><center>Aucun message dans le livre d'or<br><br></center>
<a href='".$lien."'>Accueil</a></body></html>";
0
Neliel Messages postés 7012 Statut Contributeur 1 696
 
<?php
if ($nbmsg == 0) {
echo "<br><center>Aucun message dans le livre d'or<br><br></center>
<a href="www.ventearticles.webou.net/index.htm">Accueil</a></body></html>";
exit;
}
?>

En fait, toute cette partie est incorrecte...

Déjà tu ferme deux fois les balises html et body... tu n'as pas le droit.

Voici, une correction:

<?php
if($nbmsg == 0){
?>
<br /><center>Aucun message dans le livre d'or<br><br></center>
<a href="www.ventearticles.webou.net/index.htm">Accueil</a>
<?php
exit();
}
?>
0
derrick
 
J'ai effectué les correction, le code semble donc valide mais, le nom, le mail et le message ne s'affichent pas, il n'y a que le nombre de messages et la date du message posté.

juste pour info voilà le code de message.php (mais normalement il n'y a pas d'erreurs)

<?php
$fichier=fopen ("livre.txt", "r");
while($ligne=fread($fichier, 150)) {
echo $ligne;
}
fclose($fichier);
?>
0
Neliel Messages postés 7012 Statut Contributeur 1 696
 
Essaie comme ça... ce code récupère toute le texte du fichier d'un seul coup

<?php
$fichier = fopen("livre.txt", "rb");
$texte = '';
while (!feof($fichier)) {
$texte .= fread($fichier, 8192);
}
fclose($fichier);
echo $texte;

?>

Et voici la variante ligne par ligne a testé:

<?php
$fichier = fopen("livre.txt", "rb");
while (!feof($fichier)) {
$ligne = fread($fichier, 255);
echo $ligne;
}
fclose($fichier);

"Trotti Trotta, Monsieur P, il y a des anges qui veulent un bisou..."
"Tu as vu la lumière dans son bidon ?"
0
derrick
 
maintenant j'ai:

Warning: Cannot modify header information - headers already sent by (output started at /home/venteart/public_html/ajout_livre.php:8) in /home/venteart/public_html/ajout_livre.php on line 31

pour ajout_livre.php
0
derrick
 
voilà le code modifié :
<html>

<head>
<title>Message ajouté</title>
</head>

<body>
<?php
$fichier=fopen("livre.txt", "r");
$messageprecedent=fread($fichier, filesize("livre.txt"));
fclose ($fichier);

$date=date("d/n/Y");
$nom=ereg_replace("[\]", " ", $nom);
$message=ereg_replace("[\]", " ", $message);
$mail=ereg_replace("[\]", " ", $mail);
$fichier=fopen("livre.txt", "w");

fwrite ($fichier, "<br><NewMsg><div align='center'><table bgcolor='#CCCCCC' border='1' borderColorDark='#000080' borderColorLight='#000080' cellspacing='0' width='650' bordercolor='#9999FF'><tbody><tr><td width='100%'><table border='0' width='100%'><tr><td colspan='2'> <tr><td width='16%'>
<font color='#CC3300' face='arial' size='2'><b><font color='#FF9900'>$nom</font></b></font></td>
<td width='84%'><font color='#CC3300' face='arial' size='2'><b><a href=\'mailto:$mail'>$nom</a></b></font></td></tr>");

fwrite($fichier, "<tr><td colspan='2'><font color='#cc3300' face='arial' size='2'></font>");
fwrite($fichier, "<tr><td colspan='4'><font face='arial' size='2' color='#FFFFFF'>$message</font></td></tr><tr><td colspan='2'>Posté le $date </table></td></tr></tbody></table></div><div align='center'></div>");
fwrite($fichier, "</NewMsg><br />");
fwrite($fichier, "\n");
fwrite($fichier, $messageprecedent);

fclose($fichier);

header("Location : http://www.ventearticles.webou.net/livre.php");
?>
</body>
</html>
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
La fonction header() ne peut pas être utilisée après l'envoie des entêtes HTTP.
Et ces entêtes sont envoyées avant que le premier caractère le soit.
0
derrick
 
Qu'est-ce que tu recommande donc pour faire appel à livre.php?
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
De ne pas faire d'echo (print) avant.
Ou tu peux utiliser la bufferisation de sortie.
https://www.php.net/manual/fr/ref.outcontrol.php
0
derrick
 
J'ai décidé d'utiliser une autre méthode décrite sur un livre, celle-ci n'utilise pas un fichier .txt, mais réécrit sur forum.htm. Mais des problèmes subsistent, voilà le code source forum.php :

<?php
$nom=$_POST['nom'];
$avis=stripslashes($_POST['avis']);
$dat=DATE('j-M-Y');
$f=fopen('forum.htm', 'r');
$texte==fread($f, 32000);
fclose($f);
$f=fopen('forum.htm', 'w');
$phr=strpos($texte, '<hr />');
$deb=substr($texte, 0, $phr);
$fin=substr($texte, $phr);
$texte=$deb." <hr />\n<h3>De : ".$nom.'    Le :';
$texte.=$date."</h3>\n<p>".$avis."</p>\n".$fin;
fwrite($f, $texte);
fclose($f);
echo '<meta http-equiv="refresh" content="0; url=forum.htm" />';
?>

Les problèmes sont les suivants :
-la date ne s'affiche pas
-la page n'affiche seulement que :

De : test Le :

message test

Autrement dit le formulaire ne s'affiche plus
0
derrick
 
Oups, j'ai réalisé que j'avai mis un = en trop avant fread. Mais il demeure que la date ne s'affiche toujours pas
0
derrick
 
Problème résolu :-)
0