2012-04-22 36 views
1

我现在对这个问题毫无希望,这就是为什么我在这里。我在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,没有显示修复图片的修复ID 25.

我不知道,我怎么才能得到它的权利。我需要它显示这样的信息的表:

repair id | picture 

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

你能帮我在这?

回答

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相同,只需输出<td>“变量在此处”</td >将其保留在同一列上。如果ID发生变化,结束行和创建使用</TR > <TR>”新行。随意,如果你需要更多的帮助发表评论。

+0

谢谢你,有位编辑它的解决了这个问题。我今天也学到了一些新东西,谢谢。 – thenamelesshero 2012-04-22 23:58:43