要在这里获取一半的MySQL表记录,我正在使用:
$numRows=mysql_num_rows(mysql_query("SELECT * FROM cultures"));
$half = $numRows/2;
然后在页面的每一边,我将记录数限制为一半,而另一方面,我按DESC
订购,而不是另一半:
$result = mysql_query("SELECT * FROM cultures ORDER BY name ASC LIMIT ".$half);
while($row = mysql_fetch_array($result)) {
$url = "artists.php?culture=".ucfirst($row['name']);
echo '<div class="homepage_culture_item">
<a href="'.$url.'"></a>
<img src="/images/flags/'.$row['name'].'.png" style="width: 30px; vertical-align: middle; margin-right: 10px;" />'.$row['name'].'
</div>
<br />';
}
正如您在此屏幕截图中看到的那样,效果很好:
但是,如果表中有奇数个记录,我会收到错误:
警告:mysql_fetch_array()期望参数1是资源, 在C:\ wamp \ www \ index.php中给出的布尔 50
如果记录的数量是偶数,但是如果添加了另一个,而不是仅仅将其放在一边,它会很好用,因为它可能会返回一个错误,因为当你将15除以2时,它将是一个十进制和MySQL LIMIT
不能接受小数(显然)。有没有更好的方法来做我想做的事情?
提前致谢!
答案 0 :(得分:3)
你可以将它向下舍入,这样你总能得到一个整数。这样,十进制不会破坏查询。
$half = floor($numRows/2);
您希望在另一侧使用$half
使用新的ceil()
值进行向上舍入,因此不要在中间跳过一行。
顺便说一句,最好只返回一行返回每一行,然后在一侧将行输出到$half
,然后从那一点继续到另一端的结尾。然后你只需要访问数据库一次,就可以更容易地看到发生了什么。
e.g
$result = mysql_query("SELECT * FROM cultures ORDER BY name ASC");
$half = floor(mysql_num_rows($result)/2);
$count = 0;
// First side.
while($count <= $half
&& $row = mysql_fetch_array($result))
{
// ...
$count++;
}
// ...
// Second side.
while($row = mysql_fetch_array($result))
{
// ...
}
答案 1 :(得分:1)
您可以在查询中获取所有结果
$result = mysql_query("SELECT * FROM cultures ORDER BY name ASC");
然后做:
$i = 0;
while($row = mysql_fetch_array($result)){
$i++
if($i % 2){
//echo right aligned div
}
else{
//echo left aligned div
}
}
答案 2 :(得分:1)
@Rich Adams我做了你做过的事情
<center>
<TABLE BORDER="1" WIDTH="500">
<TR>
<TD WIDTH="250">
<TABLE BORDER="1" WIDTH="250">
<TR>
<TD WIDTH="250">
<?php
require_once '../../connect.php';
mysql_select_db("DELETED!!!", $con);
$result = mysql_query("SELECT * FROM DELETED!!! ORDER BY name ASC");
$half = floor(mysql_num_rows($result)/2);
$count = 0;
$url = $row['page'];
while($count <= $half
&& $row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td><a href=".$row['page'].">".$row['name']."</a></td>";
echo "</tr>";
$count++;
}
?>
</TD>
</TR>
</TABLE>
</TD>
<TD WIDTH="250">
<TABLE BORDER="1" WIDTH="250">
<TR>
<TD WIDTH="250">
<?php
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td><a href=".$row['page'].">".$row['name']."</a></td>";
echo "</tr>";
}
mysql_close($con);
?>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</center>
但它不会将列表分成两半并单独显示它们。
编辑:将我的代码更新为我拥有的内容,此表有93个条目,无论如何将它分成三分之一?