PHP& MYSQL。想要显示目录的第一个图像。数据库中的目录路径

时间:2012-08-08 09:49:03

标签: php mysql image

其实我正在使用php中的应用程序。我很擅长ASP.NET,但不适合PHP,所以需要一些帮助。

我的应用程序是一个图库,我在这里做的是,我将图像存储在运行时创建的特定目录中,使用多上传插件,在创建新相册时,将提示用户输入名称然后他选择要存储在该画廊中的所有图像。存储在数据库中的数据将是图库的名称以及上传图像的文件夹的相对路径等,而相册艺术图像和其他图像细节不会添加到数据库中。

另一方面,我正在寻找输出,以便从数据库中显示专辑列表,并且每个图像文件夹中的一个图像将随机显示为专辑封面。当用户点击该专辑封面时,数据库中该专辑的路径将作为查询字符串传递,然后他将被定向到显示该相关专辑的所有图像的页面。在这里,服务器将扫描从查询字符串中获取的路径的所有图像,并显示该特定文件夹中的所有图像。

我的代码:

$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.

}

我成功地完成了所有上传和数据库添加工作,并且还在网页上显示特定文件夹的所有图像。但我的问题是当我显示所有当前可用的专辑时,将随机图像显示为专辑封面。数据从数据库中获取,服务器将扫描“路径”并从该路径中获取一个图像并显示为专辑封面。

3 个答案:

答案 0 :(得分:1)

相应地this question

function random_pic($dir = 'uploads') 
{ 
    $files = glob($dir . '/*.*'); 
    $file = array_rand($files); 
    return $files[$file]; 
}

答案 1 :(得分:1)

php.net文档始终是短代码片段的良好来源:

HeadRoom于2009年5月8日12:08发布this code

<?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个文件(由于{{1}而不区分大小写) })。

答案 2 :(得分:0)

解决!!! 谢谢@Matei Mihai .....

<?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];
}
?>