【问题标题】:How to echo multiple images using an Array如何使用数组回显多个图像
【发布时间】:2020-03-10 00:34:18
【问题描述】:

使用此代码:

<?php
$stmt = $pdo->prepare("SELECT pdimg1 FROM products WHERE pdcat LIKE 'fashion%'");
$stmt->execute();
$rows = $stmt->fetchAll();
$img1 = '';
foreach ($rows as $row) {
    $Rpdimg1 = $row['pdimg1'];
    $img1 .= $Rpdimg1;
}

UPDATED TO INCLUDE BELOW:
$stmt = $pdo->prepare("SELECT * FROM products WHERE pdcat LIKE 'collectibles%'");
$stmt->execute();
$rows = $stmt->fetchAll();
$img2 = '';
foreach ($rows as $row) {
    $Rpdimg2 = htmlspecialchars($row['pdimg1']);
    $img2 .= $Rpdimg2;
}

$cats = array(
            array(
                "title" => "FASHION",
                "img" => $img1
            ),
            array(
                "title" => "COLLECTIBLES & ART",
                "img" => $img2,
            )
        );

foreach ($cats as $cat): ?>
    <?php echo $cat["title"]; ?>
    <img src="images/<?php echo $cat["img"]; ?>">
<?php endforeach; ?>

我在 Firefox 的 Inspector Tools 中显示了这个结果:

<img src="images/shirt.jpgpants.jpg">

[But on the webpage, this displays as a broken image.]

但我想要是这样的结果:

<img src="images/shirt.jpg">
<img src="images/pants.jpg">

[However, I would like the above results displayed as IMAGES, not as html text.]

这两个图像是从我的数据库中回显的值。它们来自我的products 表:

pdid | pdimg1
-----------------
  1  | shirt.jpg
  2  | pants.jpg

基本上是这样

1) 我正在从我的数据库表products中选择行

2) 我将它们作为变量插入到数组中(用于其他目的)

3) 我正在使用 foreach 循环从该数组中回显这些变量

4) 现在的问题在于,这些 IMAGE 变量聚集在一起作为一个单字 (shirt.jpgpants.jpg) 而不是作为单独的值,并且不会被封装在它们自己的 img 标签中,而是在相同的img 标签。

5) 所以我在上面用粗体字展示了我想要的结果。我将如何实现这一目标?谢谢

【问题讨论】:

    标签: php arrays image


    【解决方案1】:

    使用额外的多维数组变量。像这样

    <?php
    $int_data = array();
    foreach ($rows as $row) { 
    
        $int_data[] = array(
            "title" => $row['title'];
            "image" => $row['pdimg1']; 
        );
    }
    ?>
    

    现在使用foreach loop 显示titleimage

    <?php
    foreach ($int_data as $data) { ?> 
      Title : <?php echo $data['title]; ?> <br/>
      Image : <img src="path/<?php echo $data['image]; ?>"> <br/>
    <?php
    } ?>
    

    【讨论】:

    • 是的,我不知道为什么,但这没有显示任何内容。我用 Anat 的代码得到了同样的结果
    • 这很奇怪..我在看源代码,它是空的
    • 在第一个循环之前,像这样打印查询输出数据print_r($rows);
    【解决方案2】:

    您需要在循环内进行数组赋值,并减少代码如下:

    <?php
    $stmt = $pdo->prepare("SELECT pdimg1 FROM products WHERE pdcat LIKE 'fashion%'");
    $stmt->execute();
    $rows = $stmt->fetchAll();
    
    $cats = array();
    foreach ($rows as $row) {
        $cats[] = array(
        "title" => $row['title'];
        "img" => $row['pdimg1']; 
       ); // you can add as many column as you get from query
    }
    
    foreach ($cats as $cat): ?>
        <?php echo $cat["title"]; ?>
       <img src="images/<?php echo $cat["img"]; ?>">
    <?php endforeach; ?>
    

    【讨论】:

    • 好的,所以我发现问题是不需要回显行之后的分号。我省略了,代码有效,所以谢谢你解决这个问题!
    【解决方案3】:
      <?php
         $stmt = $pdo->prepare("SELECT pdimg1 FROM products WHERE pdcat LIKE 'fashion%'");
         $stmt->execute();
         $rows = $stmt->fetchAll();
         foreach ($rows as $row) { ?>
            <img src="images/<?= $row['pdimg1']; ?>">
      <?php }  ?>
    

    【讨论】:

      猜你喜欢
      • 2014-07-02
      • 2018-04-10
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多