2009-05-18 9 views
3

i ont le code suivant dans mon detailansicht.php:utiliser Img source avec variable php?

<div class="file_description_box"> 
    <b>Beschreibung:</b><br /><br /> 
     <?php 
      if(!empty($beschreibung)) 
       echo '<div align="center">'; 
       echo '<img src="$coverlink" alt="Cover">'; 
       echo '</div><br />'; 
       echo format_content($beschreibung); 
      **else** 
      echo '<i>Keine Beschreibung vorhanden</i>'; 
     ?> 
</div> 

mais je pense qu'il doit y avoir une erreur dans la balise img. à chaque fois que j'ouvre la page, il me montre une erreur: "Erreur d'analyse: erreur de syntaxe, T_ELSE inattendu dans bla/bla/include/detailansicht.php sur la ligne 123" (ligne 123 est l'autre marqué gras). J'ai essayé plusieurs méthodes mais j'ai toujours cette erreur. Ce serait bien, si quelqu'un pouvait m'aider avec ça.

-sTarbuZz

+1

Envisager d'écrire tout le code en anglais et non en allemand. C'est très énervant de maintenir le code de la bilangue. – pduersteler

Répondre

15

Il vous manque quelques accolades et votre variable PHP était propriété non embedded. Votre code devrait ressembler à ceci:

<div class="file_description_box"> 
    <b>Beschreibung:</b><br /><br /> 
     <?php 
      if(!empty($beschreibung)){ 
       echo '<div align="center">'; 
       echo '<img src="'.$coverlink.'" alt="Cover">'; 
       echo '</div><br />'; 
       echo format_content($beschreibung); 
      }else{ 
       echo '<i>Keine Beschreibung vorhanden</i>'; 
       } 
     ?> 
</div> 

Juste un côté note, il n'a pas d'importance ce que vous utilisez PHP, s'il y avait un défaut avec l'étiquette d'image et il n'a pas été affiché correctement, il serait généralement être un problème HTML en supposant que vous l'avez sorti correctement.

Dans ce cas c'était un problème de PHP car il y avait quelques erreurs dans le code, ça n'a rien à voir avec l'image tag.

1

Il vous manque des accolades:

if() { 
... 
} else { 
... 
} 

de sorte que votre PHP n'est pas syntaxiquement correct et ne sera pas analysée par PHP hypertexte pré-processeur.

1

Essayez d'utiliser des accolades:

<?php 
    if(!empty($beschreibung)) { 
     echo '<div align="center">'; 
     echo '<img src="$coverlink" alt="Cover">'; 
     echo '</div><br />'; 
     echo format_content($beschreibung); 
     } else { 
     echo '<i>Keine Beschreibung vorhanden</i>'; 
     } 
?> 
1

utilisation

echo '<img src="', $coverlink', " alt="Cover">'; 

variables PHP à l'intérieur en guillemet simple ne sera pas évalué

+0

Whoa là cowboy, je pense que vous voulez dire '. $ Coverlink.' – Sam152

1

Eh oui, vous manquez les accolades. Le simple fait de formater correctement le code avec des onglets ne le rendra pas un bloc.

Vous avez également manqué la fin de la balise img (/>), mais cela n'a rien à voir avec votre question.

1

Je pencherais pour la alternative syntax que je ressens est plus facile sur les yeux entremêlés avec html:

<? if(!empty($beschreibung)) : ?> 
    <div align="center"> 
     <img src="<?= $coverlink; ?>" alt="Cover"> 
    </div><br /> 
    <?= format_content($beschreibung); ?> 
<? else : ?> 
    <i>Keine Beschreibung vorhanden</i> 
<? endif ; ?> 

PS: Je ne dis pas logique de mettre à l'intérieur du balisage, tout en notant qu'il peut être fait.

modifier: erreur de syntaxe fixe (, après endif au lieu de :)

1
<?php 
    if(!empty($beschreibung)) { 
     echo "<div align=\"center\">"; 
     echo "<img src=\"$coverlink\" alt=\"Cover\">"; 
     echo "</div><br />"; 
     echo format_content($beschreibung); 
     } else { 
     echo "<i>Keine Beschreibung vorhanden</i>"; 
     } 
?> 
+0

Vous n'avez pas besoin d'échapper les guillemets doubles entre guillemets simples. – Sam152

+2

true ... mais j'ai fait que son script ne m'appartenait pas;) – x4tje

1

Merci pour toutes vos réponses ... J'essaie la méthode de Kris maintenant ...

Et la chose avec les parenthèses ... je ne sais pas comment cela pourrait arriver ... je n'ai pas écrit le script original (j'ai juste ajouté la partie avec la couverture) et je n'ai pas reconnu qu'il y avait des parenthèses manquantes , parce que $ beschreibung n'est jamais vide et je pense que php ignore le si et sinon si les parenthèses sont manquantes ...

+1

Non, la raison pour laquelle cela a fonctionné avant est parce que s'il n'y a qu'une seule instruction suivant le "si", alors vous n'avez pas besoin des accolades pour le "else" ". "if ($ foo) blah(), sinon bleh();" est valide PHP, mais si "blah() est plus d'une instruction, vous avez besoin des accolades – dirtside

+0

Toujours ajouter les accolades Si sy n'ajoute pas les accolades à 1 ligne si/else-s, frappe-le fort :) –