我有一个MySQL表,它有两列 -
我想在我的网站上显示这样的内容 -
我可以轻松地使用表名Boy | Girl
。但是,当我试图显示表格时,我会这样 -
我只是在这里展示一个例子。可能有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>";
}
这么多观点但没有得到任何答案。请帮帮我们请抓住我的错误。
答案 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