簡體   English   中英

如何在PHP中將SQL查詢結果拆分為塊

[英]How to split SQL query results into chunks in PHP

我正在嘗試使用PHP將查詢結果分成多個塊,但似乎無法弄清楚如何制定查詢或循環以將結果分成四個批處理並用特定的HTML元素包圍這四行。

內容特別是攝影作品集,在這里我只是嘗試逐行顯示照片,但是我需要通過設置樣式的方式要求每一行基本上是一組單獨的信息。

到目前為止,這是我正在使用的代碼:

<ul class="no-bullet">
<?php

require("connect.php");
$query = "SELECT * FROM dv_photo_work LIMIT 4";

$result = mysql_query($query, $link);
while ($row = mysql_fetch_array($result)) {
  print('
     <li><img alt="'.$row["img_title"].'" src="'.$row["img_slug"].'></li>');
}


?>
</ul>

我只希望在該列表中包含四個圖像。 然后在另一個列表中再添加四個。 您能幫我重新編寫循環,使其返回四個記錄,然后在另一個列表中開始對以下四個記錄進行新查詢嗎? 我將從數據庫中檢索到大約100條記錄,因此它必須能夠繼續直到列出整個表為止。

我認為這類似於分頁過程,但這是我不熟悉的另一種技術。 我假設這是對查詢和標記的簡單調整,但是我可以理解,這比簡單的修復需要更多的代碼創造力。

非常感謝,

喬惠

嘗試這個

<ul class="no-bullet">
<?php
require("connect.php");
$query = "SELECT * FROM dv_photo_work";
$result = mysql_query($query, $link);
$i =1;
while($row = mysql_fetch_array($result)) {
   print('<li><img alt="'.$row["img_title"].'" src="'.$row["img_slug"].'></li>');
   if ($i%4 == 0) echo "</ul><ul class='no-bullet'>";
   $i++;
}
?>
</ul>

第一! 將該邏輯遠離html,這將使您更清楚地看到問題。 第二! 兩個類代表一個n個長度的查詢結果列表的類呢? 類A應該是一個迭代器,以便類B可以提取任意長度的結果塊並返回適當大小的結果對象。 也許有第三類,其實例表示受限制的結果的大小。 因此,所有三個類中的所有A代表結果的完整列表,B作用於a並返回C的實例,這些實例將代表您受大小限制的結果塊。

這本來是評論,但是太長了,所以我不得不做出回答(對不起,如果它太“教男人釣魚”,我就是不想編寫php ...)

獲取所有結果,將它們讀取到多維數組中,然后使用array_chunk()將它們分成組。

$query = mysql_query("SELECT * FROM dv_photo_work",$link);
$results = array();
while($line = mysql_fetch_array($query, MYSQL_ASSOC)){
    $results[] = $line;
}
$lists = array_chunk($results,4);
foreach ($lists as $list) {
    echo '<ul>';
    foreach ($list as $result) {
        echo '<li><img alt="'.$result["img_title"].'" src="'.$result["img_slug"].'></li>'
    }
    echo '</ul>';
}

這是所涉及邏輯的概述,使用模運算符(%)在每四個記錄處更改HTML:

$i = 0;

// within your current while-loop:
    if ($i % 4 == 0) {
        // $i is a multiple of 4 (including 0, the first record)
        if ($i > 0) {
            // finish the previous ul-tag
        }
        // start a new block of HTML (the ul)
    }
    // output the li
    $i += 1;

// after the loop, close the last ul

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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