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

  1. Neliel Messages postés 7012 Statut Contributeur 1 702
     
    Poste ton source... sans ça, on ne peut pas t'aider...
    0
  2. 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
  3. Neliel Messages postés 7012 Statut Contributeur 1 702
     
    ($messageprecedent = fread $fichier, filesize("livre.txt"));

    Incorrect!

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

    0
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Neliel Messages postés 7012 Statut Contributeur 1 702
     
    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
  7. Neliel Messages postés 7012 Statut Contributeur 1 702
     
    <?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
  8. 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
  9. Neliel Messages postés 7012 Statut Contributeur 1 702
     
    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
  10. 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
    1. 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
  11. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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
  12. derrick
     
    Qu'est-ce que tu recommande donc pour faire appel à livre.php?
    0
  13. 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
    1. 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
    2. derrick
       
      Problème résolu :-)
      0