2012-11-19 72 views
0

我想創建一個使用PHP的表。我需要的是有兩列的桌子。並行MySQL查詢HTML表 - WHILE(x或y)?

所以我有一個SQL表,有4個字段 - 主鍵ID,語言,單詞和定義。每種語言都是阿拉伯語或俄語。

我想要一個表,執行以下操作:

|  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把它們放到一個數組中,然後做輸出。

E.g.俄羅斯有4個結果,阿拉伯有3個這樣的排列是這樣的:

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

Exchange' $ rus = mysql_fetch_array($ russian)'和'$ arb = mysql_fetch_array($ arabic)' –