2012-03-20 133 views
-1

我正在尝试编写一个简单的(用于某些)脚本,该脚本将获取上传的文件夹中的图像,然后用适当的位置填充我的html文档中的文件名。 我已成功实现文件名的上传和写入数据库(不确定是否需要该部分)。 想了解如何最好地实现这一点,一定要清楚一些。到目前为止,我已经尝试了几件事,但没有成功。从php文件夹中获取图像列表并填充图像src标签

<?php 
$hote = 'localhost'; 
$base = '*****'; 
$user = '*****'; 
$pass = 'testuser2012'; 
$cnx = mysql_connect ($hote, $user, $pass) or die(mysql_error()); 
$ret = mysql_select_db ($base) or die (mysql_error()); 
$image_id = mysql_real_escape_string($_GET['ID']); 
$sql = "SELECT image FROM image_upload WHERE ID ='$image_id'"; 
$result = mysql_query($sql); 
$image = mysql_result($result, 0); 

header('Content-Type: text/html'); 
echo '<img src="' . $image . '"/>'; 
exit; 
?> 

但是,也许我应该解释完整的功能:我需要用户thier图像上传到thier文件夹,然后在PHP图片库被调用时,与该文件夹的图片表示填充它。 我不知道如果我正确地做了,应该从文件夹中读取文件列表吗?或者把名字写到一个数据库中,然后把它们从那里拉出来......这就是我的问题所在 上面的代码就是我试图使用的代码,虽然它会返回文件名,但它不会在标签中回显它。 ..not知道在那里我的无能在于:)

的HTML我试图填充如下:

<div class="slide"> 
       <div class="image-holder"> 
        <img src="img/asoft_table.jpg" alt="" /> 
       </div> 
       <div class="info"> 

        <p>Morbi a tellus lorem, id scelerisque ligula. Maecenas vitae turpis et.</p> 
       </div> 
      </div> 
      <div class="slide"> 
       <div class="image-holder"> 
        <img src="img/soft_table.jpg" alt="" /> 
       </div> 
       <div class="info"> 

        <p>Sed semper, lorem ac lobortis bibendum, magna neque varius augue, vel accumsan.</p> 
       </div> 
      </div> 
      <div class="slide"> 
       <div class="image-holder"> 
        <img src="img/living_room2.jpg" alt="" /> 
       </div> 
+0

然后张贴你做;-) – 2012-03-20 16:53:21

+0

你有文件名的几件事情,只不过是回应他们出到标签的相应部分。你的问题是什么?你目前有什么代码? – Brad 2012-03-20 16:53:46

+0

如何关于与'$图像= mysql_result($结果,0, '图像');'? – ianbarker 2012-03-20 17:30:31

回答

1

如果你只希望通过一个目录,你的图像路径将是静态的。如果将图像名称存储在数据库中,则只需简单地执行一个小型查询即可输出文件名并附加静态路径。

$result = mysql_query("SELECT * FROM Images"); 

while($row = mysql_fetch_array($result)) { 
    echo "<img src='/path/to/images/".$row['image_name']."'/>"; 
} 

要打破这里究竟发生了什么 - 本质上MySQL查询存储在$result。然后我创建一个循环遍历从MySQL查询返回的数组的循环。这阵会是这个样子:

0 => 'id' => 1, 
     'file_name' => 'foo.jpg', 
     'file_size' => '36.6 kb', 
     'time_stamp' => '14/01/02', 
    1 => 'id => 2, 
     'file_name' => 'bar.jpg', 
     'file_size' => '12.8 kb', 
     'time_stamp' => '14/01/03' 

对于每一个指标,while将输出其嵌套数组。在这种情况下,它将是数据库行。然后,我想为每个数据库行输出一个图像标签,然后将图像的名称附加到标签上。

在你的HTML中,你已经为每个图像创建了一个元素块。所以在一个静态页面上,如果你有100个图像,你将不得不重复这段HTML 100的不同时间。有了编程,你不必这样做。在我的例子中,MySQL将返回一个大的array,其中包含您的每个图像及其行。因此,如果您的桌子上有100张图片,您的array将有100个项目,因此您的while循环将贯穿并打印出100次。跟随?

所以使用HTML,您的代码将如下所示:

<? while($row = mysql_fetch_array($result)) ?> 

<div class="slide"> 
    <div class="image-holder"> 
    <? echo "<img src='img/".$row['image_name']."' alt='' />"; ?> 
    </div> 
    <div class="info"> 
    <p> 
     <? echo $row['image_description']; ?> 
    </p> 
    </div> 
</div> 

<? endwhile; ?> 

所以你可以看到你创建HTML的一个街区,和PHP会通过回路,并根据返回的变量填充为你。

如果您想按日期/大小对它们进行排序,则可以在上载时确定这些变量,并将它们附加到数据库中的某一列。在表中添加时间戳和索引对于从数据库输出中进行排序将有很大帮助。我会组织我的表像这样:

+----+-----------+-----------+------------+ 
| id | file_name | file_size | time_stamp | 
+----+-----------+-----------+------------+ 
| 1 | foo.jpg | 36.6 kb | 14/01/02 | 
+----+-----------+-----------+------------+ 

虽然存储在数据库中的文件信息,而不是穿越/通过你的目录解析可能是你最好的选择,你还可以检查出此页,了解目录信息方法和序列here

编辑:您还可以查看Tizag,其中有全面的教程和学习PHP的人员的资源。

编辑:要回答你关于如何把信息放在正确的位置的问题:这是一个非常广泛的问题与各种各样的答案。总之 - 这取决于你想要如何订购他们以及你想要他们去的地方。您可以使用MySQL queries以特定方式对输出的数据进行排序。您还可以使用inclusion方法分解并在您的网站上排列数据。

+0

应该将代码包含在每个图像src标记的位置吗? – Jjames 2012-03-20 17:12:54

+0

查看我的更新,解释'while'循环。您不会为5个不同的图像标签生成变量,并手动添加变量。您将根据数据库中的条目动态生成内容。 – 2012-03-20 17:31:22

+0

@Jjames - 而且,如果我或其他任何问题,帮助你 - 请接受通过点击复选框答案。请记住,如果您需要帮助,您可以简单地在答案的评论中请求阐述。 – 2012-03-20 17:54:45