Au secour erreur php

Résolu
Bonjour,

je vient d'ajouter une ligne de code et j'ai eu une erreur Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/auto7837/public_html/rechercheavendre.php on line 305
sur internet il semblent dire que ca vient des double quotes

voici mon code la partie en gras est l'erreur

<?
mysql_connect('localhost', 'xxxx', 'xxx');
mysql_select_db("xxxx");
$sql = "SELECT * FROM avendrepubliee";
$req = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_array($req))
{
$id=$row['id']; $typedannonce=$row['typedannonce'];
$marque=$row['marque']; $autres=$row['autres'];
$modele=$row['modele']; $prix=$row['prix'];
$negociable=$row['negociable']; $annee=$row['annee'];
$etat=$row['etat']; $carburant=$row['carburant'];
$kilometrage=$row['kilometrage']; $transmission=$row['transmission'];
$immatricule=$row['immatricule']; $climatisation=$row['climatisation'];
$audio=$row['audio']; $cylindre=$row['cylindre'];
$puissance=$row['puissance']; $consommation=$row['consommation'];
$couleurinterieure=$row['couleurinterieure']; $couleurexterieure=$row['couleurexterieure'];
$email=$row['email']; $message=$row['message']; $date=$row['date']; $image=$row['image'];

echo "<table align='center' width='700' border='0'>
<tr>
<td width='114'>
$i=1;
if($row['image'.$i]) {
echo '<center>
<a href="photos/avendrenp/'.$row['image'.$i].'" alt="Voir image en grand">
<img src="photos/avendrenp/'.$row['image'.$i].' " width="300" />
</a>
</center>';
</td>
<td width='258' height='78'> </td>
<td align='center' width='147'>".$prix."</td>
<td align='center' width='153'>".$date."</td>
</tr>";
}
?>

3 réponses

Résumé de la discussion

Une erreur Parse error survient après l'ajout d'une ligne de code manipulant des guillemets dans une chaîne affichée par echo, visant à générer une table HTML pour des annonces. Les difficultés proviennent de la fermeture incorrecte des guillemets et de l'inclusion de variables dans des constructions comme $row['image'.$i], ce qui déclenche T_ENCAPSED_AND_WHITESPACE dans le fichier rechercheavendre.php. Des conseils consistent à ne pas imbriquer des echos et à restructurer le rendu HTML en dehors d'un seul echo, afin de corriger les appels aux images et aux champs prix et date. En dernier, certains évoquent que le problème tient surtout à la fermeture des chaînes et à des tentatives d'accès multi-echo, ce qui nécessite une réécriture complète du bloc d'affichage.

Bobot (l’IA à votre service)
  1. Il n'y a pas pas qu'une erreur !
    echo non fermé :
    echo "<table align='center' width='700' border='0'> 
    <tr> 
    <td width='114'> 
    

    echo fermé trop tôt
    </center>'; </td>

    et là, il en manque...
    <td align='center' width='147'>".$prix."</td> 
    <td align='center' width='153'>".$date."</td> 
    


    <blockquote cite="Shakespeare">To be or not to be ; That is the question...</blockquote>
    1. dsl mais je comprend pas ta solution mon echo doit se terminer ici
      <td align='center' width='153'>".$date."</td>
      </tr>";
    2. Ah... j'ai compris : tu veux imbriquer des echos !! Mais non, ça ne marche pas du tout comme ça.
      Faut refaire !
    3. juste avant que j'essaie de mettre mon image tout fonctionnait bien donc il y a probleme dans la pertie en gras avec les quyotes
    4. bien sûr ! tu es resté dans le echo.
      C'est ce que je viens de te dire : là tu imbriques des echos. Ça ne peut pas fonctionner. Il faut les fermer et les ouvrir au besoin.
    5. je ne suis pas sur que tu comprend le probleme ou la situation dans le fond c'est un site d'annonce classé et il affiche une previsualisation de chaque annonce avec une image tout marche bien sauf quand j'introduit l'image peut-etre j'introduit mal l'image dans le code le echo fait apparaitre un tableau avec tout les informations
  2. Notobe a raison c'est un probleme de echo non fermé :

    echo "<table align='center' width='700' border='0'>
    <tr>
    <td width='114'>
    $i=1;
    if($row['image'.$i]) {
    <center>
    <a href='photos/avendrenp/".$row['image'.$i]." ' alt='Voir image en grand'>
    <img src='photos/avendrenp/".$row['image'.$i]." ' width='300' />
    </a>
    </center></td>
    <td width='258' height='78'> </td>
    <td align='center' width='147'>".$prix."</td>
    <td align='center' width='153'>".$date."</td>
    </tr>";

    et pas : ----------------------------------------------CECI :

    echo "<table align='center' width='700' border='0'>
    <tr>
    <td width='114'>
    $i=1;
    if($row['image'.$i]) {
    echo '<center>
    <a href="photos/avendrenp/'.$row['image'.$i].'" alt="Voir image en grand">
    <img src="photos/avendrenp/'.$row['image'.$i].' " width="300" />
    </a>
    </center>'; </td>
    <td width='258' height='78'> </td>
    <td align='center' width='147'>".$prix."</td>
    <td align='center' width='153'>".$date."</td>
    </tr>";

    lezao : quand tu sais pas , tu me demandes je sais tout....non je déconne...presque tout.
    1. Il ne faut pas melanger double guillement et simple guillement, de plus tu mets deux echo, c'est un foutoir absolu, on ouvre avec double guillement et on ferme avec double guillemet et point virgule, tout ce qui se trouve a l'interieur du echo doit etre en simple guillemet ou avec un point pour coller la chaine.
    2. De plus apres avoir réparé ça tuvas avoir un nouveau probleme car mettre une variable d'incrementation sur 1 dans une boucle while ça va etre dur :

      $i=1;

      Doit etre en dehors de ta boucle while...et c'est pas tout au niveau incrémentation tu va galerer je pense , c'est pas tres net tout ça.... tu ne dois pas mettre de numero de champ image dans une boucle qui affiche elle meme le champ ? ça ne veut rien dire, bonne chance en tout cas lol.
    3. merci ca avance il me reste une erreur la voici Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/auto7837/public_html/rechercheavendre.php on line 304

      echo "<table align='center' width='700' border='0'>
      <tr>
      <td width='114'>
      $i=1;
      --> ligne 304 if($row['image'.$i]) {
      <center>
      <a href='photos/avendrenp/".$row['image'.$i]." ' alt='Voir image en grand'>
      <img src='photos/avendrenp/".$row['image'.$i]." ' width='300' />
      </a>
      </center></td>
      <td width='258' height='78'> </td>
      <td align='center' width='147'>".$prix."</td>
      <td align='center' width='153'>".$date."</td>
      </tr>";
      <td width='258' height='78'> </td>
      <td align='center' width='147'>".$prix."</td>
      <td align='center' width='153'>".$date."</td>
      </tr>";
    4. le i=1 c'est le numéro de l'image car il y a 5 image et je veut la premiere :)
    5. Pourquoi deux fois :

      <td width='258' height='78'> </td>
      <td align='center' width='147'>".$prix."</td>
      <td align='center' width='153'>".$date."</td>
      </tr>";
      <td width='258' height='78'> </td>
      <td align='center' width='147'>".$prix."</td>
      <td align='center' width='153'>".$date."</td>
      </tr>";

      c'est une erreur de frappe ou ton code est comme ça ? elle est pas la ton erreur ?
  3. Voila c'est pret tout chaud sortie du four tu comprend mieux maintenant ce que je veux dire, tu vas voir ça marche !?

    <?
    mysql_connect('localhost', 'xxxxxx', 'xxxxx');
    mysql_select_db("fffffff");
    $sql = "SELECT * FROM avendrepubliee";
    $req = mysql_query($sql) or die(mysql_error());

    while($row = mysql_fetch_array($req))
    {
    $id=$row['id']; $typedannonce=$row['typedannonce'];
    $marque=$row['marque']; $autres=$row['autres'];
    $modele=$row['modele']; $prix=$row['prix'];
    $negociable=$row['negociable']; $annee=$row['annee'];
    $etat=$row['etat']; $carburant=$row['carburant'];
    $kilometrage=$row['kilometrage']; $transmission=$row['transmission'];
    $immatricule=$row['immatricule']; $climatisation=$row['climatisation'];
    $audio=$row['audio']; $cylindre=$row['cylindre'];
    $puissance=$row['puissance']; $consommation=$row['consommation'];
    $couleurinterieure=$row['couleurinterieure']; $couleurexterieure=$row['couleurexterieure'];
    $email=$row['email']; $message=$row['message']; $date=$row['date']; $image=$row['image'];

    echo "<table align='center' width='700' border='0'>
    <tr>
    <td width='114'>
    <center>
    <a href='photos/avendrenp/".$row['image1']." ' alt='Voir image en grand'>
    <img src='photos/avendrenp/".$row['image1']." ' width='300' />
    </a>
    </center></td>
    <td width='258' height='78'> </td>
    <td align='center' width='147'>".$prix."</td>
    <td align='center' width='153'>".$date."</td>
    </tr></tr>
    </table> ";

    }

    ?>

    <p> </p>

    lezao : quand tu sais pas , tu me demandes je sais tout....non je déconne...presque tout.
    1. merci ca marche impec

      qu'est ce que tu as modifier que je comprenne mieux

      tu me sauve la peau merci beraucoup

      résolu :D:D
    2. PAr contre laisse pas le TR dehors j'ai oublié de le rentrer :

      En fait une variable d'incrementation sert a a incrementer soit a additioner 1 a chaque passage de ligne donc inutile dans ton cas, quand tu appele un champ tu donnes le nom du champ exemple champ image1 s'appelle champ "image 1"

      SQL passe chaque ligne en vue, grace a la boucle while donc il suffit de donner le nom du champ pour qu'il sa'ffiche, mais tu avais des erreurs de syntax aussi, tu as mis une condition de type if($row : ) ça ne veut rien dire en programation, donc le systeme est devenu fou !

      Je te conseille de lire des tutoriaux tres simple comme les conditions, l'incrémentation et les requettes SQL.

      Bon courage a toi et continues le php c'est génial !

      Voici le code avec le TR du tableau rentré au sinon ça va etre mauche :

      <?
      mysql_connect('localhost', 'xxxxxx', 'xxxxx');
      mysql_select_db("fffffff");
      $sql = "SELECT * FROM avendrepubliee";
      $req = mysql_query($sql) or die(mysql_error());

      while($row = mysql_fetch_array($req))
      {
      $id=$row['id']; $typedannonce=$row['typedannonce'];
      $marque=$row['marque']; $autres=$row['autres'];
      $modele=$row['modele']; $prix=$row['prix'];
      $negociable=$row['negociable']; $annee=$row['annee'];
      $etat=$row['etat']; $carburant=$row['carburant'];
      $kilometrage=$row['kilometrage']; $transmission=$row['transmission'];
      $immatricule=$row['immatricule']; $climatisation=$row['climatisation'];
      $audio=$row['audio']; $cylindre=$row['cylindre'];
      $puissance=$row['puissance']; $consommation=$row['consommation'];
      $couleurinterieure=$row['couleurinterieure']; $couleurexterieure=$row['couleurexterieure'];
      $email=$row['email']; $message=$row['message']; $date=$row['date']; $image=$row['image'];

      echo "<table align='center' width='700' border='0'>
      <tr>
      <td width='114'>
      <center>
      <a href='photos/avendrenp/".$row['image1']." ' alt='Voir image en grand'>
      <img src='photos/avendrenp/".$row['image1']." ' width='300' />
      </a>
      </center></td>
      <td width='258' height='78'> </td>
      <td align='center' width='147'>".$prix."</td>
      <td align='center' width='153'>".$date."</td>
      </tr></tr>
      </table> ";

      }

      ?>