Parse error: syntax error, unexpected $end in

Résolu
fifouta Messages postés 14 Statut Membre -  
 fifouta -
Bonjour,
en éssayant d'éxécuter de moceau de code , j'obtiens cette erreur :

Parse error: syntax error, unexpected $end in c:\program_files\wamp\www\require()\page.inc on line 147
mon code se termine à la ligne 143 !!!! c'est ce que j'ai du mal à comprendre

le code :

<?php
class page
{
//attributs de la classe page
public $content;
public $title = 'TLA consulting Pty Ltd ';
public $keywords = 'TLA consulting ,Three letter abreviation, some of my best friends are search engines ';
public $buttons = array( 'Home' => 'home.php' ,
'contact' => 'contact.php',
'services' => 'services.php',
'site map' => 'map.php' );

//opérations de la classe page
public function __set($name, $value)
{
$this->$name = $value;
}

public function display()
{
echo "<html>\n<head>\n";
$this ->displaytitle();
$this ->displaykeywords();
$this ->displaystyles();
echo "</head>\n<body>\n";
$this ->displayheader();
$this ->displaymenu($this->buttons);
echo $this->content;
$this -> displayfooter();
echo "</body>\n</html>\n";
}

public function displaytitle()
{
echo '<title> '.$this ->title.'</title>';
}

public function displaykeywords()
{
echo '<meta name=\"keywords\" content= \
"".htmlentities($this ->keywords)."\" />';
}

public function displaystyles ()
{
?>
<style>
<!--
h1 {color:white;font-size:24pt; text-align;center;
font-family;arial, sans-serif}
.menu {color:white; font-size:12pt; text-align:center;
font-family:arial,sans-serif; font-weight:bold}
td {background :black}
p {color:black; font-size:12pt; text-align: justify;
p.foot {color: white; font-size:9pt; text-align: center;
font-family: arial,sans-serif; font-weight:bold}
a:link, a:visited,a:active {color:white}
-->
</style>
<?php
}

public function displayheader()
{
?>
<table width="100%" cellpadding ="12" cellspacing ="0" border ="0">
<tr bgcolor ="black">
<td align ="left"><img src = "logo.gif" /></td>
<td>
<h1>TLA consulting pty Ltd </h1>
</td>
</tr>
</table>

<?php
}

public function displaymenu($buttons)
{
echo "<table width ='100%' bgcolor ='white' cellpadding ='4' cellspacing ='4'>\n" ;
echo "<tr>\n";

//calculer la taille des boutons
$width =100 /count ($buttons);

foreach ($buttons as $name=> $url)
{
$this ->displaybutton($width, $name, $url, !$this->isurlcurrentpage($url));

}
echo "</tr>\n";
echo "</table>\n";
}

public function isurlcurrentpage($url)
{
if (strpos($_SERVER['PHP_SELF'], $url )==false)
{
return false;
}
else
{
return true;
}
}

public function displaybutton($width, $name, $url, $active= true)
{
if ($active)
{
echo "<td width ='".htmlentities($width)."%'>
<a href ='".htmlentities($url)."'>
<img src ='s-logo.gif' alt= '".htmlentities($name)."' border ='0' /></a>
<a href ='".htmlentities($url)."'><span class='menu'> $name</span>
</a></td>
}
else
{
echo '<td width ='".htmlentities($width)."%'>
<img src ='side-logo.gif'>
<span class='menu'>$name</span></td>';
}
}

public function displayfooter()
{
?>

<table width =\"100%\" bgcolor =\"black\" cellpadding =\"12\" border =\"0\">
<tr>
<td>
<p class=\"foot\">© TLA consulting pty Ltd .</p>
<p class=\"foot\">please see our <a href =\"legal.php\">legal information page </a></p>
</td>

</tr>
</table>

<?php
}
}
?>

merci d'avance pour vos réponses
Configuration: Windows XP
Firefox 2.0.0.14

1 réponse

  1. bob
     
