Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запутался совсем, не получается сделать кнопку удаления..
 
 автор: Belkin   (03.11.2011 в 02:52)   письмо автору
585.1 Кб
 
 

Вот код index.php:

Скрин, как выглядит таблица прилепил. Проблема в том, что не могу понять как сделать кнопку удаления определенной новости. Вот в этой переменной $ss создан запрос, где по id удаляется определенная новость. Но что-то не работает.. А если вставить эту переменную в массив While, то все удаляется автоматом и сразу при загрузке страницы.

row["0"] - это id новости



<?php

    session_start
(); 
    
// Подключаем БД  
    
include 'mysql.php';
    
    
// Верхнячасть html
    
echo'
        <html>
        <head>
          <title>Загрузка файлов на сервер</title>
        </head>
        <body>
        '
;
        
    
// Статус загрузки
            
    
echo($_SESSION['status']);    
    unset(
$_SESSION['status']);
    
    
// Вывод для админа
    
if(isset($_GET['admin']))
    { 
        echo 
'ADMIN<br />'
        
$sql_main mysql_query("SELECT * FROM vk1");        
        echo 
'<table style="border: 1px solid #515151;margin: 5px;">';   
        echo 
'<tr><td>ID</td><td>Управление</td><td>ТЕКСТ</td><td>ИЗОБРАЖЕНИЕ</td><td>ДАТА</td></tr>';
        
// ВОТ ЗАПРОС ДЛЯ УДАЛЕНИЯ
        // ТУТ НАЧИНАЕТСЯ ПРОБЛЕМА!!!
        
$ss mysql_query("DELETE FROM vk1 WHERE id='".$row["0"]."'"); 
        while (
$row mysql_fetch_array($sql_mainMYSQL_NUM))                        
        {                        
            echo 
'
            <tr>
                <td style="border: 1px solid #222222;">'
.$row["0"].'</td>
                <td style="border: 1px solid #555555">
                    <form action="" method="get">
                        <button type="submit" name="edit" value="">Изменить</button>
                        <button type="submit" name="delete" value="'
.$ss.'">Удалить</button>
                    </form>
                </td>
                <td style="border: 1px solid #515151;width: 100%;">'
.$row["1"].'</td>
                <td style="border: 1px solid #515151;width: 100%;"><a href="files/'
.$row["2"].'"><img src="files/'.$row["2"].'" style="width: 400px;height: 200px;" ></a></td>
                <td style="border: 1px solid #515151;width: 100%;">'
.$row["3"].'</td>
            </tr>
                '

        }
        echo 
'</table>'
    } 
    
    
// Вывод для юзера
    
if(!isset($_GET['admin']))
    {
        echo
'  
            <form action="download.php" method="post" enctype="multipart/form-data">
                Ваша новость:<br />
                <textarea type="text" name="text" style="width: 500px;height: 200px;" onchange="if (this.value.length > 2) {submit.disabled = false;} else {submit.disabled = true;}" 
onmousemove="if (this.value.length > 2) {submit.disabled = false;} else {submit.disabled = true;}"></textarea><br />
                Ваша фотография:<br />
                <input type="file" name="file"/><br /> 
                <input type="submit" name="submit" value="Отправить" disabled="disabled"/> 
            </form>
            '
;  
    }
    
    
// Нижняя часть html    
    
echo'
        </body>
        </html>
        '
;
        
?>

  Ответить  
 
 автор: bab-nike   (03.11.2011 в 09:34)   письмо автору
 
   для: Belkin   (03.11.2011 в 02:52)
 

попробуйте так

<?php
if ((isset($_GET["edit"])) && ($_GET["edit"] == "form1"))
 {
 
$ss mysql_query("DELETE FROM vk1 WHERE id='".$row["0"]."'");
  
//и т.д.
}
if ((isset(
$_GET["edit"])) && ($_GET["edit"] == "form2"))
 {
 
//запрос на изменение
  //и т.д.
}
.....................
код
..........
<
form action="" method="get" name="form2"
<
button type="submit" name="edit" value="">Изменить</button
<
input type="hidden" name="edit" value="form2">
</
form>
<
form action="" method="get" name="form1"
<
button type="submit" name="delete" value="'.$ss.'">Удалить</button>
<
input type="hidden" name="edit" value="form1"
</
form>
?>

Хотя этот варянт лучше использовать при POST запросе, при GET можно намного проще.

  Ответить  
 
 автор: KPETuH   (03.11.2011 в 09:52)   письмо автору
 
   для: Belkin   (03.11.2011 в 02:52)
 

У вас ничего не получается потому что вы нигде не обрабатываете нажатие кнопки удаления, а мускул запрос на удаление вставляете при выводе...

перед

// Вывод для админа


вставьте например такой код

if (!empty($_POST['delete'])) {
      $ss = mysql_query("DELETE FROM vk1 WHERE id='".(int)$_POST['delete']."';");  
      if ($ss) exit(@header("Location: ".$_SERVER['REQUEST_URI']));
      else exit('<center>Permission denied</center>');
}

Вот это удалите из кода
$ss = mysql_query("DELETE FROM vk1 WHERE id='".$row["0"]."'");

а кнопку сделайте такой
<button type="submit" name="delete" value="'.$row[0].'">Удалить</button> 


да и не надо в $_GET держать идентификатор админ не админ, лучше держите его в $_SESSION

  Ответить  
 
 автор: Belkin   (03.11.2011 в 17:01)   письмо автору
 
   для: KPETuH   (03.11.2011 в 09:52)
 

Спасибо большое, получилось. На счет $_GET понял, буду держать в сессии. А еще 2 вопроса - через $_GET удаления сделать нельзя, нужно и лучше через $_POST? и возможно это элементарно, но что означает вот этот кусочек - "......id='".(int)$_POST['delete'].....", я догадываюсь, что это указывает на тип данных в sql запросе, то есть числовой - INT, верно?

  Ответить  
 
 автор: KPETuH   (03.11.2011 в 19:16)   письмо автору
 
   для: Belkin   (03.11.2011 в 17:01)
 

Почему же можно и через $_GET, главное не передавать через $_GET важные данные ), У меня $_POST потому что я не обратил внимание что у вас в форме метод $_GET :). (int)$value либо intval($value) это приведение к целому числу чтобы исключить sql инъекцию, но это относиться к PHP инструкциям, а не SQL.

  Ответить  
 
 автор: Belkin   (03.11.2011 в 22:07)   письмо автору
 
   для: KPETuH   (03.11.2011 в 19:16)
 

Понял, буду знать. Спасибо )

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования