【问题标题】:echo image according to a condition根据条件回波图像
【发布时间】:2016-12-13 18:31:37
【问题描述】:

我这里有一个 HTML 标签:

<span class="fa-stack fa-5x has-badge" >
    <div class="badgesize">
        <img src="badgeImages/1.png"  alt=""   >
    </div>
</span> -->

用于检索信息并将其存储在变量中的查询:

$q4 = "SELECT TOP 3 b.BadgeName, b.BadgeImage FROM BadgeImageTable AS b
INNER JOIN employee_badge AS e
ON e.badge_id = b.BadgeID
WHERE e.employee_id = 2164
ORDER BY e.earned_on DESC ";
$stmt3=sqlsrv_query($conn,$q4);
if($stmt3==false)
{
echo 'error to retrieve info !! <br/>';
die(print_r(sqlsrv_errors(),TRUE));
}

在图像标签中,我试图呼应具有某种条件的徽章图像。

<span class="fa-stack fa-5x has-badge" >

        <div class="badgesize">

            <img src="

<?php

if($count = sqlsrv_num_rows($stmt3) > 0){
while($recentBadge = sqlsrv_fetch_array($stmt3)){
$result[] = $recentBadge;
}

if($count > 3){
$result = array_rand($result, 3);
                      }

foreach($result as $recentBadge){
echo
$recentBadge['BadgeName'],
'<img src="'.$recentBadge['BadgeImage'].'">',
'<br>'
  ;
  }
  } else {
  echo 'no results';
      }

      ?>

      "  alt=""  >

    </div>

</span>

以上PHP条件:

如果计数大于 3,我想回显任意三个随机图像,否则回显任何 '$recentBadge' 给出的结果。

问题: 根据上述情况,我无法回显。

每当我尝试在没有任何条件的情况下回显一个简单的图像(使用低于 PHP)时,我都可以毫无问题地这样做。所以,我能够从数据库中获取图像,问题在于条件 PHP。

    <img src="<?php echo "".($badgerecent['BadgeImage']).""; ?>" >

【问题讨论】:

  • 一些合理的代码缩进是个好主意。它可以帮助我们阅读代码,更重要的是,它将帮助 您调试代码 Take a quick look at a coding standard 为您自己谋福利。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • 问题您实际在多少台 SQL Server 上进行测试?
  • if($count = sqlsrv_num_rows($stmt3) &gt; 0){ 需要清理。
  • @RiggsFolly 谢谢。请记住这一点。服务器标签无关紧要,因为我在这里遇到了 php 的问题。我明白你指的是什么。无论如何,谢谢你的建议。上帝保佑。

标签: php sql-server sql-server-2008 sql-server-2005 sql-server-2012


【解决方案1】:

您的代码的输出是将&lt;img&gt; 标签放在标签的 src 属性中。
根据定义,这在 HTML 中不起作用。如果其他一切都正确,这应该可以工作:

<?php

function get_random_elements( $array,$limit = 0 ) {

    shuffle($array);

    if ( $limit > 0 ) {
        $array = array_splice($array, 0, $limit);
    }
    return $array;
}

function render_images() {
    global $stmt3;
    $output = '';

    if ($count = sqlsrv_num_rows($stmt3) > 0) {
        while ($recentBadge = sqlsrv_fetch_array($stmt3)) {
            $result[] = $recentBadge;
        }

        if ($count > 3) {
            $result = get_random_elements(result, 3);
        }

        foreach ($result as $recentBadge) {
            $output .= $recentBadge['BadgeName'];
            $output .= '<img src="' . $recentBadge['BadgeImage'] . '" alt="">';
            $output .= '<br>';
        }
    } else {
        $output = 'no results';
    }

    return $output;
}
?>

<span class="fa-stack fa-5x has-badge" >

    <div class="badgesize">

        <?php echo render_images(); ?>

    </div>

</span>

提示:请尽量保持代码分离,逻辑与视图分离。

【讨论】:

  • 嘿,感谢您的输入。不幸的是,我收到一个错误 --- 解析错误:语法错误,C:\xampp\htdocs\web1\profile\index 中出现意外的 'var' (T_VAR)。 php 在第 302 行
  • 请立即重试。我犯了一个错误,因为我习惯了我现在使用的编程语言(C# & JS)
  • 非常感谢您的尝试,不幸的是,我遇到了错误。
  • @jane 我的函数有错误。我现在修好了。如果您的代码是正确的,它应该可以工作。这是一个没有数据库的类似示例:glot.io/snippets/el7dyiw1ca
  • @Xorifelse 确实如此。我通过添加一种新方法来获取随机值而不是随机键来解决这个问题。
猜你喜欢
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2014-04-16
  • 2019-04-13
相关资源
最近更新 更多