Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2013, 17:34   #1
soundstorm
Пользователь
 
Регистрация: 20.08.2013
Сообщений: 15
По умолчанию Удаление нескольких записей по checkbox

Доброго времени суток! Помогите, пожалуйста, разобратся:
есть база с данными, которые выводятся в таблицу. Надо организовать удаление елементов с базы с помощью checkbox. Форма рабочая, а вот удалять елементы не получается.
Вот сама форма:
PHP код:
<html>
   <head>
    <meta http-equiv=content-type content="text/html; charset=UTF-8">
   </head>
    <body >
     <br><br><br><br><br>
    <center><h2>Ввід і видалення раніше збережених даних</h2></center>
         <form method="post" action="test2.php" width=\"90%\">
           <table align="center"border=1>
             <td align=\"center\"><b>Прізвище</b></td>
                  <td align=\"center\"><b>Ім'я-По батькові</b></td>
                  <td align=\"center\"><b>Підрозділ</b></td>
                  <td align=\"center\"><b>Відділ</b></td>
                  <td align=\"center\"><b>Посада</b></td>
                  <td align=\"center\"><b>Внутрішній телефон</b></td>
                <td align=\"center\"><b>Зовнішній телефон</b></td>
                  <td align=\"center\"><b>Мобільний телефон</b></td>
                  <td align=\"center\"><b>Домашній телефон</b></td>
                  <td align=\"center\"><b>e-mail</b></td>
                  <td align=\"center\"><b>Видалення</b></td>
            </tr>
    <?php
$hostname 
"localhost";
 
$username "root";
 
$password "secret_len";
 
$dbName "phone_directory";
 
$userstable "users";
        
 
$link mysql_connect("$hostname""$username","$password")
 or die(
"Не могу подключится");
 
mysql_select_db("$dbName") or die("");
  
   
$query="SELECT * FROM $userstable ";
   
$result mysql_query($query) or die("Сбой запроса");
while (
$line mysql_fetch_array($result)) { 
print 
"<tr align=\"center\"><td>$line[1]</td>";
print 
"<td>$line[2]</td>";
print 
"<td>$line[3]</td>";
print 
"<td>$line[4]</td>";
print 
"<td>$line[5]</td>";
print 
"<td>$line[6]</td>";
print 
"<td>$line[7]</td>";
print 
"<td>$line[8]</td>";
print 
"<td>$line[9]</td>";
print 
"<td>$line[10]</td>";

print 
"<td>";
$v=$line[0];
?>
<input type='checkbox' name='checkbox[]' id='checkbox[]'  value= "<?php echo $v ?>" >
<?php
print "</td></tr>";
}
?>
</table>
<br>
<center><input id='delete' type='submit' name="ud" value='удалить'></center>
</form>
</body>
</html>
а здесь обработчик формы, который не работает:
PHP код:
<?php
require 'bd.php';
 
if(
$_POST['delete']) 
    
$checkbox $_POST['checkbox']; 
    
$countCheck count($_POST['checkbox']);
     
    for(
$i=0;$i<$countCheck;$i++) {
        
$del_id  $checkbox[$i];
           
        
$sql "DELETE FROM users WHERE id =  $del_id";
        
$result $mysqli->query($sql) or  die(mysqli_error($mysqli));
    }
    if(
$result) {         
        
header('Location: test.php');
    } else {
        echo 
"Ошибка: ".mysql_error();
    }
}
?>
soundstorm вне форума Ответить с цитированием
Старый 20.08.2013, 17:50   #2
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

1. Замени

Код:
$result = $mysqli->query($sql) or  die(mysqli_error($mysqli));
на

Код:
$result = mysql_query($sql) or  die(mysql_error());
2. Удаление у тебя происходит в цикле. Ты так базу заживо похоронишь. Нужно собирать id записей в массив, а потом удалять

Сборка

Код:
$arr[]= $checkbox[$i]
Удаление после цикла
Код:
$del=implode(',', $arr);
mysql_query("DELETE FROM users WHERE id in $del");
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 20.08.2013, 18:02   #3
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

То есть, весь обработчик у тебя будет выглядеть так:
(я убрал вывод ошибки запроса, который останавливает работу скрипта, и поставил недостающую фигурную скобку)

Код:
<?php
 require 'bd.php';

if($_POST['delete'])
 {
    $checkbox = $_POST['checkbox'];
    $countCheck = count($_POST['checkbox']);

    for($i=0;$i<$countCheck;$i++)
     {
        $arr[]  = $checkbox[$i];
     }

     $del=implode(',', $arr);
     $sql = "DELETE FROM users WHERE id in $del";
     $result = mysql_query($sql);
    if(isset($result))
     {
        header('Location: test.php');
     } else
      {
        echo "Ошибка: ".mysql_error();
      }
 }
?>
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru

Последний раз редактировалось grominfo; 21.08.2013 в 11:38.
grominfo вне форума Ответить с цитированием
Старый 21.08.2013, 09:59   #4
soundstorm
Пользователь
 
Регистрация: 20.08.2013
Сообщений: 15
По умолчанию

Спасибо за помощь, но все равно что-то не клеится. Даже ошибки не выводит
soundstorm вне форума Ответить с цитированием
Старый 21.08.2013, 10:22   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от soundstorm Посмотреть сообщение
<input id='delete' type='submit' name="ud" value='удалить'>
Как можно увидеть из этого кода – $_POST['delete'] не существует, $_POST['ud'] есть – а вот $_POST['delete'] нет, потому как имя переменной определяет атрибут name, а не id.
Поэтому и не работает ничего – всё срывается на начальной проверке в обработчике на существование $_POST['delete'] – которой, конечно же, нет.
Проверяй наличие $_POST['ud'].
Andkorol вне форума Ответить с цитированием
Старый 21.08.2013, 11:13   #6
soundstorm
Пользователь
 
