0

我正在尝试使用 PHP 创建一个表。我需要的是一个有两列的表格。

所以我有一个包含 4 个字段的 SQL 表 - 主键 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>';
  }
}

可悲的是我得到了这样的事情:

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

不知道还有什么其他方法可以做到这一点?我尝试将 or 更改为 || 认为不同的优先级会导致另一个结果,但后来我只得到了俄罗斯专栏。

我没有想法,你们是我唯一的希望!

4

2 回答 2

1

好吧,您基本上是在说:“虽然(输出)做一行和一个单元格”,然后在“做另一个和另一个”内部,而不针对已经存在的其他单元格进行调整。

Tbh,我只是将每个表或 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 回答