Я загружаю изображение на сервер и сохраняю путь в базе данных. Теперь я хочу удалить эту запись, а также изображение с этой записью мой код
$ ID = $ _ GET [ 'ID']; $ select = mysql_query ("выберите изображение из table_name, где question_id = '$ id'"); $ Изображения = mysql_fetch_array ($ выбора); @unlink ($ изображения [ 'изображение']); $ result = mysql_query ("delete from table_name where question_id = '$ id'");
когда i echo $ image ['image']; это даст мне
http://www.example.com/folder/images/image_name.jpeg
Запись удаляется успешно, но изображение остается на сервере.
вам нужно будет использовать путь на своем сервере для удаления изображения, а не URL-адреса.
unlink('/var/www/test/folder/images/image_name.jpeg'); // correct
вам следует удалить @
перед unlink()
, в этом случае вы увидели бы сообщение об ошибке «файл не найден» или что-то в этом роде.
Просто, если вы используете folder/images/image_name.jpeg
вместо всего URL- folder/images/image_name.jpeg
внутри unlink, он будет работать нормально, например
unlink (" http://www.example.com/folder/images/image_name.jpeg ");
следует заменить на
unlink("folder/images/image_name.jpeg");
всякий раз, когда вы выбираете свой код в ссылке удаления. например: <a href=addproduct.php?action=delete&pid=$get_info[pid]>Delete</a>
тогда вы должны проверить условие, используя элемент cuurent select.
if(isset($_GET['action']) && $_GET['action']=='delete' && isset($_GET['pid'])) { $query1=("select * from tablename where id='".$_GET['id']."'"); $result1=mysql_query($query1); while($data=mysql_fetch_array($result1)) { $delete=$data['file']; unlink("../upload/$delete"); } $query=("delete from tablename where id='".$_GET['id']."'"); $result=mysql_query($query) or die("not inserted". mysql_error()); if($result==TRUE) { $_SESSION['msg']="product successfully deleted"; header("Location:addproduct.php"); exit; } else { $_SESSION['msg']="error in deleting product"; header("Location:addproduct.php"); exit; } }
вif(isset($_GET['action']) && $_GET['action']=='delete' && isset($_GET['pid'])) { $query1=("select * from tablename where id='".$_GET['id']."'"); $result1=mysql_query($query1); while($data=mysql_fetch_array($result1)) { $delete=$data['file']; unlink("../upload/$delete"); } $query=("delete from tablename where id='".$_GET['id']."'"); $result=mysql_query($query) or die("not inserted". mysql_error()); if($result==TRUE) { $_SESSION['msg']="product successfully deleted"; header("Location:addproduct.php"); exit; } else { $_SESSION['msg']="error in deleting product"; header("Location:addproduct.php"); exit; } }
вы должны использовать относительный путь для удаления файла с сервера с отключением. Если вы сохраняете абсолютный путь в своей базе данных, сначала вы должны увидеть, из какой папки вы удаляете изображение. поэтому, если вы удалите изображение из «delete.php», которое находится на http://www.example.com/folder/delete.php, вы должны сделать что-то вроде этого:
$db_path = "http://www.example.com/folder/images/upArrow.png"; $len = strlen("http://www.example.com/folder/"); $new_path = substr($db_path, $len, strlen($db_path)-$len); echo " -> ".$new_path; if(isset($_POST['Submit'])){ $return = unlink($new_path); if($return){echo "Succes";}else{echo "Fail";} }
//http://www.example.com/folder/images/image_name.jpeg define("BASE_URL", DIRECTORY_SEPARATOR . "folder" . DIRECTORY_SEPARATOR); define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . BASE_URL); $folder_upload = "images/"; $image_delete = ROOT_PATH . $folder_upload . pathinfo($image['image'], PATHINFO_BASENAME); if (!empty($image['image'])) { /* Delete */ if (unlink($image_delete)) { echo "<b>{$image_delete}</b> has been deleted"; } else { echo "<b>{$image_delete}</b> error deleting "; } } else { echo "File image not exist"; } // http://localhost/folder/images/image_name.jpeg