[英]How to split MySQL table records in half to display on each side of a page
要獲得一半的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中給出布爾值
當記錄數為偶數時,它的效果很好,但是如果添加另一條記錄,而不是僅僅將其放在一邊,它就會搞砸了,因為它可能返回錯誤,因為當您將15除以2時,它將是一個十進制數和MySQL LIMIT
不能接受小數(很明顯)。 有沒有更好的方法來做我想做的事情?
提前致謝!
您可以將其四舍五入,以便始終獲得整數。 這樣,十進制不會破壞查詢。
$half = floor($numRows/2);
您將需要在另一側使用ceil()
來使用新的$half
值進行四舍五入,因此不必在中間跳過一行。
順便說一句,最好只執行一個查詢返回每一行,然后將一行輸出到$half
,然后再從另一端繼續到最后,可能會更好。 然后,您只需訪問數據庫一次,就可以更輕松地了解正在發生的情況。
例如
$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))
{
// ...
}
@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項,是否有將其拆分為三分之二?
您可以在查詢中獲取所有結果
$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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.