如何只显示注释一次,但在PHP中显示来自mysql的所有图像?

时间:2019-02-22 12:31:15

标签: php mysql database mysqli

我想只显示注释一次,例如(testsetest)与相关图像(通过连接两个表具有相同的imageid)。

示例(我要实现): 评论:傻瓜图片:名称1,名称2

Caption of the wrong output.

数据库结构

  

帖子:

getRandomInt() {
this.intervalId = setInterval(() => {
  this.setState(prevState => {
    return {
      chartData: {
        ...prevState.chartData,
        labels: [
          ...prevState.chartData.labels,
          prevState.chartData.labels.length + 1,
        ],
        datasets: [
          {
            ...prevState.chartData.datasets[0],
            data: [
              ...prevState.chartData.datasets[0].data,
              Math.floor(Math.random() * 10) + 1,
            ],
          },
        ],
      },
    };
  });
}, 2000);}
  

多张图片:

| commentid |  comment  | iamgesid |
------------------------------------
|     1     |   fool    |   5557   |
|     2     |  fool2    |   5585   |
------------------------------------

这是我当前的代码:

| id |  image  | imagesid |
---------------------------
| 1  |  name1  |    5557  |
| 2  |  name2  |    5557  |
| 3  |  name3  |    5585  |
---------------------------

3 个答案:

答案 0 :(得分:2)

您将需要通过commentid控制中断结果和顺序

请查看更新的代码。


$sql = "SELECT 
          image, 
          posts.imagesid, 
          multiple_image.imagesid, 
          comment
        FROM
           multiple_image 
        JOIN posts ON (multiple_image.imagesid=posts.imagesid)
        ORDER BY 
           commentid
";

$result = $conn->query($sql);

if (!$result) {
    trigger_error('Invalid query: ' . $conn->error);
}


if ($result->num_rows > 0) {

    // output data of each row
    $comment = '';
    while($row = $result->fetch_assoc()) {
      if($comment != $row['comment']){
         echo $row['comment'];
         $comment = $row['comment'];
      }

        $imgs= "<div id='img_div'><img width='' src='upload/".$row['image']."' ></div>";
        echo $imgs;
    }
}

答案 1 :(得分:0)

您可以创建一个标志并检查它是否为0。如果它为0,则可以显示注释,否则不需要显示注释。检查以下代码:

if ($result->num_rows > 0) {

    // output data of each row
    $loop = 0;
    while ($row = $result->fetch_assoc()) {
        if ($loop == 0) {            
            echo $row['comment'];
        }
        $imgs = "<div id='img_div'><img width='' src='upload/" . $row['image'] . "' ></div>";
        echo $imgs;
        $loop++;
    }
}

希望它对您有帮助。

答案 2 :(得分:0)

我希望它能对您有所帮助:

$sql    = "SELECT 
          image, 
          posts.imagesid, 
          multiple_image.imagesid, 
          comment
        FROM
           multiple_image 
        JOIN posts ON (multiple_image.imagesid=posts.imagesid)
        ORDER BY 
           commentid";
$result = $conn->query($sql);
if (!$result) {
    trigger_error('Invalid query: ' . $conn->error);
}
if ($result->num_rows > 0) {
    $comment = array();
    while ($row = $result->fetch_assoc()) {
        // check imagesid is not exist in array
        if (in_array($row['imagesid'], $comment) == false) {
            echo $row['comment'];
            $comment[] = $row['imagesid'];
        }
        $imgs = "<div id='img_div'><img width='' src='upload/" . $row['image'] . "' ></div>";
        echo $imgs;
    }
}