Я пытаюсь установить ссылку <a href='{$_SERVER['PHP_SELF']}?del=true&orderid={$row['orderid']}' style='color:black;' onclick='return show_confirm();'>Delete</a> удалите конкретную строку из таблицы MSSQL с помощью функции while. В настоящее время нижний код работает нормально и удаляет конкретную строку из таблицы, но теперь я хочу, чтобы он отключил файл от папки sharedstorage. Имя файла, для которого отключается связь, сохраняется в столбце name для этой строки таблицы. В каждой строке таблицы есть столбец name, который содержит уникальное имя файла из файла, который находится в папке sharedstorage.

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

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

// delete from table
    if ($_GET['del'] == 'true') {
       // cast id as int for security
       $id = (int) $_GET['orderid'];
       // delete row from table
       $sql = "DELETE FROM shareddrive WHERE orderid = '$id'";
       $result = mssql_query($sql, $conn) or die(mssql_get_last_message());
       // select the info, ordering by usort
       $sql = "SELECT orderid, name, type FROM shareddrive ORDER BY orderid";
       $result = mssql_query($sql, $conn) or die(mssql_get_last_message());
       // initialize a counter for rewriting usort
       $job_pos_sortt = 1;
       // while there is info to be fetched...
       while ($r = mssql_fetch_assoc($result)) {
          $job_poss = $r['orderid'];
          // update the usort number to the one in the next number
          $sql = "update shareddrive SET orderid = '$job_pos_sortt' WHERE name = '$job_poss'";
          $update = mssql_query($sql, $conn) or die(mssql_get_last_message());
          // inc to next avail number
          $job_pos_sortt++;
       } // end while // end if del
    }

Любая помощь приветствуется.

1
Kelsey 24 Мар 2014 в 22:00
Вы упомянули unlink, но этого нет в коде?
 – 
Mattt
24 Мар 2014 в 22:07
Я пытаюсь добавить в код функцию отмены связи.
 – 
Kelsey
24 Мар 2014 в 23:28

1 ответ

Лучший ответ
// delete from table
    if ($_GET['del'] == 'true') {
       // cast id as int for security
       $id = (int) $_GET['orderid'];
       // delete row from table

       $file = mssql_fetch_array(mssql_query("select name from shareddrive where orderid = $id"));
       unlink($file[0]);     

       $sql = "DELETE FROM shareddrive WHERE orderid = '$id'";
       $result = mssql_query($sql, $conn) or die(mssql_get_last_message());
       // select the info, ordering by usort
       $sql = "SELECT orderid, name, type FROM shareddrive ORDER BY orderid";
       $result = mssql_query($sql, $conn) or die(mssql_get_last_message());
       // initialize a counter for rewriting usort
       $job_pos_sortt = 1;
       // while there is info to be fetched...
       while ($r = mssql_fetch_assoc($result)) {
          $job_poss = $r['orderid'];
          // update the usort number to the one in the next number
          $sql = "update shareddrive SET orderid = '$job_pos_sortt' WHERE name = '$job_poss'";
          $update = mssql_query($sql, $conn) or die(mssql_get_last_message());
          // inc to next avail number
          $job_pos_sortt++;
       } // end while // end if del
    }
0
Loïc 24 Мар 2014 в 23:32
Я использую MSSQL, поэтому mysql_fetch_array должен быть чем-то другим. Я собираюсь попробовать mssql_fetch_assoc и сообщу вам, сработает ли он.
 – 
Kelsey
24 Мар 2014 в 23:20
Не работает. Там написано Warning: unlink() expects parameter 1 to be string, array given in D:\Hostindstaffportal\sharedstorage.php on line 1202.
 – 
Kelsey
24 Мар 2014 в 23:28
Вы не должны просить об этом. Плюс здесь вы даже не пробовали сами. Не могу проголосовать, извините.
 – 
Loïc
25 Мар 2014 в 00:25