2012-11-19 143 views
1

此代码正在为我需要它做的工作,但(在我看来)它看起来不好,所以我希望有人知道更干净或更有效的方法来做同样的事情。我有几个条目正在从数据库中提取,我希望它们的样式完全相同。只有徽标和链接名称会改变,最终我会添加一个描述。下面是代码:有没有更好或更有效的方法来做到这一点?

<div class="content"> 

    <?PHP 
     while($row = $stmt->fetch()) 
     { 
      $name = $row['name']; 
      $id = $row['id']; 
      $logo = $row['logo']; 
      $username = $row['username']; 
      echo "<div class=" . "Links" . ">"; 

      echo "<div class=" . "linkImages" . ">";       
      echo "<br>" . "<a href=" . "Profile.php?id=".$id . ">" . "<img src=" . "users/" . $username . "/images/" . $logo . " " . "width=" . "200" . " " . "height=" . "auto" . " " . "border=" . "0" . "/>" . "</a>"; 
      echo "</div>"; 

      echo "<div class=" . "linkName" . ">"; 
      echo "<a href=" ."Profile.php?id=".$id .">" . $name ."</a>"; 
      echo "</div>"; 

      echo "</div>"; 

     } 
    ?> 

</div> 
+1

你想做什么? –

+1

你可以把它变成一个功能,但如果它的工作 - 继续前进你有更好的事情要做。 – 2012-11-19 19:09:47

+0

也许你可以做一堂课,但作为一般规则,如果它有效,不要改变它,除非你有时间适当地做。 – Rafael

回答

4

你可以平凡通过切换到HEREDOC除去大部分回声和字符串连接的:

while($row = $stmt->fetch()) { 
    echo <<<EOL 
<div class="links"> 
yadayada 
<br><a href="Profile.php?id={$row['id']}"><img src="users/{$row['username']}" etc.... 
yada yada yada 
EOL; 

注意,无法在那里逃脱的,允许各地适当的引号标签属性以及嵌入式变量的表示法。

1

请勿使用额外的变量名称。相反,请使用原件。

另外,不要用PHP输出每一行。使用纯HTML和它添加变量之后:

<div class="Links"> 
<a href="Profile.php?id="<?=$row['id']?>"><?=$row['name']?></a> 

或者只是回声为1号线,无需拼接

echo "<div class=\"linkImages\">";       

echo '<div class="linkImages">';       
1
echo '<div class="content">'; 

while($row = $stmt->fetch()){ 
    $name = $row['name']; 
    $id = $row['id']; 
    $logo = $row['logo']; 
    $username = $row['username']; 
    echo '<div class="Links"> 
      <div class="linkImages"> 
       <br><a href="Profile.php?id='.$id .'"><img src="users/'.$username.'/images/'. $logo .'" width="200" height="auto" border="0"></a> 
      </div> 
      <div class="linkName"> 
       <a href=Profile.php?id='.$id .'">'.$name.'</a> 
      </div> 
     </div>'; 
} 

echo '</div>'; 
1

下面是我会写它:

<div class="content"> 
    <?php 
    while ($row = $stmt->fetch()){ 
     echo '<div class="Links">'; 
     echo '<div class="linkImages">'; 
     echo '<br /><a href="Profile.php?id='. $row['id'] .'"><img src="users/'. $row['username'] .'/images/'. $row['logo'] .'" width="200" /></a>'; 
     echo '</div>'; 
     echo '<div class="linkName">'; 
     echo '<a href="Profile.php?id='. $row['id'] .'">'. $row['name'] .'</a>'; 
     echo '</div>'; 
    } 
    ?> 
</div> 

请注意,我删除了img标签的border =“0” - 应该使用CSS完成。

0

简短的回答是肯定的。几乎总是有一种更清洁或更有效的方式来做到这一点。

这样的事情呢?

 <div class="content"> 

     <?PHP while($row = $stmt->fetch()) { ?> 

      <div class="Links"> 
       <div class="linkImages"> 
        <br><a href="Profile.php?id="<?=$row['id'] ?>"><img src="users/<?=$row['username'] ?>/images/<?=$row['logo'] ?> width="200" height="auto" border="0" /></a> 
       </div> 
       <div class="linkName"> 
       <a href="Profile.php?id="<?=$row['id'] ?>><?=$row['name'] ?></a> 
       </div> 
      </div> 

     <?PHP } ?> 

    </div> 
0

有很多在这个错误的符号等,它带有的做法,但这样的事情可能是值得一试

<?php 
while($row = $stmt->fetch()) { 
    $string = ""; 

    $string .= "<div class=\"Links\">\n"; 
    $string .= "<div class=\"linkImages\">\n";       
    $string .= "<br />\n"; 
    $string .= "<a href=\"Profile.php?id=\"".$row['id'] . "><img src=\"users/". $row['name'] ."/images/" . $row['logo'] . "\" width=\"200\" height=\"auto\" border=\"0\" /></a>\n"; 
    $string .= "</div>\n"; 

    $string .= "<div class=\"linkName\">\n"; 
    $string .= "<a href=\"Profile.php?id=". $row['id'] .">". $row['name'] ."</a>\n"; 
    $string .= "</div>\n"; 
    $string .= "</div>\n"; 

    echo $string; 
} 
?> 
0

我建议学习如何使用printf()家庭功能。

$frame = '<a href="Profile.php?id=%s"><img src="users/%s/images/%s" width="200" height="auto" border="0"/></a>'; 
printf($frame, $id, $username, $logo); 
相关问题