[英]Retrieving images from MySQL DB and saving to server directory using PHP
[英]PHP Show images from directory that pertains to a selected ID from DB
我将车辆信息存储在数据库中,其中包括图像文件名。 用户可以选择一次上传多个文件,这些文件名存储在一行中。 例如,我上载了一辆新车,一辆福特车,并且有三张该车的图像。 当我点击保存时,图像将保存在预定义目录中,文件名将存储在数据库中。 DB中的文件名用*分隔。
这是将信息保存到数据库的代码:
if (isset($_POST['submit'])) {
//Get form data
$stock_number = $_POST['stock_number'];
$vin_number = $_POST['vin_number'];
$make = $_POST['make'];
$model = $_POST['model'];
$colour = $_POST['colour'];
$milage = $_POST['milage'];
$year = $_POST['year'];
$price = $_POST['price'];
$description = $_POST['description'];
extract($_POST);
if (isset($_FILES['images']['name'])) {
$file_name_all = '';
for ($i = 0; $i < count($_FILES['images']['name']); $i++) {
$tmpFilePath = $_FILES['images']['tmp_name'][$i];
if ($tmpFilePath != '') {
$path = 'uploaded_images/';
$name = $_FILES['images']['name'][$i];
$size = $_FILES['images']['size'][$i];
list($txt, $ext) = explode('.', $name);
$file = time().substr(str_replace(' ', '_', $txt), 0);
$info = pathinfo($file);
$filename = $file . '.' . $ext;
if (move_uploaded_file($_FILES['images']['tmp_name'][$i], $path.$filename)) {
$file_name_all .= $filename . '*';
}
}
$filepath = rtrim($file_name_all, '*');
}
$sql = "
INSERT INTO vehicles
(stock_number, vin_number, make, model, colour, milage, year, price, description, images_path)
VALUES
('$stock_number', '$vin_number', '$make', '$model', '$colour', '$milage', '$year', '$price', '$description', '$filepath')
";
$result = mysqli_query($conn, $sql);
} else {
$filepath = '';
}
if ($result) {
header('Location: manage_vehicles.php');
}
}
一切都很好。
问题在于:当我从数据库中选择要显示的信息时,我需要显示仅与该记录有关的图像,而与之无关。 尽管显示了所选记录的正确信息,它仍显示所有图像。 例如,如果我选择之前添加的福特,它将显示正确的信息,但显示所有记录的所有图像。
这是用于选择信息(特别是图像)的代码:
$id = $_GET['id'];
$sql = "SELECT * FROM vehicles WHERE id='$id'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$row['make'];
$dir = "uploaded_images/";
$file = $row['images_path'];
if ($opendir = opendir($dir)) {
while (($file = readdir($opendir)) !== false) {
if ($file != '.' && $file != '..') {
echo "<img class='images' src='$dir/$file'>";
}
}
}
}
}
您正在覆盖$ file变量。 试试下面的代码
$id = $_GET['id'];
$sql = "SELECT * FROM vehicles WHERE id='$id'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$row['make'];
$dir = "uploaded_images/";
$filePath= $row['images_path'];
$fileArray = explode("*",$filePath); //split the filepath
foreach($fileArray as $file)
{
if(file_exists($dir.$file)) //check if file exist
{
echo "<img class='images' src='$dir/$file'>";
}
}
}
}
PS该代码未经测试!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.