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>
4

7 回答 7

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;

请注意,其中没有转义,允许在标签属性周围使用适当的引号,以及{}嵌入变量的符号。

于 2012-11-19T19:09:02.093 回答
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">';                        
于 2012-11-19T19:09:30.250 回答
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>';
于 2012-11-19T19:10:08.520 回答
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 标记的边框 =“0” - 这应该使用 CSS 完成。

于 2012-11-19T19:13:14.700 回答
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>
于 2012-11-19T19:16:39.397 回答
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;
}
?>
于 2012-11-19T19:17:12.143 回答
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);
于 2012-11-19T19:22:39.073 回答