好的,所以我正在努力工作。 这是我第一次使用PHP,所以我的代码很可能不那么棒。
以下是我的工作内容:
客户必须能够上传图片+标题+产品说明,必须在主页上显示该产品。 之后,他必须能够删除或修改该项目。
所以上传工作正常,我设法展示产品,删除它并修改它。
唯一的问题是:当我使用新图像进行修改时,它不会替换目录中的旧图像(图像采用sql输入的id,例如0.jpg - > 1.jpg -2。 jpg等。)
所以我将在这里显示我的上传脚本并修改:
上载:
<?php
include("config.php");
$dir = "../images/";
$dir = $dir . basename( $_FILES['image']['name']);
$title = $_POST['title'];
$description = $_POST['desc'];
$position = $_POST['position'];
$image = ($_FILES['image']['name']);
$uploadedfile = $_FILES['image']['tmp_name'];
$uploadedfiletype = $_FILES['image']['type'];
if (!($uploadedfiletype =="image/pjpeg" OR $uploadedfiletype =="image/jpeg" OR $uploadedfiletype =="image/jpg")){
echo "Image must be jpg file";
}else if (move_uploaded_file($_FILES['image']['tmp_name'], $dir)){
$sql="INSERT INTO test (title, description, position) VALUES ('$title','$description','$position')";
if (!mysql_query($sql,$con)){
die('Error: ' . mysql_error());
}
$newname = "../images/" . mysql_insert_id() . ".jpg";
rename ("../images/$image","$newname");
$orig_image = imagecreatefromjpeg("../image/$newname");
$sm_image = imagecreatetruecolor(96,96);
imagecopyresampled($sm_image,$orig_image,0,0,0,0,96,96,imagesx($orig_image),imagesy($orig_image));
imagejpeg($sm_image, $newname, 100);
echo 'Upload good <a href="connected.php">Retour</a>';
}else{
echo "Problem";
}
?>
这是我的修改脚本(基本上是相同的,但是对于sql的UPDATE):
<?php
include("config.php");
$dir = "../images/";
$dir = $dir . basename( $_FILES['image']['name']);
$title = $_POST['title'];
$description = $_POST['desc'];
$position = $_POST['position'];
$id=$_POST['id'];
$image = ($_FILES['image']['name']);
$uploadedfile = $_FILES['image']['tmp_name'];
$uploadedfiletype = $_FILES['image']['type'];
unlink('../images/$id');
if (!($uploadedfiletype =="image/pjpeg" OR $uploadedfiletype =="image/jpeg" OR $uploadedfiletype =="image/jpg")){
echo "L'image doit être en .jpg ou .jpeg";
}else if (move_uploaded_file($_FILES['image']['tmp_name'], $dir)){
$sql="UPDATE test SET title='$title', description='$description' WHERE id='$id'";
if (!mysql_query($sql)){
die('Error: ' . mysql_error());
}
$newname = "../images/" . mysql_insert_id() . ".jpg";
rename ("../images/$image","$newname");
$orig_image = imagecreatefromjpeg("../image/$newname");
$sm_image = imagecreatetruecolor(96,96);
imagecopyresampled($sm_image,$orig_image,0,0,0,0,96,96,imagesx($orig_image),imagesy($orig_image));
imagejpeg($sm_image, $newname, 100);
echo 'Modif réussi <a href="connected.php">Retour</a>';
}else{
echo "Un probleme est survenue";
}
?>
提前感谢您的帮助!
答案 0 :(得分:2)
好像你在unlink('../images/$id');
附近有错字错误。我的意思是,PHP不会在单引号中编译$ id。
尝试unlink("../images/$id");
或unlink('../images/'.$id);
如果它仍然不起作用,您可能有正确的问题。如果返回false,请尝试通过var_dump(unlink("../images/$id"))
进行调试,这意味着删除失败。
如果是这样,请尝试使用sha1哈希创建一个新文件,例如:
$dir = "../images/".sha1(rand())."-".basename( $_FILES['image']['name']);
这将为每个上传的文件创建一个新的唯一名称。它将存储旧图像,但名称不同。 只需将它们以不同方式调用到您的数据库中
答案 1 :(得分:1)
unlink('../images/$id');
中的更改
将'../images/$id'
分配给变量,然后使用:unlink($variable_name);
这对你有好处。
答案 2 :(得分:0)
SELECT `AUTO_INCREMENT`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND TABLE_NAME = 'TableName';