2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
1

При удалении файла, удалить информацию, которая занесена вместе с ним

08.01.2014, 11:48. Показов 611. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. На странице page.phpможно загружать файл на сервер, указывая данные (тема, руководитель, среда программирования и т.д.), так же $url присваивается полный путь до файла и записывает в таблицу вместе с предыдущими данными (в виде upload/группа/логин/файл.расширение). На странице index.php выводятся файлы у каждого пользователя вместе с кнопкой "Удалить файл" (которая отсылается на delete.php). Вот тут и проблема, файл удаляется, а запись из таблицы нет.

page.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
    <form method='post' action='comment.php' enctype ='multipart/form-data'>
    Файл: <input type='file' name='filename' size='9'/> <br>
 
    <p>
    <input type='hidden' name='name' value='$_SESSION[login]' />
    <input type='hidden' name='id' value='$poluchatel_file' />
    </p>
 
     <p align="center"><label>Ваша тема:<br></label>
     <input name="tema" type="text" size="45" maxlength="100"></p>
 
     <p align="center"><label>Выберите руководителя:</label><br>
     <select name="rukov">
     <option select></p>
     <option value="Мокроусов М.Н.">Мокроусов М.Н.
     <option value="Телегина М.В.">Телегина М.В.
     </select><br><p>
 
     <p align="center"><label>Выберите консультанта:</label><br>
     <select name="konsul">
     <option select></p>
     <option value="Мокроусов М.Н.">Мокроусов М.Н.
     <option value="Телегина М.В.">Телегина М.В.
     </select><br><p>
 
     <p align="center"><label>Выберите язык программирования:</label><br>
     <select name="yazik">
     <option select></p>
     <option value="Delphi">Delphi
     <option value="C++">С++
     </select><br><p>
 
     <p align="center"><label>Среда программирования:<br></label>
     <input name="sreda" type="text" size="25" maxlength="100"></p>
 
     <p align="center"><label>Тематика::<br></label>
     <input name="tematika" type="text" size="25" maxlength="100"></p>
 
     <p align="center"><label>Укажите год:</label><br>
     <select name="year">
     <option select></p>
     <option value="2013/2014">2013/2014
     <option value="2014/2015">2014/2015
     </select><br><p>
 
     <p align="center"><label>Укажите предмет:</label><br>
     <select name="predmet">
     <option select></p>
     <option value="Информатика">Информатика
     <option value="Методы Оптимизации">Методы Оптимизации
     </select><br><p>
 
    <input type='submit' value='Загрузить на сервер'/>
    </form>
comment.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
@session_start();
 
 
  /* Принимаем данные из формы */
  $name = $_SESSION["login"];
 
  @mkdir("upload/".$_SESSION["group"]."/$name", 0777);
 
  $page_id = $_POST["page_id"];
 
  $text_comment = $_POST["text_comment"];
 
  $poluchatel = $_POST["id"];
 
  $name = htmlspecialchars($name);// Преобразуем спецсимволы в HTML-сущности
  $text_comment = htmlspecialchars($text_comment);// Преобразуем спецсимволы в HTML-сущности
 
  $mysqli = new mysqli("данные для подключения");// Подключается к базе данных (хост, пользователь, пароль, база)
 
  $mysqli->query("SET CHARACTER_SET_client='cp1251'");
  $mysqli->query("SET CHARACTER_SET_results='cp1251'");
  $mysqli->query("SET collation_connection='cp1251_general_ci'");
 
  $mysqli->query("INSERT INTO `comments` (`name`, `page_id`, `text_comment`, `date`, `poluchatel`) VALUES ('$name', '$page_id', '$text_comment', UNIX_TIMESTAMP(), '$poluchatel')");// Добавляем комментарий в таблицу
 @ header("Location: ".$_SERVER["HTTP_REFERER"]);// Делаем реридект обратно
?>
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
 
<?php
 
include ("bd.php");
$resource= mysql_query('SELECT * FROM `users` WHERE `type_users` = "Студент" ORDER by `group`',$db);
$file_id = 555;// Уникальный идентификатор
$name = @$_SESSION['login'];
$poluchatel_file = $_POST["id"];// id пользователя, для которого предназначается комментарий
 
