2012-11-19 2 views
0

PHP를 사용하여 테이블을 만들려고합니다. 내가 필요한 것은 두 개의 기둥이있는 테이블입니다.HTML 테이블에 대한 병렬 MySQL 쿼리 - WHILE (x 또는 y)?

그래서 4 개의 필드 (기본 키 ID, 언어, 단어 및 정의)가있는 SQL 테이블이 있습니다. 각각의 언어는 아랍어 또는 러시아어입니다. 다음 오른쪽에서 왼쪽 열 및 아랍어 러시아어 등가물을 나열

|  defintion  | 
|____________________| 
|     | 
| rus1 | arab1 | 
| rus2 | arab2 | 
| rus3 | arab3 | 
| rus4 |   | 

는 그래서, 영어 단어 기준으로 목록을 분할하여 각 영어 단어의를 만듭니다

나는 다음을 수행 테이블을합니다. 그러나 둘 모두에 대해 동일한 번호가 종종없는 경우가 있습니다. 내가 지금하고있는 일은 WHILE 루프에서 WHILE 루프를 실행하는 것이다. 외부 루프가 잘 실행되고 있지만 내부 루프를 잘못하고 있다고 생각합니다. 이 같은

$definitions=mysql_query("SELECT DISTINCT definition FROM words") 

WHILE($row=mysql_fetch_array($definitions) 
{ 
    ECHO '<tr><th colspan="2">' . $row['definition'] . '</th></tr>'; 
    $russian="SELECT * FROM words WHERE language='Russian' AND definition='".$row['definition']."'"; 
    $arabic="SELECT * FROM words WHERE language='Arabic' AND definition='".$row['definition']."'"; 
    WHILE($rus=mysql_fetch_array($russian) or $arb=mysql_fetch_array($arabic)) 
    { 
    ECHO '<tr><td>'.$rus['word'].'</td><td>'.$arb['word'].'</td></tr>'; 
    } 
} 

슬프게도 나는 점점 오전 soemthing : 다음은 코드의 대부분은

|  defintion  | 
|____________________| 
|     | 
| rus1 |   | 
| rus2 |   | 
| rus3 |   | 
| rus4 |   | 
|  | arab1 | 
|  | arab2 | 
|  | arab3 | 

나는이 작업을 수행 할 수있는 다른 어떤 방법으로 확실하지? 나는 또는을 변경하려고 | | | 다른 우선 순위를 생각하면 또 다른 결과가 생길 수 있습니다.하지만 러시아 칼럼 만 얻습니다.

나는 아이디어가 없어, 너희들은 내 유일한 희망이야!

답변

1

글쎄, 당신은 기본적으로 말합니다 : "(출력) 행과 셀을하는 동안"그 안에 "다른 것과 또 다른 것을하십시오"는 이미 다른 셀을 조정하지 않고 말입니다.

Tbh, 나는 각 배열 또는 mysql 쿼리의 결과를 배열에 넣고 array_merge를 사용하여 단일 배열에 넣은 다음 출력을 수행합니다.

예. 러시아어, 3 그래서 배열과 같을 것이다있다 아랍 4 개 결과가 있습니다

array 
[1] 
Russian => Result 
Arab => 
[2] 
Russian => Result 
Arab => Result 
[3] 
Russian => Result 
Arab => Result 
[4] 
Russian => Result 
Arab => NULL 

이 그 다음을 수행하십시오

foreach (array as $definition) { output $definition['Russian'] - $definition['Arab'] } 

행운을 빕니다!

+1

건배를보십시오! 이것은 내가 필요한 것입니다. –

1
$definitions=mysql_query("SELECT DISTINCT definition FROM words") 

WHILE($row=mysql_fetch_array($definitions) 
{ 
    ECHO '<tr><th colspan="2">' . $row['definition'] . '</th></tr>'; 
    $russian="SELECT * FROM words WHERE language='Russian' AND definition='".$row['definition']."'"; 
    $arabic="SELECT * FROM words WHERE language='Arabic' AND definition='".$row['definition']."'"; 
    WHILE($rus=mysql_fetch_array($russian)) 
    { 
     $arb=mysql_fetch_array($arabic)  
     ECHO '<tr><td>'.$rus['word'].'</td><td>'.$arb['word'].'</td></tr>'; 
    } 
} 

+0

이것은 작동하지만 일부 정의 (영어 단어)에는 러시아어보다 아랍어가 더 많으며 러시아어가 모두 나열되면 아랍어를 나열하지 않습니다. –

+0

교환'$ rus = mysql_fetch_array ($ russian)'과'$ arb = mysql_fetch_array ($ arabic)' –