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

余分な変数名は使用しないでください。代わりに、オリジナルを使用してください。

また、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

これが私がそれを書く方法です:

<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で行う必要があります。

于 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 に答える