在PHP中显示MySQL表(行数不相同)

时间:2014-04-09 04:54:28

标签: php mysql

我有一个MySQL表,它有两列 -

table in database

我想在我的网站上显示这样的内容 -

enter image description here

我可以轻松地使用表名Boy | Girl。但是,当我试图显示表格时,我会这样 -

enter image description here

我只是在这里展示一个例子。可能有50个男孩和10个女孩..所以我需要帮助。

显示标题后

while($row_type = mysql_fetch_array($type))
{
    $type_name = $row_type['type_name'];   //Boy (or) Girl taking from another table
    $type_name = Database::getInstance()->query("SELECT * FROM details WHERE type='type_name'");
    echo "<tr>";
    while($row_name = mysql_fetch_array($type_name))
    {
        echo "<td>$row_name[type_name]</td>";    //Displaying the names
    }
    echo "</tr>";
}

这么多观点但没有得到任何答案。请帮帮我们请抓住我的错误。

3 个答案:

答案 0 :(得分:0)

尝试两个查询。 为每个类别(男性和女性)制作一个数组 它有效。

$maleQuery = mysql_query("SELECT * FROM table WHERE category='male'");
$femaleQuery = mysql_query("SELECT * FROM table WHERE category='female'");

while(($row =  mysql_fetch_assoc($maleQuery))) {
$males[] = $row['name'];
}
while(($row =  mysql_fetch_assoc($femaleQuery))) {
$females[] = $row['name'];
}

$number_of_rows = max(sizeof($males),sizeof($females));
echo "<table border='1'>";
echo "<tr><td>Male</td><td>Female</td></tr>";
for($i=0;$i<$number_of_rows;$i++)
{
 echo "<tr><td>".@$males[$i]."</td><td>".@$females[$i]."</td></tr>";
}

答案 1 :(得分:-1)

尝试此查询100%工作,但设置PHP代码。

SELECT IFNULL(c.Boy,'')AS Boy,IFNULL(c.Girl,'')AS Girl FROM (SELECT x.name,CASE WHEN (x.category = 'boy') THEN x.name END AS Boy,CASE WHEN (x.category = 'girl') THEN x.name END AS Girl FROM (SELECT * FROM tablename) X)c

答案 2 :(得分:-1)

您的问题与使用PHP创建表有关,还是与SQL查询本身有关?

如果是表的创建,那么我建议你使用嵌入在单个表中的两个表。这样你就可以使用一个SQL查询构建第一个表,然后使用第二个查询构建第二个表,然后显示表,并且无论每边有多少条目,女孩和男孩将并排出现。你的代码看起来有点像这样:

echo "<table>
      <tr>
      <td>
      <table>
      <tr><th>Boy</th></tr>";

$table = mysql_query("SELECT Name FROM details WHERE Category = 'Boy'") or die(mysql_error());
while($row = mysql_fetch_row($table))
    echo "<tr><td>".$row[0]."</td>";

echo "</table>
      </td>
      <td>
      <table>
      <tr><th>Girl</th></tr>";

$table = mysql_query("SELECT Name FROM details WHERE Category = 'Girl'") or die(mysql_error());
while($row = mysql_fetch_row($table))
    echo "<tr><td>".$row[0]."</td>";

echo "</table>
      </td>
      </tr>
      </table>";

如果您需要满足更多类别,请进行初始搜索以确定不同的类别,然后将上面的代码部分放在循环中创建内部表。

例如。在伪代码中:

echo the outer table <table><tr>
SELECT DISTINCT Category FROM details 
while row1=get next category
    $cat = row1[0];
echo "<td>
      <table>
      <tr><th>".$cat."</th></tr>";

$table = mysql_query("SELECT Name FROM details WHERE Category = '".$cat."'") or die(mysql_error());
while($row = mysql_fetch_row($table))
    echo "<tr><td>".$row[0]."</td>";
echo "</table>
      </td>

echo the </tr></table> to close the outer table