if (isset($_POST['tema'])) { $tema=$_POST['tema']; if ($tema =='') { unset($tema);} }
if (isset($_POST['rukov'])) { $rukov=$_POST['rukov']; if ($rukov =='') { unset($rukov);} }
if (isset($_POST['konsul'])) { $konsul = $_POST['konsul']; if ($konsul == '') { unset($konsul);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['yazik'])) { $yazik=$_POST['yazik']; if ($yazik =='') { unset($yazik);} }
if (isset($_POST['sreda'])) { $sreda=$_POST['sreda']; if ($sreda =='') { unset($sreda);} }
if (isset($_POST['tematika'])) { $tematika=$_POST['tematika']; if ($tematika =='') { unset($tematika);} }
if (isset($_POST['year'])) { $year=$_POST['year']; if ($year =='') { unset($year);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
 
if ((empty($tema) or empty($rukov)) or empty($konsul) or empty($yazik) or empty($tematika) or empty($year)) //если пользователь не ввел имя или фамилию или логин или пароль или группу, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
 
//если данные введены, то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$tema = stripslashes($tema);
$tema = htmlspecialchars($tema);
$yazik = stripslashes($yazik);
$yazik = htmlspecialchars($yazik);
$sreda = stripslashes($sreda);
$sreda = htmlspecialchars($sreda);
$tematika = stripslashes($tematika);
$tematika = htmlspecialchars($tematika);
//удаляем лишние пробелы    
$tema = trim($tema);
$yazik = trim($yazik);
$login = trim($login);
$sreda = trim($sreda);
$tematika = trim($tematika);
// подключаемся к базе
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 
// проверка на существование пользователя с таким же логином
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
 
// то сохраняем данные
$url= "upload/".$_SESSION["group"]."/".$_SESSION["login"]."/".$_FILES["filename"]["name"];
$result2 = mysql_query("INSERT INTO `files` (`file_id`, `poluchatel_file`, `tema`, `rukov`, `konsul`, `yazik`, `sreda`, `tematika`, `year`, `predmet`, `url`) VALUES ('$file_id', '$poluchatel_file', '$tema', '$rukov', '$konsul', '$yazik', '$sreda', '$tematika', '$year', '$predmet', '$url')");
 
 if(@copy($_FILES["filename"]["tmp_name"],"upload/".$_SESSION["group"]."/".$_SESSION["login"]."/".$_FILES["filename"]["name"]))   
 
  echo("Файл успешно загружен <br> <a href='index.php'> Вернуться назад</a>");
 else
  echo("Ошибка загрузки файла <br> <a href='index.php'> Вернуться назад</a>");
?>
</html>
index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php 
 
 
 $filename = 'stats.txt';//файл для хранения
 $array = object_from_file($filename);
 
 if(isset($_POST['sub']) and isset($_POST['stats']) and !empty($_POST['stats']))
 {
    if($array == false)
    {
        $array=array();
    }
    $array[$_POST['file']]= $_POST['stats'];
    object2file($array,$filename);
 } 
 
 $dir = "upload/".$array2["group"]."/".$array2["login"]."/"; //задаём имя директории $poluchatel = $array['id']; print_r($poluchatel); "upload/".$_SESSION["group"]."/".$_FILES["filename"]["name"]))   
 
 if(is_dir($dir))
 {
    $files = scandir($dir); //сканируем (получаем массив файлов)
    array_shift($files); // удаляем из массива '.'
    array_shift($files); // удаляем из массива '..'
 
    for($i=0; $i<sizeof($files); $i++)
    {
        if($array !== false)
        {
            $s=(array_key_exists($files[$i],$array)==true)?$array[$files[$i]]:'';
        }
            else
            {
                $s = '';
            }
            echo '<a href="'.$dir.$files[$i].'" title="скачать файл"> '.$files[$i].'</a> '.$s.'
            <form method="post" name="">
            Выберите Статус
            <select name="stats">
            <option select></p>
            <option value="Выполнено">Выполнено
            <option value="Не выполнено">Не выполнено
            </select>
            <input type="hidden" name="file" value="'.$files[$i].'">
            <input type="submit" name="sub"> 
            <input type="hidden" name="login" value="<?php echo $_SESSION[login]?>"></form>
            <form action="delete.php" method="post"><button name="path" value="'.$dir.$files[$i].'">Удалить файл</button></form><br>';
    }
 }
?>
delete.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
  include("bd.php");
  include("blocks/header.php");  
  if (@unlink($_POST['path']))
   {
    $delete_files=mysql_query("DELETE FROM files WHERE url =" .$_POST['path']);
    echo "Файл удален<br><a href='index.php'>Назад</a>"; }
  else
   { echo "Ошибка при удалении файла<br><a href='index.php'>Назад</a>"; }
  include("blocks/footer.php");
?>
 
<html>
<head>
<title>Удаление</title>
</head>
</html>
Вроде как сама проблема только в delete.php, но вот где там именно...Подскажите

Добавлено через 25 минут
Извиняюсь за раннюю панику. Вопрос решен Кому интересно, сделал так:

delete.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
  include("bd.php");
  include("blocks/header.php");
  $del = $_POST['path'];
  if (@unlink($_POST['path']))
   {
    $delete_files= "DELETE FROM `files` WHERE `url` = '$del'";
    mysql_query($delete_files);
    echo "Файл удален<br><a href='index.php'>Назад</a>"; }
  else
   { echo "Ошибка при удалении файла<br><a href='index.php'>Назад</a>"; }
  include("blocks/footer.php");
?>
 
<html>
<head>
<title>Удаление</title>
</head>
</html>
Остальные файлы не изменял
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2014, 11:48
Ответы с готовыми решениями:

При удалении файла так же удалить информации, занесенную вместе с ним
Доброго времени суток. В page.php при загрузке файла на сервер указывается информация о нём и...

Где сохранить информацию при удалении раздела?
Здравствуйте. За название темы - извиняйте, возможно некорректно. В общем ситуация: 1. Дано ~ 1...

При удалении учащихся из журнала удаляет все связанные записи с ним в остальных таблицах
При удалении учащихся из журнала удаляет все связанные записи с ним в остальных таблицах. В...

Запуск ПК, а вместе с ним и google chrome вместе с вкладкой akisho
Сначала была стартовая страница time to read, и поиск go search, потом поисковик был майла. После...

0
08.01.2014, 11:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2014, 11:48
Помогаю со студенческими работами здесь

Удалить данные из XML при удалении из ListBox
Здравствуйте, я начинающий программист, вообще-то это моё хобби и вот не задача хотелось бы сделать...

Удалить файл базы с SD карты при удалении приложения
Возможно ли такое ? Файл базы создаю: public DBHelper(Context context) { ...

Ошибка при удалении объектов (Не удается удалить вложенный объект)
Приветствую! При удалении объектов из базы данных возникает исключение:...

Как при удалении элемента из списка, полностью его удалить
Подскажите, как при удалении элемента из списка, полностью его удалять, чтобы не висел в памяти? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru