php - 多表用 while 加入 echo

标签 php mysql html-table echo

我现在对这个问题感到绝望,这就是我来这里的原因。我是 PHP 和 mysql 编程的初学者。我在网上搜索了解决方案,但没有成功。我正在做一个项目,什么是汽车维修管理系统。这是我需要的一部分。

我有两个表:

repairs (j_id /this is the primary key/, rendszam, javitas, megjegyzes, datum) 
and 
pictures (kep_id /this is the primary key/, j_id /it's from repairs j_id/, kepnev)

我需要在一个表中显示一个结果,我可以在表中看到哪些修复有图片表中的图片,但没有冗余,所以我不想要彼此相似的多个修复行,但是一个修复行后面有多个图片列。

我已经做了什么:

<?php
$sql = "SELECT $tbl_name2.j_id, $tbl_name2.rendszam, $tbl_name2.javitas, $tbl_name2.megjegyzes, $tbl_name2.datum, $tbl_name3.kepnev FROM $tbl_name2, $tbl_name3 WHERE $tbl_name2.j_id=$tbl_name3.j_id";

$result = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_array($result)) {
    echo "<tr><td>" . $row[$i] . "</td>";
    echo "<td>" . $row[$i + 1] . "</td>";
    echo "<td>" . $row[$i + 2] . "</td>";
    echo "<td>" . $row[$i + 3] . "</td>";
    echo "<td>" . $row[$i + 4] . "</td>";
    echo "<td>" . $row[$i + 5] . "</td>";
}
?>

这个显示如下信息:

repair id | picture

1    |    fdgdfg.jpg
1    |    fgdfg.jpg
1    |    fghh.jpg
25   |    dfg.jpg
25   |    jkjk.jpg

但是我不想有多个修复行,而是一个修复行后面有多张图片。

我试过这个:

$sql2="SELECT DISTINCT $tbl_name2.j_id, $tbl_name3.kepnev FROM $tbl_name2, $tbl_name3 WHERE $tbl_name2.j_id=$tbl_name3.j_id";

$result2=mysql_query($sql2) or die(mysql_error());

$sql="SELECT $tbl_name2.j_id, $tbl_name2.rendszam, $tbl_name2.javitas, $tbl_name2.megjegyzes, $tbl_name2.datum, $tbl_name3.kepnev FROM $tbl_name2, $tbl_name3 WHERE $tbl_name2.j_id=$tbl_name3.j_id GROUP BY j_id;

$result=mysql_query($sql) or die(mysql_error());

while($row=mysql_fetch_array($result))
{
echo "<tr><td>".$row[$i]."</td>";
echo "<td>".$row[$i+1]."</td>";
echo "<td>".$row[$i+2]."</td>";
echo "<td>".$row[$i+3]."</td>";
echo "<td>".$row[$i+4]."</td>";
echo "<td>".$row[$i+5]."</td>";
while($sor=mysql_fetch_array($result2))
    {
        if($sor['j_id']==$row[$i]){
        echo "<td><a href=kepek/".$sor['kepnev']." target=_blank>".$sor['kepnev']."</a></td>";
        }
    }

}

sql语句在$sql的group by中不同,但是这条显示的结果是这样的:

 repair id | picture

    1    |    fdgdfg.jpg | fgdfg.jpg | fghh.jpg
    25   |        

所以它只是在第一个修复 id 之后不再继续,不显示修复 id 25 的修复图片。

我不知道,我怎样才能把它弄好。我需要一个显示如下信息的表格:

repair id | picture

   1    |    fdgdfg.jpg | fgdfg.jpg | fghh.jpg
   25   |    dfg.jpg | jkjk.jpg

你能帮我解决这个问题吗?

最佳答案

这听起来很简单,看起来你开了个好头。

我以前做过类似的事情,我只是用一个变量来跟踪当前显示的ID和之前显示的ID。这里有一个快速代码示例来概述我的意思。

while($row=mysql_fetch_array($result))
{
    $currentID=$row[$i];
    if ($currentID != $lastID) { 
        echo "</tr><tr><td>".$row[$i]."</td>"; 
    } else {
        echo "<td>".$row[$i]."</td>";   
    }
    $lastID=$row[$i];
}

因此,我们的想法是跟踪最后一个 ID 是什么。在下一行中,如果 ID 相同,则输出 "variable goes here" 使其保持在同一列。如果 ID 更改,请结束该行并使用 创建新行。如果您需要更多帮助,请随时发表评论。

关于php - 多表用 while 加入 echo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272566/

相关文章:

PHP - MySQL,排序克隆

php - 在 PHP 中更新 MySQL

javascript - 使用 jQuery 和插件使表格可排序

powershell 输出中的 HTML 表

php - 仅当从特定页面重定向时才允许访问?

javascript - LAMP 堆栈中的 Angular 2

php - 使用php 5秒将数据保存到MySQL

jquery - 如何使用 Jquery 替换表格中具有特定文本的 td 的内容?

php - SQLite 的轻量级 ORM

php - 使用 php 向上或向下移动 mysql 数据库行