    Ton code est vraiment très "sale", je te conseille à l'avenir d'écrire tout en php et de pas ouvrir toutes les dix lignes des balises php, du genre à la fin <?php } } ?> !!!
    Enfin bon, voici le code corrigé à partir de la fonction displaybutton :

    public function displaybutton($width, $name, $url, $active= true)
    {
    if ($active)
    {
    echo "<td width ='".htmlentities($width)."%'>\
    <a href ='".htmlentities($url)."'>\
    <img src ='s-logo.gif' alt= '".htmlentities($name)."' border ='0' /></a>\
    <a href ='".htmlentities($url)."'><span class='menu'> $name</span>\
    </a></td>";
    }
    else
    {
    echo "<td width ='".htmlentities($width)."%'>";
    echo "<img src ='side-logo.gif'>\
    <span class='menu'>$name</span></td>";
    }
    }

    public function displayfooter()
    {
    ?>

    <table width =\"100%\" bgcolor =\"black\" cellpadding =\"12\" border =\"0\">
    <tr>
    <td>
    <p class=\"foot\">© TLA consulting pty Ltd .</p>
    <p class=\"foot\">please see our <a href =\"legal.php\">legal information page </a></p>
    </td>

    </tr>
    </table>

    <?php
    }
    }
    ?>
    0
    1. fifouta Messages postés 14 Statut Membre
       
      bonjour,
      merci bob pour ta réponse , en ce qui concerne le code , je l'ai copié à partir d'un livre et étant novice dans la programmation php d'un coté et programmation OO de l'autre , il m'est difficile de distinguer les erreurs mais je vais y remédier c'est juste une question de temps.
      dans cet exemple , on vous explique l'héritage, création de classe et instanciation de cette dernière d'une façon trés simple.

      revenons à nos moutons , finalement c'était un problème de double quotes et de points virgule !! , mais il reste juste un petit souci , c'est qu'à l'affichage je remarque cette ligne qui ne devrais pas etre affichée :

      keywords)."\" />

      je vous donne l'exemple au complet : le fichier page.inc et home.php , ce dernier fichier crée un objet à partir de la classe page cet objet n'est rien que la page d'accueil .

      page.inc

      <?php
      class page
      {
      //attributs de la classe page
      public $content;
      public $title = 'TLA consulting Pty Ltd ';
      public $keywords = 'TLA consulting ,Three letter abreviation, some of my best friends are search engines ';
      public $buttons = array( 'Home' => 'home.php' ,
      'contact' => 'contact.php',
      'services' => 'services.php',
      'site map' => 'map.php' );

      //opérations de la classe page
      public function __set($name, $value)
      {
      $this->$name = $value;
      }

      public function display()
      {
      echo "<html>\n<head>\n";
      $this ->displaytitle();
      $this ->displaykeywords();
      $this ->displaystyles();
      echo "</head>\n<body>\n";
      $this ->displayheader();
      $this ->displaymenu($this->buttons);
      echo $this->content;
      $this -> displayfooter();
      echo "</body>\n</html>\n";
      }

      public function displaytitle()
      {
      echo '<title> '.$this ->title.'</title>';
      }

      public function displaykeywords()
      {
      echo '<meta name=\"keywords\" content= \
      "".htmlentities($this ->keywords)."\" />'; /// le problème est là !!!!
      }

      public function displaystyles ()
      {
      ?>
      <style>
      <!--
      h1 {color:white;font-size:24pt; text-align;center;
      font-family;arial, sans-serif}
      .menu {color:white; font-size:12pt; text-align:center;
      font-family:arial,sans-serif; font-weight:bold}
      td {background :black}
      p {color:white; font-size:12pt; text-align: center;
      p.foot {color: white; font-size:9pt; text-align: center;
      font-family: arial,sans-serif; font-weight:bold}
      a:link, a:visited,a:active {color:white}
      -->
      </style>
      <?php
      }

      public function displayheader()
      {
      ?>
      <table width="100%" cellpadding ="12" cellspacing ="0" border ="0">
      <tr bgcolor ="black">
      <td align ="left"><img src = "hand.png" /></td>
      <td>
      <h1>TLA consulting pty Ltd </h1>
      </td>
      </tr>
      </table>

      <?php
      }

      public function displaymenu($buttons)
      {
      echo "<table width ='100%' bgcolor ='white' cellpadding ='4' cellspacing ='4'>\n" ;
      echo "<tr>\n";

      //calculer la taille des boutons
      $width =100 /count ($buttons);

      foreach ($buttons as $name=> $url)
      {
      $this ->displaybutton($width, $name, $url, !$this->isurlcurrentpage($url));

      }
      echo "</tr>\n";
      echo "</table>\n";
      }

      public function isurlcurrentpage($url)
      {
      if (strpos($_SERVER['PHP_SELF'], $url )==false)
      {
      return false;
      }
      else
      {
      return true;
      }
      }

      public function displaybutton($width, $name, $url, $active= true)
      {
      if ($active)
      {
      echo "<td width ='".htmlentities($width)."%'>\
      <a href ='".htmlentities($url)."'>
      <img src ='user.png' alt= '".htmlentities($name)."' border ='0' /></a>\
      <a href ='".htmlentities($url)."'><span class='menu'> $name</span>
      </a></td>";
      }
      else
      {
      echo "<td width ='".htmlentities($width)."%'>";
      echo "<img src ='home.png'>\
      <span class='menu'>$name</span></td>";
      }
      }

      public function displayfooter()
      {
      ?>

      <table width =\"100%\" bgcolor =\"black\" cellpadding =\"12\" border =\"0\">
      <tr>
      <td>
      <p class=\"foot\">© TLA consulting pty Ltd .</p>
      <p class=\"foot\">please see our <a href =\"legal.php\">legal information page </a></p>
      </td>

      </tr>
      </table>

      <?php
      }
      }
      ?>

      et voici le fochier home.php

      <?php
      require ('page.inc');
      $homepage = new page();
      $homepage -> content ='<p> welcome to the home of TLA consulting .
      please take some time to get to know us .</p>
      <p> we specialize in serving your business needs and hope to hear from you soon .</p>';
      $homepage ->display();
      ?>

      merci d'avance
      0
      1. Utilisateur anonyme > fifouta Messages postés 14 Statut Membre
         
        (je me suis inscrit/bob)
        La solution est là :

        public function displaykeywords()
        {
        echo '<meta name="keywords" content="'.htmlentities($this ->keywords).'" />';
        }
        0
      2. fifouta > Utilisateur anonyme
         
        super ça marche merci
        0