我正在尝试编写一个简单的(对某些人来说)脚本,该脚本将在上传的文件夹中获取图像,然后在适当的位置填充我的html文档和文件名。 我已经成功地将文件名上传和写入数据库(不确定是否需要该部分)。 希望如何最好地实现这一目标。到目前为止,我已经尝试了几件但没有运气。
<?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;
?>
但是,也许我应该解释完整的功能:我需要用户将他们的图像上传到他们的文件夹中,然后当调用PHP图像库时,用该文件夹中的那些所述图像填充它。 如果我从文件夹中读取文件列表,我不确定我是否正确处理它?或者将名称写入数据库并将其从那里拉出来...这就是我的问题所在 上面的代码是我试图使用的,虽然它将返回文件名,但它不会在标签中回显...不确定我的无能在哪里:)
我想填充的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 :(得分:1)
如果您只浏览一个目录,那么您的图像路径将是静态的。如果您的图像名称存储在数据库中,则可以简单地执行一个小查询,该查询输出文件名并附加静态路径。
$result = mysql_query("SELECT * FROM Images");
while($row = mysql_fetch_array($result)) {
echo "<img src='/path/to/images/".$row['image_name']."'/>";
}
要分解这里到底发生了什么 - 本质上是一个MySQL查询存储在$result
中。然后我创建一个while
循环,循环遍历从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
将输出其嵌套数组。在这种情况下,它将是数据库行。然后,我想echo
为每个数据库行输出一个图像标记,并将图像的名称附加到标记。
在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方法在您的网站上分解和订购数据。