Отмена ссылки на файл не работает при нажатии ссылки для удаления PHP

Я пытаюсь заставить эту ссылку работать:

<a href='{$_SERVER['PHP_SELF']}?del=true&product_code=".($row['product_code'])."' style='color:black;' onclick='return show_confirm();'>Delete</a> 

Удаляет указанную строку из таблицы MSSQL с помощью функции while. В настоящее время нижний код работает нормально в том смысле, что он удаляет определенную строку из таблицы MSSQL, но я хотел бы, чтобы он также отвязывал файл из папки img и другой файл из папки specsheets.

Имя файла, который отсоединяется от img, хранится в столбце product_img_name для этой строки таблицы, а имя файла другого файла хранится в столбце specsheet. В каждой строке таблицы есть эти два столбца, которые содержат уникальные имена файлов из файлов, расположенных в папках img и specsheets.

Пока что, когда я нажимаю «Удалить», я получаю следующие ошибки:

Warning: mssql_query() [function.mssql-query]: message: Conversion failed when converting the varchar value 'G1013' to data type int. (severity 16) in D:\Hosting\dl\partscatalogue\partscataloguemanagement.php on line 1175

Warning: mssql_query() [function.mssql-query]: Query failed in D:\Hosting\dtscatalogue\partscataloguemanagement.php on line 1175

Warning: mssql_fetch_array(): supplied argument is not a valid MS SQL-result resource in D:\Hostingdtml\partscatalogue\partscataloguemanagement.php on line 1175

Warning: unlink(img/) [function.unlink]: Permission denied in D:\Hostingdml\partscatalogue\partscataloguemanagement.php on line 1177

Warning: mssql_query() [function.mssql-query]: message: Conversion failed when converting the varchar value 'G1013' to data type int. (severity 16) in D:\Hostingdml\partscatalogue\partscataloguemanagement.php on line 1179

Warning: mssql_query() [function.mssql-query]: Query failed in D:\Hostindhtml\partscatalogue\partscataloguemanagement.php on line 1179

Warning: mssql_fetch_array(): supplied argument is not a valid MS SQL-result resource in D:\Hosting\dhtml\partscatalogue\partscataloguemanagement.php on line 1179

Проще говоря, моя проблема заключается в том, что когда строка таблицы удаляется, файл для этой строки в папке img моего веб-сайта и файл для этой строки в папке specsheets моего веб-сайта остаются и не удаляются вместе со строкой.

Вот код, когда нажимается ссылка на удаление для этой конкретной строки:

// delete from table
if ($_GET['del'] == 'true') {
   // cast id as int for security
   $product_code = $_GET['product_code'];
   $fileas = mssql_fetch_array(mssql_query("select product_img_name from products where product_code = $product_code"));
     if (file_exists("img/$fileas")) {
   unlink("img/$fileas");   
     }
   $file38 = mssql_fetch_array(mssql_query("select specsheet from products where product_code = $product_code"));
     if (file_exists("spechsheets/$file38")) {
   unlink("specsheets/$file38"); 
     }
   // delete row from table
   $sql = "DELETE FROM products WHERE product_code = '$product_code'";
   $result = mssql_query($sql, $conn) or die();
   } // end if del

Спасибо за любую помощь. Вся помощь приветствуется.


person Kelsey    schedule 26.03.2014    source источник
comment
if (file_exists($fileas)) {unlink("img/$fileas"); } -- вы проверяете путь, а затем отвязываете совершенно другой путь.. $fileas !== img/$fileas   -  person Rob W    schedule 26.03.2014
comment
Также просмотрите некоторые из комментариев на php.net о функция unlink. Функция отсоединения может работать не так, как вы думаете. Далее функция unlink возвращает True в случае успеха и False в случае неудачи; вы можете проверить, работает ли unlink как проверка перед удалением записи в MySQL   -  person wspurgin    schedule 26.03.2014
comment
Я обновил свой вопрос и обновил код, который вы указывали выше.   -  person Kelsey    schedule 26.03.2014


Ответы (1)


Я не уверен, какая у вас здесь структура каталогов, но, например, вы проверяете, существует ли $fileas, но затем пытаетесь удалить связь с img/$fileas, что не является одним и тем же местом. Если img/$fileas является правильным путем, это также то, что вам нужно поместить в file_exists(), чтобы получить правильную проверку. Таким образом, это будет file_exists(img/$fileas) и т. д.

person Andrew Whatever    schedule 26.03.2014
comment
Я исправил путь к файлу, и я все еще получаю ошибки. Я обновил код/ошибки в своем вопросе. - person Kelsey; 26.03.2014
comment
Я никогда не использовал Mssql, поэтому я предполагаю, что здесь он работает аналогично MySql. Я предполагаю, что product_img_name - это фактическое имя файла, которое вы пытаетесь получить? На данный момент $fileas представляет собой массив первой строки (в данном случае только строки, если ваша база данных настроена с product_code в качестве уникального поля), возвращаемой из базы данных, для доступа к данным для product_img_name вам нужно будет использовать $fileas ['product_img_name']. Вы можете выполнить эхо для $fileas['product_img_name'], чтобы убедиться, что он получает то, что вы хотите. Я полагаю, что File_exists и unlink также потребуют расширения файла. - person Andrew Whatever; 27.03.2014