Регистрация: 20.08.2013
Сообщений: 15
По умолчанию

Да, вы правы - упустил. Поменял. Все равно обработчик не работает. Уже пробовал комментарии в середину скрипта сунуть, чтобы увидеть где загвоздка. Все идет без ошибок, но удаление так и не происходит
soundstorm вне форума Ответить с цитированием
Старый 21.08.2013, 11:32   #7
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

soundstorm, проверяйте исходный код страницы, правильно ли генерируются поля и их значения, проверьте названия таблицы и полей, есть ли соединения с базой данных, и.т.д.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 21.08.2013, 11:33   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от soundstorm Посмотреть сообщение
Да, вы правы - упустил. Поменял. Все равно обработчик не работает. Уже пробовал комментарии в середину скрипта сунуть, чтобы увидеть где загвоздка. Все идет без ошибок, но удаление так и не происходит
Нечего гадать.
Нужно смотреть новый код, со всеми изменениями.
Поиск ошибок и отладка
Andkorol вне форума Ответить с цитированием
Старый 21.08.2013, 11:38   #9
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Ну правильно, отладчик и не будет работать. Я тут переменные местами перепутал )))

Правильно будет так

Код:
<?php
 require 'bd.php';

if($_POST['delete'])
 {
    $checkbox = $_POST['checkbox'];
    $countCheck = count($_POST['checkbox']);

    for($i=0;$i<$countCheck;$i++)
     {
        $arr[]  = $checkbox[$i];
     }

     $del=implode(',', $arr);
     $sql = "DELETE FROM users WHERE id in $del";
     $result = mysql_query($sql);
    if(isset($result))
     {
        header('Location: test.php');
     } else
      {
        echo "Ошибка: ".mysql_error();
      }
 }
?>
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 21.08.2013, 11:45   #10
soundstorm
Пользователь
 
Регистрация: 20.08.2013
Сообщений: 15
По умолчанию

Вот, выкладываю все, ато уже заблудился в 3-х соснах.
Форма:
PHP код:
<html>
   <head>
    <meta http-equiv=content-type content="text/html; charset=UTF-8">
   </head>
    <body >
     <br><br><br><br><br>
    <center><h2>Ввід і видалення раніше збережених даних</h2></center>
         <form method="post" action="test2.php" width=\"90%\">
           <table align="center"border=1>
             <td align=\"center\"><b>Прізвище</b></td>
                  <td align=\"center\"><b>Ім'я-По батькові</b></td>
                  <td align=\"center\"><b>Підрозділ</b></td>
                  <td align=\"center\"><b>Відділ</b></td>
                  <td align=\"center\"><b>Посада</b></td>
                  <td align=\"center\"><b>Внутрішній телефон</b></td>
                <td align=\"center\"><b>Зовнішній телефон</b></td>
                  <td align=\"center\"><b>Мобільний телефон</b></td>
                  <td align=\"center\"><b>Домашній телефон</b></td>
                  <td align=\"center\"><b>e-mail</b></td>
                  <td align=\"center\"><b>Видалення</b></td>
            </tr>
    <?php
$hostname 
"localhost";
 
$username "root";
 
$password "secret";
 
$dbName "phone_directory";
 
$userstable "users";
        
 
$link mysql_connect("$hostname""$username","$password")
 or die(
"Не могу подключится");
 
mysql_select_db("$dbName") or die("");
  
   
$query="SELECT * FROM $userstable ";
   
$result mysql_query($query) or die("Сбой запроса");
while (
$line mysql_fetch_array($result)) { 
print 
"<tr align=\"center\"><td>$line[1]</td>";
print 
"<td>$line[2]</td>";
print 
"<td>$line[3]</td>";
print 
"<td>$line[4]</td>";
print 
"<td>$line[5]</td>";
print 
"<td>$line[6]</td>";
print 
"<td>$line[7]</td>";
print 
"<td>$line[8]</td>";
print 
"<td>$line[9]</td>";
print 
"<td>$line[10]</td>";

print 
"<td>"
$v=$line[0];
?>
<input type='checkbox' name='checkbox[]' id='checkbox[]'  value= "<?php echo $v ?>" >
<?php
print "</td></tr>";
}
?>
</table>
<br>
<center><input id='delete' type='submit' name="delete" value='удалить'></center>
</form> 
</body>
</html>
Обработчик:
PHP код:
<?php
$db 
mysql_connect ("localhost","root","secret");
   
mysql_select_db ("phone_directory",$db) or die(mysql_error());;

if(
$_POST['delete']) 
 {
    
$checkbox $_POST['checkbox']; 
    
$countCheck count($_POST['checkbox']);
        
    for(
$i=0;$i<$countCheck;$i++) 
    { 
        
$del[] = $checkbox[$i];
        
$arr[] = $checkbox[$i];
       }    
        
$del=implode(',',$arr);
        
$sql "DELETE FROM users WHERE id_user in $del";
        
$result mysql_query($sql);
        
    if(isset(
$result)) 
       {         
        
header('Location: test.php');
       } else {
        echo 
"Ошибка: ".mysql_error();
    }
}
?>
soundstorm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Checkbox, присвоение нескольких значений manula PHP 1 20.03.2013 15:19
Не работает удаление нескольких записей в форме Swatch Microsoft Office Access 3 09.07.2012 10:20
Удаление нескольких записей через checkbox dmitruha PHP 1 23.07.2011 16:07
Удаление нескольких записей из БД a_n_n_a БД в Delphi 4 23.04.2011 02:44
Удаление нескольких записей Hobbit_88 БД в Delphi 5 23.04.2009 17:18