0

実際、私はphpにあるアプリケーションに取り組んでいます。そして、私はASP.NETは得意ですが、PHPは得意ではないので、ここで助けが必要です。

私のアプリケーションは画像ギャラリーです。ここで行っているのは、マルチアップロードプラグインを使用して、実行時に作成された特定のディレクトリに画像を保存していることです。新しいアルバムを作成している間、ユーザーはアルバムの名前だけを入力するよう求められます。 、次に、そのギャラリーに保存するすべての画像を選択します。データベースに保存されるデータは、ギャラリーの名前や画像がアップロードされたフォルダの相対パスなどになりますが、アルバムアート画像やその他の画像の詳細はデータベースに追加されません。

反対側では、アルバムのリストがデータベースから表示され、すべての画像フォルダーの画像の1つがアルバムアートとしてランダムに表示されるような出力を探しています。ユーザーがそのアルバムアートをクリックすると、データベースにあったそのアルバムのパスがクエリ文字列として渡され、その関連アルバムのすべての画像を表示するページに移動します。ここで、サーバーはクエリ文字列から取得したパスのすべての画像をスキャンし、その特定のフォルダーからのすべての画像を表示します。

私のコード:

$sql="Select ID, GalleryName, Path, CreateDate from imageGallery where IsActive=true";
$result=mysql_query($sql);

if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}


    while($albums_row = mysql_fetch_assoc($result)){
    $albums[] = array(
        'id'            => $albums_row['ID'],
        'name'          => $albums_row['GalleryName'],
        'path'          => $albums_row['Path'],
        'dates'         => $albums_row['CreateDate']
    );
}

foreach($albums as $album){
// please check if this thing is correct?
echo '<a href="showImage.php?galPath=' . $album["path"] . '"><img src="something"/>    </a>';
// or any function that can work in this loop to call random image for each folder.

}

私はすべてのアップロードとデータベースの追加を行うことに成功しました。また、特定のフォルダーのすべての画像をWebページに表示することに成功しました。しかし、私の問題は、現在利用可能なすべてのアルバムを表示しているときに、ランダムな画像をアルバムアートとして表示することです。データはデータベースからフェッチされ、サーバーは「パス」をスキャンして、そのパスから1つの画像を取得し、アルバムアートとして表示します。

4

3 に答える 3

1

したがって、この質問で

function random_pic($dir = 'uploads') 
{ 
    $files = glob($dir . '/*.*'); 
    $file = array_rand($files); 
    return $files[$file]; 
}
于 2012-08-08T09:52:47.093 に答える
1

php.netのドキュメントは、常に短いコードスニペットの優れたソースです。

2009年5月8日12:08のHeadRoomはこのコードを投稿しました:

<?php
$image_dir = 'images';
$count = 0;
if ($handle = opendir($image_dir)) {
    $retval = array();
    while (false !== ($file = readdir($handle))) {
        if (($file <> ".") && ($file <> "..")) {
            $retval[$count] = $file;
            $count = $count + 1;
        }
    }

    closedir($handle);
}
shuffle($retval);
$current_image = $retval[0];
?>

ifたとえば、ファイル&& strripos($file, ".jpg", 0) == strlen($file) - strlen(".jpg")のみを取得するために、内部に条件を追加することで、画像だけを簡単にフィルタリングできることに注意してください.jpg(大文字と小文字は区別されませんstrripos)。

于 2012-08-08T09:57:09.187 に答える
0

解決しました!!! ありがとう@MateiMihai....。

<?php
include("dbpath.php");

$sql="Select ID, GalleryName, Path, CreateDate from imageGallery where IsActive=true";
$result=mysql_query($sql);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message  = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}

while($albums_row = mysql_fetch_assoc($result)){
    $albums[] = array(
        'id'            => $albums_row['ID'],
        'name'          => $albums_row['GalleryName'],
        'path'          => $albums_row['Path'],
        'dates'         => $albums_row['CreateDate']
    );
}
$i=0;

foreach($albums as $album){
//echo $album['path'] . "<br/>";
$imgs =  str_replace(" ", "%20" , random_pic($album['path']));
$aPath= $album['path'];
echo "<a class='imgBox' href=" . "imageListMethod.php?p=" . $aPath .  "><img src=" . $imgs .   "></a>";
}
function random_pic($dir)
{
$files = glob($dir . '/*.jpg*');
$file = array_rand($files);
return $files[$file];
}
?>
于 2012-08-11T11:06:37.517 に答える