2013-10-06 4 views
0

사용자가 내 데이터베이스를 검색하여 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>"; 
+0

그럼 두 테이블로 표시하십시오. – mvp

+0

php에는 두 개의 테이블이 있지만 하나의 테이블로만 표시됩니다. – Robert

+0

아무 것도 당신이 2

...
'블록을 HTML – mvp

답변

0

아마 두 테이블이 있지만 서로 바로 옆에 있습니다. 그 사이에 무엇인가 가시 거리를 놓으십시오. HR을 배치했지만 귀하의 페이지에 대해 시각적으로 의미있는 것을 넣을 수 있습니다. 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>"; 
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>"; 
+0

에서 만들지 못하게합니다 : SELECT * FROM'Cater Gids' Cater '% $ term'같은 UNION SELECT * FROM'Cater Food' 어디에서 '% $ term'을 좋아하십시오. – Robert

+0

오류가 계속 발생하므로 문을 잘못 작성해야합니다. – Robert

+0

@RobertOlson http://sqlfiddle.com/#!2/7fcf6f/1 예제는 다음과 같습니다. '*'를 사용합니다. – Laurence