0

私はかなり長い間この問題の解決策を探していましたが、関連する質問をしましたが、うまくいきませんでした。誰かが光を当てることができるかもしれないという点まで、非常に率直に尋ねようとします。

この質問が有効な回答を得た場合、同様の質問を削除します。この質問はより明確だと思います。

データベース テーブルに「中古車」に関するデータを格納します。

BMWの中古車が5台 (できれば:)、メルセデスが 4 台、ボクソールが 20台あるとします。

それらは、テーブル内でランド順に並べられています。

データにクエリを実行し、ページネーションを適用して、1 ページあたり 6 台の車(合計 5 ページ) を表示します。

次のようにデータを表示するにはどうすればよいですか。

ページ1:

  • 初のBMW、初のメルセデス、初のボクスホール、
  • 2 番目の BMW、2 番目のメルセデス、2 番目のボクスホール

ページ2:

  • 3 番目の BMW、3 番目のメルセデス、3 番目のボクスホール、
  • 4 番目の BMW、4 番目のメルセデス、4 番目のボクスホール

ページ 3:

  • 5番目のBMW、5番目のボクソール、6番目のボクソール、
  • セブンス・ヴォクスホール、エイト・ヴォクスホール、ナイト・ヴォクスホール

ページ 4 および 5:

  • 残りのすべてのボクスホールが表示されます。

    1. 一部の人は、実行に永遠にかかる非常に複雑な mysql クエリを使用してこれを行うことができると言いました。こちらのスタックに関する質問をご覧ください

    2. ユーザー newfurniturey が同様の問題の解決策を提供しましたが、うまくいきませんでした。私の質問は明確ではなかったと思います。私は彼にとても感謝しています。

4

1 に答える 1

0

カテゴリ (メーカー) と車両 (車両 ID) があり、そのメーカーの車両がなくなっていない限り、すべてのページにすべてのメーカーの車両を 1 つ表示したいとしますか?

フィールドとVehiclesフィールドを持つテーブルがあると仮定します:makevin

最初にメーカーを見つけます:

$q = "SELECT make FROM Vehicles"
$r=mysqli_query($dbconnect, $q);
$make= mysqli_fetch_array($r, MYSQLI_ASSOC);
array_unshift($make, "nomake"); //add so the first make is not a position zero

次に、vin と make を一致させる配列を作成します。

$q = "SELECT make, vin FROM Vehicles ORDER BY make"
$r=mysqli_query($dbconnect, $q);
while($record = mysqli_fetch_array($r, MYSQLI_ASSOC)){
  $vehicle[$record['vin']]=$record['make'];
}

次に、ページの順序で配列を構築します。

$onpage=0;
$numperpage = 5; //number of vehicles per page
foreach($vehicle as $vkey => $vvalue){
  if (array_search($vvalue,$lastvalue)){
    $finalorder[$vkey] = $vvalue;
    $lastvalue[$onpage]= $vvalue;
    $onpage=$onpage<$numperpage?$onpage++:0;
  }
  if($onpage==0){
    unset($lastvalue);
  }
}
var_dump($finalorder);

これには少しクリーンアップが必要かもしれませんが、うまくいくはずです。

于 2012-08-16T21:12:34.227 に答える