0

PHPを使用してテーブルを作成しようとしています。必要なのは2列のテーブルです。

つまり、主キーID、言語、単語、定義の4つのフィールドを持つ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>';
  }
}

悲しいことに、私はこのようなものを手に入れています:

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

私がこれを行うことができる他の方法がわかりませんか?またはを||に変更してみました 優先順位が異なると別の結果が生じると考えていますが、ロシア語の列のみが表示されます。

私はアイデアがありません、あなたたちは私の唯一の希望です!

4

2 に答える 2

1

基本的には、「(出力)行とセルを実行している間」と言っていますが、その内部では、すでに存在する他のセルを調整せずに「別のセルを実行」します。

ちなみに、各テーブルまたはmysqlクエリの結果を配列に入れ、array_mergeを使用してそれらを単一の配列に入れてから、出力を実行します。

たとえば、ロシア語の結果は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'] }

幸運を!

于 2012-11-19T04:55:17.413 に答える
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>';
  }
}

これを試して

于 2012-11-19T04:56:33.283 に答える