Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中仅显示mysql数据库中的第一个图像_Php_Html_Mysql - Fatal编程技术网

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

如何在php中仅显示mysql数据库中的第一个图像,php,html,mysql,Php,Html,Mysql,我有以下代码。如何显示数据库中索引为0的第一个图像,以便在代码末尾显示大图像?现在它正在显示数据库中的最后一幅图像 <div id="imgWheel" class="treatmentContainer"> <?php $query = "SELECT * FROM images WHERE user = 0 ORDER BY id;"; $result = $mysq

我有以下代码。如何显示数据库中索引为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>


您只需更新SQL查询,只需添加限制1。这将限制结果仅为1条记录,并且由于您有订单id ASC,它将显示给定用户的第一条记录(根据您的情况,它是0)


您的结果集是按id排序的alreadyx,所以您只需要一个变量,用第一个imageurl填充一次

<div id="imgWheel" class="treatmentContainer">
<?php
    $bigpictureurl = "";
    $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"];
         if (empty($bigpictureurl)) {
             $bigpictureurl = $src ;
         }          
          $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 $bigpictureurl ?>" /> 
</div>


一个快速而肮脏的解决方案是将第一张图像保存在一些单独的变量中,例如:

$isFirst = true;
$firstImageSrc = "";
$result = ....;
while (...) {
   // set your $product, $room etc here
   if ($isFirst) {
      $isFirst = false;
      $firstImageSrc = $src;
   }
}
echo ...
?>
</div> <!-- close imgWheel -->   

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

<div id="display">
     <img  id="mainImage" src="<?php echo $firstImageSrc ?>" /> 
</div>
$isFirst=true;
$firstImageSrc=“”;
$result=。。。。;
而(…){
//在此处设置$product、$room等
如果($isFirst){
$isFirst=false;
$firstImageSrc=$src;
}
}
回声。。。
?>
" /> 
一个更优雅的解决方案是创建一个包含所有图像的数组,这样您就可以将php与html分开。我将在下面重构您的代码,并修复您的第一个图像问题:

<?php
   $images = [];
   $idx = 0;
   $query = "SELECT * FROM images WHERE user = 0 ORDER BY id;";
   $result = $mysqli->query($query);
   while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
      $images[$idx]["product"] = $row["product"];
      $images[$idx]["room"] = $row["room"];
      $images[$idx]["style"] = $row["style"];
      $images[$idx]["tags"] = $row["tags"];
      $images[$idx]["src"] = $row["url"];
      $images[$idx]["dataid"] = $row["id"];

      $images[$idx]["imgClass"] = "";
      if (in_array($src, $favourites)) {
         $images[$idx]["imgClass"] = " favourite";
      }
      $idx++;
   }
?>

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

<?php foreach ($images as $image) { ?>
   <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"]?>' >
      <img src='<?=$image["src"]?>' crossorigin='anonymous'/>
   </div>
<?php } ?> 
                    
</div> <!-- close imgWheel -->   

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

<div id="display">
     <img id="mainImage" src="<?=$images[0]["src"]?>" /> 
</div>


由于您的
WHILE
语句中包含了所有这些内容,我假设您希望
echo
所有这些记录。然后在最后显示第一张图片。因此,对于“大图像显示”,请尝试一下:

<div id="display">
     $query = "SELECT * FROM images WHERE user = 0;";
     $result = $mysqli->query($query);
     $row = $result->fetch_array(MYSQLI_ASSOC)
     $src = $row["url"];
     <img  id="mainImage" src="<?php echo $src ?>" /> 
</div>

谢谢。那么我需要再次编写查询语句吗?因为我确实需要所有记录。我只需要用第一条记录填充显示图像。我试图避免再次运行脚本。谢谢Teodor。我已经尝试过了,并且出现了错误。我正在修复$src的undefined之类的问题。我知道你现在要做什么了我可以这样做。“快速而肮脏”的解决方案发挥了巨大的作用!我做了类似的事情,但认为我的显示语法错误。对于错误,我很抱歉,我无法访问编辑器进行语法更正,所有内容都在浏览器中编写。
<div id="display">
     $query = "SELECT * FROM images WHERE user = 0;";
     $result = $mysqli->query($query);
     $row = $result->fetch_array(MYSQLI_ASSOC)
     $src = $row["url"];
     <img  id="mainImage" src="<?php echo $src ?>" /> 
</div>
<img  id="mainImage" src="<?php echo $src2 ?>" />