PHP 在动态调用时单独设置图像样式


php styling images separately when called dynamically

我创建了基于产品搜索返回图像名称和 id 的函数。我想显示所有图像,但我希望每个图像都有不同的样式。我想有一种方法可以增加div id,但不确定。这是我的函数和调用:

public function getImages($searchterm=""){
$sql = "SELECT id FROM prod_detail 
WHERE prod_detail.int_prod_code LIKE '$searchterm' ORDER BY `id` ASC";
$stmt = mysqli_query($this->connection, $sql)or die(mysqli_error($this->connection));
while($result = mysqli_fetch_array($stmt)){
$sql2="SELECT image_name FROM images WHERE image_ref={$result['id']}";
$stmt2 = mysqli_query($this->connection, $sql2)or die(mysqli_error($this->connection));
$num_rows = mysqli_num_rows($stmt2);
while($result2 = $stmt2->fetch_assoc()){
foreach ($result2 as $key => $value) {
$returns = $this->dir . $value;
}
}
}
return $returns;
}

这是显示图像的函数调用

foreach($newProd->getAllProductSpec($searchterm) as $item => $val){
echo "<img src='server/php/files/{$val['image_name']}' 
alt='Flying screens' style='float:left;margin:0 30px 20px 0'/>"; ?>  
}
$count = 0;
foreach($newProd->getAllProductSpec($searchterm) as $item => $val){
    echo "<img src='server/php/files/{$val['image_name']}' class='img-{$count}' alt='Flying screens' style='float:left;margin:0 30px 20px 0'/>"; ?>  
    $count++;
}

然后,您可以为每个图像标签添加一个 id,并在 css 文件中为每个 id 应用样式。(例如,与迈克尔刚刚对代码所做的答案相同)

将显示图像的函数更改为:

foreach($newProd->getAllProductSpec($searchterm) as $item => $val){
echo "<img src='server/php/files/{$val['image_name']}'
alt='Flying screens' id='img{$item}' style='float:left;margin:0 30px 20px 0'/>"; ?>  
}

这样,每个图像的ID都会为"img0"img1,img2等。

您可能还想稍微更改一下函数它所在的部分:

while($result2 = $stmt2->fetch_assoc()){
foreach ($result2 as $key => $value) {
$returns = $this->dir . $value;
}
}
}
return $returns;

是错误的,因为它不返回数组;

将其替换为:

$returns = array();    
while($result2 = $stmt2->fetch_assoc()){
foreach ($result2 as $key => $value) {
$returns[] = $this->dir . $value;
}
}
}
return $returns;

您可以轻松地在显示图像的函数调用中添加某种增量:

$i=1;
foreach($newProd->getAllProductSpec($searchterm) as $item => $val){
  echo "<img src='server/php/files/{$val['image_name']}' 
  alt='Flying screens' id='image-id-$i' style='float:left;margin:0 30px 20px 0'/>"; 
  $i++; // increment this value each time the for each loop completes
}