搜索多个表并显示为多个表

时间:2013-10-06 18:37:29

标签: php sql database html-table

我希望我的用户搜索我的数据库以从两个不同的表中返回数据,这是我使用UNION完成的,但是我希望它不仅可以从两个表中搜索,还可以显示为两个表。我怎么能去做此?

  $result .= "<table border='1'>";
    $result .="<tr><td>Cater</td><td>Part</td><td>Gids</td></tr>";
    while ($row = mysql_fetch_array($sql)){
        $result .= '<tr>';
        $result .= '<td>'.$row['Name'].'</td>';
        $result .= '<td>'.$row['Part'].'</td>';
        $result .= '<td>'.$row['Gid'].'</td>';
        $result .= '</tr>';
    }
    $result .= "</table>"; 
    $result .= "<table border='1'>";
    $result .="<tr><td>Cater</td><td>Dish</td><td>Gids</td></tr>";
    while ($row = mysql_fetch_array($sql)){
        $result .= '<tr>';
        $result .= '<td>'.$row['Name'].'</td>';
        $result .= '<td>'.$row['Dish'].'</td>';
        $result .= '<td>'.$row['Gid'].'</td>';
        $result .= '</tr>';
    }
    $result .= "</table>";

2 个答案:

答案 0 :(得分:1)

如果您打算这样做,您需要一些方法来判断第一个结果的结束位置和第二个结果的开始位置。一种简单的方法是在结果集中添加一个额外的列:

Select
    0 as resultset,
    Name,
    Part,
    Gid
From
    Parts
Union All
    1,
    Name,
    Dish,
    Gid
From
    Dishes
Order By
    resultset -- I'm not sure if you need this, or whether you get it for free

如果你已经转移到第二个结果集,那么你需要突破第一个循环。此外,联合中的列名称都将反映第一部分,因此我将Dish更改为Part。你还必须处理工会的其中一个或两个部分可能什么都不返回的可能性。

$result .= "<table border='1'>";
$result .="<tr><td>Cater</td><td>Part</td><td>Gids</td></tr>";
while ($row = mysql_fetch_assoc($sql) && $row['resultset'] === 0) {
    $result .= '<tr>';
    $result .= '<td>'.$row['Name'].'</td>';
    $result .= '<td>'.$row['Part'].'</td>';
    $result .= '<td>'.$row['Gid'].'</td>';
    $result .= '</tr>';
}
$result .= "</table>"; 
$result .= "<table border='1'>";
$result .="<tr><td>Cater</td><td>Dish</td><td>Gids</td></tr>";
while ($row){
    $result .= '<tr>';
    $result .= '<td>'.$row['Name'].'</td>';
    $result .= '<td>'.$row['Part'].'</td>';
    $result .= '<td>'.$row['Gid'].'</td>';
    $result .= '</tr>';
    $row = mysql_fetch_assoc($sql);
}
$result .= "</table>";

答案 1 :(得分:0)

你可能确实有两张桌子,但彼此相邻。尝试在两者之间放置一些东西。我放了一个人力资源,但你可以把看似合理的东西放在你的页面上。即使是BR ot表头文本也可以。

$result .= "<table border='1'>";
$result .="<tr><td>Cater</td><td>Part</td><td>Gids</td></tr>";
while ($row = mysql_fetch_array($sql)){
    $result .= '<tr>';
    $result .= '<td>'.$row['Name'].'</td>';
    $result .= '<td>'.$row['Part'].'</td>';
    $result .= '<td>'.$row['Gid'].'</td>';
    $result .= '</tr>';
}
$result .= "</table>"; 

$result .= "<hr />";         <=========

$result .= "<table border='1'>";
$result .="<tr><td>Cater</td><td>Dish</td><td>Gids</td></tr>";
while ($row = mysql_fetch_array($sql)){
    $result .= '<tr>';
    $result .= '<td>'.$row['Name'].'</td>';
    $result .= '<td>'.$row['Dish'].'</td>';
    $result .= '<td>'.$row['Gid'].'</td>';
    $result .= '</tr>';
}
$result .= "</table>";