mysqlデータベースに列a、b、c、dがあります(簡単にするため)。
- 列aはユーザーID#(一意ではない)です
- 列bはファイルパスです
- 列cは「グループID」です
- 列dはアップロード日時です
同時にアップロードされるファイルには、各データベースエントリにそれぞれ同じ「グループID」が保存されます。
まず、次のクエリを実行します。
SELECT * FROM database WHERE a='$userid' ORDER BY d DESC
次に、ループ内のmysqli_fetch_assoc
関数を使用しwhile
て、データをリストにフィードします(上記のように、指定されたIDについて、アップロード日順に並べられています)。
私の問題は、同じフェッチされた出力で同じ「グループID」を持つものをグループ化する必要があることです。これはある種のサブクエリで可能ですか、それとも完全に不十分な状態でこれを実行していますか?よりうまく機能するPDOの代替案があれば、それも喜んで見ていきます。
編集:この質問をもう少し定義するには、以下のセットアップとしてコードを見つけてください:
したがって、同じグループIDを持つエントリは、同じ場所に配置する必要があります<li>
<body>
<ul><?=$output?></ul>
</body>
$userid = $_SESSION['id'];
$output='';
$q = mysqli_query("SELECT * FROM database WHERE a='$userid' ORDER BY d DESC");
while($row=mysqli_fetch_assoc($q)){
$output.=formatfxn($row['b'],$row['c'],$row['d']);
}
function formatfxn($filep,$groupid,$dt){
if(is_string($dt)){
$dt=strtotime($dt);
if(is_file($filep) === true){
$filel='<img class="postimg" src="'.$filep.'" />';
}
return '<li>'.$filel.'</li>';
}
}