php - while循环导致网站消失

标签 php html css

$i = 0;
$sql_query = mysql_query("SELECT * FROM designs WHERE accessibility=`2` ORDER BY id DESC LIMIT 5");
while ($row = mysql_fetch_assoc($sql_query) {
    if ($i == "0") { ?><div style="width: 49%; float: left;"><a href="designs.php?id=<?php echo $row["id"]; ?>"><img id="lookup_designs_item_icon" src="img/designs/<?php echo $row["id"]; ?>.jpg" alt="<?php echo $row["resolution"]; ?> | <?php echo $row["artist"]; ?>"/></a></div>
    <?php } elseif ($i == "1") { ?><div style="width: 49%; float: right;"><a href="designs.php?id=<?php echo $row["id"]; ?>"><img id="lookup_designs_item_icon" src="img/designs/<?php echo $row["id"]; ?>.jpg" alt="<?php echo $row["resolution"]; ?> | <?php echo $row["artist"]; ?>"/></a></div>
    <?php } $i++; if ($i == "7") { end while; }
}

为什么这段代码不起作用?如果我在没有数据库的情况下手动进行。您知道,只要认为您是 PHP 并用 HTML 和 CSS 创建代码,它就可以工作。但是一旦您将 PHP 混入其中,整个网站就会一片空白。

最佳答案

while ($row = mysql_fetch_assoc($sql_query) {

"PHP Parse error: syntax error, unexpected '{' in

如评论中所述,您在 while 条件中缺少右括号(圆括号),在左括号(波浪括号)之前。这应该是:

while ($row = mysql_fetch_assoc($sql_query)) {

但是,您在 while 循环结束时确实有另一个明显的解析错误。以下是无效语法:

if ($i == "7") { end while; }

这应该是:

if ($i == "7") { break; }

"mix PHP and HTML like that" - just don't mix PHP and HTML like that... it's hard to read/maintain.

无论使用何种语法(传统的或替代的(Tero Kilkanen 建议的)- 旨在使此类代码更易于阅读),您根本不应该像这样混合使用 PHP 和输出, 通过退出/加入 PHP 解析模式。

如果您需要构建一些 HTML 稍后输出,那么构建一个字符串并在循环结束时 echo 一次。

所以,而不是这个:

    $i = 0;
            $sql_query = mysql_query("SELECT * FROM designs WHERE accessibility=`2` ORDER BY id DESC LIMIT 5");
            while ($row = mysql_fetch_assoc($sql_query) {
            if ($i == "0") { ?><div style="width: 49%; float: left;"><a href="designs.php?id=<?php echo $row["id"]; ?>"><img id="lookup_designs_item_icon" src="img/designs/<?php echo $row["id"]; ?>.jpg" alt="<?php echo $row["resolution"]; ?> | <?php echo $row["artist"]; ?>"/></a></div>
            <?php } elseif ($i == "1") { ?><div style="width: 49%; float: right;"><a href="designs.php?id=<?php echo $row["id"]; ?>"><img id="lookup_designs_item_icon" src="img/designs/<?php echo $row["id"]; ?>.jpg" alt="<?php echo $row["resolution"]; ?> | <?php echo $row["artist"]; ?>"/></a></div>
            <?php } $i++; if ($i == "7") { end while; }
    }

做这样的事情:

// HTML to be output
$htm = '';

$i = 0;
$sql_query = mysql_query("SELECT * FROM designs WHERE accessibility=`2` ORDER BY id DESC LIMIT 5");
while ($row = mysql_fetch_assoc($sql_query)) {
    if ($i == "0") {
        $htm .= <<<EOD
<div style="width: 49%; float: left;">
    <a href="designs.php?id={$row["id"]}"><img id="lookup_designs_item_icon" src="img/designs/{$row["id"]}.jpg" alt="{$row["resolution"]} | {$row["artist"];}"/></a>
</div>
EOD;
    }
    elseif ($i == "1") {
        $htm .= <<<EOD
<div style="width: 49%; float: right;">
    <a href="designs.php?id={$row["id"]}"><img id="lookup_designs_item_icon" src="img/designs/{$row["id"]}.jpg" alt="{$row["resolution"];} | {$row["artist"];}"/></a>
</div>
EOD;
    }
    $i++;
    if ($i == "7") {
        break;
    }
}

// Output HTML
echo $htm;

代码现在更容易一目了然,而且很快就会发现可以进行进一步的优化。例如……

  • if block 之间似乎唯一不同的是样式属性的 float: left/float: right 部分。所以这些可以结合起来。
  • $i 是一个整数,但您正在将它与 if 条件中的字符串进行比较。这有效,但不是“正确的”。
  • 当 $i 为 2、3、4、5 或 6 时,您似乎没有在循环中执行任何操作?所以你应该早点休息。 IE。简单地 else { break; 似乎做同样的事情?

关于php - while循环导致网站消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25700710/

相关文章:

html - 显示 Zurb 的社交图标时出现问题

html - 缩小进度条

html - 倾斜 Div 上的导航栏

javascript - 处理 3D 饼图和大标签时的 Highcharts 问题

php - 验证 curl 是否使用 TLS

php - Wordpress 导航菜单在 ul 之前添加 div

html - 当我调整浏览器窗口大小时,我的图像会调整大小以适合它,但如果我放大或缩小图像,图像会保持相同大小

jquery - float 页脚 jquery 插件? (不是常见的 "how to make a footer stick to the bottom of the page")

php - laravel Eloquent ORM delete() 方法

javascript按钮在其他按钮中重复操作