从文件夹回显图像以及数据库信息

时间:2014-02-14 10:22:21

标签: php jquery html image mysqli

我正在做一个教程,您可以将上传的图像保存到计算机上的文件夹中,同时将有关上传图像的人,图像标题和上传时间的信息保存到数据库中。

当有人进入带有上传图像的页面时,带有存储在数据库中的信息的小文本将出现在图像的正上方(拇指大小)。单击缩略图时,fancybox将启动,您将获得图像的原始大小。

尽管如此,我的问题是每次有人上传图片时图像本身都会被回显。

因此,如果三个人上传,您将获得总共9个缩略图。如果4个人上传则将是16个图像等。他们不会在文件夹中复制自己。请检查截图。 http://s122.photobucket.com/user/KcMello/media/Ska3080rmavbild2014-02-14kl110753_zpsc19caae9.png.html

我需要帮助的是,如果有人可以检查下面的代码并告诉我我做错了什么。我认为这是全球但我不确定。

谢谢! 此致, 冬风

<?php
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$selectall = "SELECT * FROM store";
$result = mysqli_query($dbcon, $selectall);

while($row = mysqli_fetch_array($result)){

    $information =  ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date']; 

    echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
    echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
    echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
    echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
    echo "<br>";
    foreach(glob("bilder/thumb_*.jpg") as $filename){
        $original = substr($filename, 13);

        echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='$filename' alt='$information' /></a>" . "<br>";
    }
}
?>

更新代码:

<?php
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$selectall = "SELECT * FROM store";
$result = mysqli_query($dbcon, $selectall);

while($row = mysqli_fetch_array($result)){

    $information =  ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date']; 

    echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
    echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
    echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
    echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
    echo "<br>";
    error_reporting(0);
    $original = substr($filename, 13);

    echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='bilder/thumb_" . $row['filname'] . "' alt='$information' /></a>" . "<br>";
}
?>

完成的代码:

<?php
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$selectall = "SELECT * FROM store";
$result = mysqli_query($dbcon, $selectall);

while($row = mysqli_fetch_array($result)){

    $information =  ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date']; 

    echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
    echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
    echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
    echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
    echo "<br>";
    error_reporting(0);

    $original = $row['filname'];

    echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='bilder/thumb_" . $row['filname'] . "' alt='$information' /></a>" . "<br>";
}
?>

非常感谢Jojo帮助我!:)

1 个答案:

答案 0 :(得分:1)

您的问题是您在“bilder”文件夹中显示所有图像,其中名称以“thumb_”开头,而不检查图像是否实际属于数据库表中的行。假设缩略图的命名模式是这样的:

bilder/thumb_ . $row['filename'] . '.jpg

您可以将代码更新为此类(未经测试):

while($row = mysqli_fetch_array($result)){

$information =  ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date']; 



echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
echo "<br>";
echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='bilder/thumb_" . $row['filename'] . "' alt='$information' /></a>" . "<br>";

}

更好的想法IMO也将缩略图路径存储在您的数据库中,并使用它来渲染缩略图链接。