我现在对这个问题毫无希望,这就是我在这里的原因。我是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中的组不同,但是这个结果显示如下结果:
repair id | picture
1 | fdgdfg.jpg | fgdfg.jpg | fghh.jpg
25 |
所以它只是在第一次修复ID之后没有继续,没有显示修复图片的维修图片。
我不知道,我怎么能把它弄好。我需要一个显示如下信息的表:
repair id | picture
1 | fdgdfg.jpg | fgdfg.jpg | fghh.jpg
25 | dfg.jpg | jkjk.jpg
你可以帮我解决这个问题吗?
答案 0 :(得分:1)
这听起来相当简单,看起来你有一个良好的开端。
我过去做过类似的事情,我只是使用一个变量来跟踪当前显示的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相同,则只输出&lt; td&gt;“变量在此处”&lt; / td&gt;保持在同一列。如果ID已更改,请使用&lt; / tr&gt;&lt; tr&gt;“结束行并创建新行。如果您需要更多帮助,请随时发表评论。