如何在 php 中仅显示 mysql 数据库中的第一张图像

我有以下代码。如何在代码末尾显示数据库中索引为 0 的第一张图像以显示大图像?现在它显示数据库中的最后一张图像。



    <div id="imgWheel" class="treatmentContainer">

   <?php

        $query = "SELECT * FROM images WHERE user = 0 ORDER BY id;";

        $result = $mysqli->query($query);

           while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

             $product = $row["product"];

             $room = $row["room"];

             $style = $row["style"];

             $tags = $row["tags"];

             $src = $row["url"];

             $dataid = $row["id"];

                        

              $imgClass = "";

               if (in_array($src, $favourites)) {

                   $imgClass = " favourite";

               }

                        

echo "<div class='treatment$imgClass' data-url='$src' data-product='$product' data-room='$room' data-style='$style' data-tags='$tags' data-number='$dataid' id='pic_$dataid' >";

echo "<img src='$src' crossorigin='anonymous'/>";

echo "</div>";

}

?>   

                    

</div> <!-- close imgWheel -->   


<!-------- Large Image Display------- -->


<div id="display">

     <img  id="mainImage" src="<?php echo $src ?>" /> 

</div>


蛊毒传说
浏览 77回答 4
4回答

胡子哥哥

您的结果集已经按 id 排序,因此您只需要一个变量,用第一个 imageurl 填充一次<div id="imgWheel" class="treatmentContainer"><?php&nbsp; &nbsp; $bigpictureurl = "";&nbsp; &nbsp; $query = "SELECT * FROM images WHERE user = 0 ORDER BY id;";&nbsp; &nbsp; $result = $mysqli->query($query);&nbsp; &nbsp; &nbsp; &nbsp;while ($row = $result->fetch_array(MYSQLI_ASSOC)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$product = $row["product"];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$room = $row["room"];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$style = $row["style"];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$tags = $row["tags"];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$src = $row["url"];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$dataid = $row["id"];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (empty($bigpictureurl)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$bigpictureurl = $src ;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $imgClass = "";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (in_array($src, $favourites)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$imgClass = " favourite";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;echo "<div class='treatment$imgClass' data-url='$src' data-product='$product' data-room='$room' data-style='$style' data-tags='$tags' data-number='$dataid' id='pic_$dataid' >";echo "<img src='$src' crossorigin='anonymous'/>";echo "</div>";}?>&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div> <!-- close imgWheel -->&nbsp; &nbsp;<!-------- Large Image Display------- --><div id="display">&nbsp; &nbsp; &nbsp;<img&nbsp; id="mainImage" src="<?php echo $bigpictureurl ?>" />&nbsp;</div>

凤凰求蛊

既然您的陈述中包含了所有这些内容WHILE,我假设您想要echo所有这些记录。然后最后显示第一张图片。因此,对于“大图像显示”,请尝试一下:<div id="display">&nbsp; &nbsp; &nbsp;$query = "SELECT * FROM images WHERE user = 0;";&nbsp; &nbsp; &nbsp;$result = $mysqli->query($query);&nbsp; &nbsp; &nbsp;$row = $result->fetch_array(MYSQLI_ASSOC)&nbsp; &nbsp; &nbsp;$src = $row["url"];&nbsp; &nbsp; &nbsp;<img&nbsp; id="mainImage" src="<?php echo $src ?>" />&nbsp;</div>如果您想要更少的代码,请将循环$src内的值保存到其他变量中,例如. 然后你的代码就变成了:WHILEuser=0$src2<img&nbsp; id="mainImage" src="<?php echo $src2 ?>" />

慕尼黑的夜晚无繁华

一个快速而肮脏的解决方案是将您的第一张图像保存在一些单独的变量中,例如如下所示:$isFirst = true;$firstImageSrc = "";$result = ....;while (...) {&nbsp; &nbsp;// set your $product, $room etc here&nbsp; &nbsp;if ($isFirst) {&nbsp; &nbsp; &nbsp; $isFirst = false;&nbsp; &nbsp; &nbsp; $firstImageSrc = $src;&nbsp; &nbsp;}}echo ...?></div> <!-- close imgWheel -->&nbsp; &nbsp;<!-------- Large Image Display------- --><div id="display">&nbsp; &nbsp; &nbsp;<img&nbsp; id="mainImage" src="<?php echo $firstImageSrc ?>" />&nbsp;</div>一个更优雅的解决方案是创建一个包含所有图像的数组,以便您可以将 php 与 html 分开。我将在下面重构您的代码,并修复您的第一个图像问题:<?php&nbsp; &nbsp;$images = [];&nbsp; &nbsp;$idx = 0;&nbsp; &nbsp;$query = "SELECT * FROM images WHERE user = 0 ORDER BY id;";&nbsp; &nbsp;$result = $mysqli->query($query);&nbsp; &nbsp;while ($row = $result->fetch_array(MYSQLI_ASSOC)) {&nbsp; &nbsp; &nbsp; $images[$idx]["product"] = $row["product"];&nbsp; &nbsp; &nbsp; $images[$idx]["room"] = $row["room"];&nbsp; &nbsp; &nbsp; $images[$idx]["style"] = $row["style"];&nbsp; &nbsp; &nbsp; $images[$idx]["tags"] = $row["tags"];&nbsp; &nbsp; &nbsp; $images[$idx]["src"] = $row["url"];&nbsp; &nbsp; &nbsp; $images[$idx]["dataid"] = $row["id"];&nbsp; &nbsp; &nbsp; $images[$idx]["imgClass"] = "";&nbsp; &nbsp; &nbsp; if (in_array($src, $favourites)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$images[$idx]["imgClass"] = " favourite";&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; $idx++;&nbsp; &nbsp;}?><div id="imgWheel" class="treatmentContainer"><?php foreach ($images as $image) { ?>&nbsp; &nbsp;<div class='treatment<?=$image["imgClass"]?>' data-url='<?=$image["src"]?>' data-product='<?=$image["product"]?>' data-room='<?=$image["room"]?>' data-style='<?=$image["style"]?>' data-tags='<?=$image["tags"]?>' data-number='<?=$image["dataid"]?>' id='pic_<?=$image["dataid"]?>' >&nbsp; &nbsp; &nbsp; <img src='<?=$image["src"]?>' crossorigin='anonymous'/>&nbsp; &nbsp;</div><?php } ?>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div> <!-- close imgWheel -->&nbsp; &nbsp;<!-------- Large Image Display------- --><div id="display">&nbsp; &nbsp; &nbsp;<img id="mainImage" src="<?=$images[0]["src"]?>" />&nbsp;</div>

DIEA

您只需要更新您的 SQL 查询,只需添加LIMIT 1。这会将结果限制为 1 条记录,并且当您有ORDER id ASC时,它将显示给定用户的第一条记录(按照您的说法,它是 0)。$query&nbsp;=&nbsp;"SELECT&nbsp;*&nbsp;FROM&nbsp;images&nbsp;WHERE&nbsp;user&nbsp;=&nbsp;0&nbsp;ORDER&nbsp;BY&nbsp;id&nbsp;ASC&nbsp;LIMIT&nbsp;1;";
打开App,查看更多内容
随时随地看视频慕课网APP