簡體   English   中英

如何將MySQL表記錄分成兩部分以顯示在頁面的每一側

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM