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

I want my users to search my database to return data from two different tables which I have done using UNION but I want it to not only search from two tables but to also display as two tables..How can I go about doing this?

  $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>";

Your probably do have two tables but right next to each other. Try putting something visble in between. I put an HR but you can put what makes sense visually for your page. Even a BR ot table header text would work.

$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>";

If you're going to do it this way, you need some way to tell where the first results end and the second start. An easy way is to add an extra column in the result set:

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

Then you need to break out of the first loop if you've moved to the second result set. Also, the column names in the union will all reflect the first part, so I've changed Dish to Part. You also have to deal with the possibility that either or both of the parts of the union may return nothing.

$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>";