удалить запись БД после отмены связи - PullRequest
0 голосов
/ 07 ноября 2010

Заранее извиняюсь, если этот вопрос искажен или немного толст, но здесь идет ...

У меня есть php-форма с отзывами о вводе данных.

Одна часть имеет дело с загруженными файлами.

Есть три флажка для трех возможных файлов, которые могут быть загружены в строку таблицы. В БД есть 3 поля, относящихся к этим возможным загрузкам файлов. Если установить флажки формы, соответствующие загруженные файлы будут отменены. Работает нормально.

Вот моя загадка. Как мне удалить / обновить нужную запись в БД, соответствующую несвязанным файлам?

Проблема в том, что 3 флажка названы одинаково в html: 'delpic []'. Иными словами, значения, возвращаемые путем установки флажков, вставляются в массив. Это ключ к краткому управлению отключением (я думаю).

Если нужно удалить только один файл для конкретной строки, как приложение может «узнать» соответствующее поле в базе данных mysql для обновления?

Argghhh.

Tom

Ответы [ 2 ]

0 голосов
/ 08 ноября 2010

В вашей форме вы используете массивы.Я предполагаю, что эти массивы содержат имена файлов, которые вы хотите удалить, например, ниже?

<?php
array => (
    [0] => 'file1.gif',
    [1] => 'file2.gif',
    [2] => 'file3.jpg'
    // ...
)
?>

Я бы лично порекомендовал использовать здесь первичные ключи из базы данных вместо имен файлов (ваша таблица БД имеет первичный ключ, верно?), Изатем получить строки из базы данных.Таким образом, вы знаете, что строки существуют, и вы сможете получить имена файлов из таблицы.

Что касается фактического удаления, если ваша база данных поддерживает транзакции, то я был бы более склонен сделать это наоборот и удалить строки перед файлами со следующим псевдокодом:

  1. Запуск транзакции
  2. Удаление строки из базы данных
  3. Попытка удаления файла
  4. if (строка удалена) и (файл удален)
  5. Подтвердить транзакцию
  6. иначе
  7. Откатить транзакцию и сообщить об ошибке
0 голосов
/ 07 ноября 2010

Как он «узнает», это то, что вы скажете это в своем скрипте, используя правильный запрос. Предположим, у вас есть поле 'file_names' в таблице базы данных 'table', в котором хранятся уникальные имена файлов, а все ваши файлы в связанном каталоге имеют уникальные имена. Затем, когда вы делаете что-то с файлом 'foo', вы будете запрашивать вашу таблицу и смотреть на строку, в которой есть 'foo' в if, и делать что-то подобное, используя строку sql. например, удаление этой строки, например.

$db = mysql_connect('YOUR_DB_ADDRESS','YOUR_DB_USER','YOUR_DB_PASS') or die("Database error"); 
mysql_select_db('YOUR_DB', $db); 

$SQL = 'DELETE FROM table WHERE file_names = "foo"';
mysql_query($SQL); 
...