使用变量在 PHP HTML 中循环和获取图像


using a variable to loop and get images in PHP HTML

我找不到我的代码有什么问题。

我想在循环中使用$i来获取图像。但它不起作用。怎么了?

while($i<=64)
{
    $sql = pg_query("SELECT * FROM foods WHERE foodId = '".$i."';") or die("Query failed with error: ".pg_last_error($conn));
    $row = pg_fetch_array($sql);
    $j = $i%2;
    if($j==1)
    {
        echo "<label class='checkbox1'> <input type='checkbox' name='foods' value='".$row['foodname']."'>".$row['foodname']."</label><img src='/images/".$i.".jpg'><br/>";
    }
    else
    {
        echo "<label class='checkbox2'><input type='checkbox' name='foods' value='".$row['foodname']."'>".$row['foodname']." <label><img src='/images/".$i.".jpg'><br/>";   
    }
    $i++;
}

IMG 标记无法正常工作。

要么是

你没有将 i 设置为任何东西: $i = 0;

或者你有一个不起作用的数字周围的"'。

删除 ' ' 并将$i设置为 0。

应该工作。

编辑:仅在处理字符串时使用" '。

如果您没有显示图像,请在浏览器中运行PHP文件,然后右键单击页面并选择"查看源代码"导航到代码所在的位置并检查正在调用的内容。您的代码可能未定位到正确的区域。

$i = 0; // Set $i;
while($i<=64)
{
    $sql = pg_query("SELECT * FROM foods WHERE foodId = $i;") or die("Query failed with error: ".pg_last_error($conn));
    $row = pg_fetch_array($sql);
    $j = $i%2;
    if($j==1)
    {
        echo "<label class='checkbox1'> <input type='checkbox' name='foods' value='".$row['foodname']."'>".$row['foodname']."</label><img src='/images/".$i.".jpg'><br/>";
    }
    else
    {
        echo "<label class='checkbox2'><input type='checkbox' name='foods' value='".$row['foodname']."'>".$row['foodname']." <label><img src='/images/".$i.".jpg'><br/>";   
    }
    $i++;
}

循环进行了轻微重写,因为有些人注意到$i可能没有正确初始化。我注意到您错过了关闭第二个标签。虽然"但它不起作用"是相当笼统的。你得到任何输出吗?图像路径是否错误?图像真的存在吗?

for($i = 0; $i <= 64; $i++)
{
    $sql = pg_query("SELECT * FROM foods WHERE foodId = '".$i."';") or die("Query failed with error: ".pg_last_error($conn));
    $row = pg_fetch_array($sql);
    $class = ($i%2 == 1) ? "checkbox1" : "checkbox2";
    echo "<label class='".$class."'> <input type='checkbox' name='foods' value='".$row['foodname']."'>".$row['foodname']."</label><img src='/images/".$i.".jpg'><br/>";
}
$result = pg_query("SELECT * FROM foods WHERE foodId < 65;") or die("Query failed with error: ".pg_last_error($conn));
$rows = pg_fetch_all($result);
foreach ( $rows as $row ) {
    $j = ( $row['foodId'] & 1 ? 1 : 2 );
    echo "<label class='"checkbox{$j}'"> <input type='"checkbox'" name='"foods'" value='"{$row['foodname']}'">{$row['foodname']}</label><img src='"/images/{$row['foodId']}.jpg'"><br/>";
}

好的,这是一个相当大的重写 - 但 65 个查询 - 真的吗?! 一个人会为此做:)

$j是通过检查$row['foodId']和1来设置

echo 中的 ''" 只是转义了 " 标记,因此我们可以使用 "{$php_variable}" - 恕我直言,这比所有 .串联运算符。

您的原始代码混合了 ' 和 " - 可能有些在错误的地方 - 也许是 img 失败的原因。

正如几个人所说 - 检查生成的 html 源代码并证明这些图像确实存在 - src="/images/1.jpg" 是一个绝对路径 - 所以如果你在 localhost/my_test_folder 上运行这段代码,如果图像不在 localhost/images 中,它将失败。

也许尝试一个相对路径 - src="images/1.jpg" - 没有前导/