簡単なクエリだと思ったのですが、うまくいかないようです。すべての助けに感謝します!
テーブル:
関連するテーブルは2つあります:gallery_meta
とprm_album
。The gallery_meta
tblには、ファイル構造に保存されている画像のデータが含まれています。tblは、prm_album
アルバムIDをアルバムの通常のテキスト名に揃えるだけです。両方のtblについて、クエリで使用されるフィールド名は正しいです。
クエリ:
以下のコードでは、最初に保存されたアルバム名の配列を取得します。次に、ファイル構造をチェックして、実際に画像が含まれているディレクトリを確認します。この時点で、ポジティブとして返される各アルバムのサムネイルについて、データベースに再度クエリを実行したいと思います。プロセスが失敗するのはここです。
私が得るのはホワイトスクリーンだけで、エラー報告は一切ありません。配列$albums
は正常に入力されており、$id
変数はクエリに渡されてい$q
ます。$pattern
アルバムディレクトリが保存されている親ディレクトリへのファイルパスです。
//Get album names from db
$albums = array();
$q="SELECT ID, Name FROM prm_album WHERE 1";
$sql=mysql_query($q) or die(mysql_error());
while($r=mysql_fetch_array($sql)) {
$album = $r['Name'];
$album_dir = $pattern.$album.'/';
//check which albums actually contain images (dividing to account for thumbs, med, lrg.)
$filecount = count(glob($album_dir.'*'))/3;
//if images found, put album in array
if($filecount >= 1) {
$albums[ $r['ID'] ] = $filecount;
}
}
foreach($albums as $id => $filecount) {
$q="SELECT m.AlbumID, m.FileName, m.FileExt,
m.LegacyName, m.IsDefault,
p.Name
FROM gallery_meta AS m
LEFT JOIN prm_album AS p
ON m.AlbumID = p.ID
WHERE m.AlbumID = $id
AND Public = 1
ORDER BY IsDefault DESC
LIMIT 0,1";
$sql=mysql_query($q) or die(mysql_error());
while($r=mysql_fetch_array($sql)) {
$album=$r['Name'].'/';
$legacyname=$r['LegacyName'];
$filename=$r['FileName'].'-sm.';
$ext=$r['FileExt'];
echo '<img src="'$pattern.$album.$filename.$ext.'" />'.$legacyname.'<br/>';
}
}