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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2010, 19:02   #1
webber9989
dimgunkin
Форумчанин
 
Аватар для webber9989
 
Регистрация: 06.05.2010
Сообщений: 112
По умолчанию checkbox + php [удаление информации из БД]

Всем доброго времени суток...

Есть форма:


Смысл такой, выбираем сервер, нажимаем удалить, все это отправляется скрипту-обработчику... В этом случае можно удалить только 1 сервер, это не удобно.
Я хотел бы сделать с checkbox`ами, так как удобнее выделить сразу все сервера, которые не нужны, и удалить, НО появилась проблема, я изменил тип на checkbox, выбираю 2-3 сервера, в итоге удаляется из бд, тот, который выбрали самым последним, вот и думаю сижу, что сделать с скриптом-обработчиком.

Вот скрипт:
PHP код:
<?php 
if (isset($id))
{
$result mysql_query ("DELETE FROM servers WHERE id='$id'");

if (
$result == 'true') {echo "Сервер был успешно удалён!";}
else {echo 
"<p>Не удалось удалить сервер!";}
}         
else 
{
echo 
"<p>Вы запустили данный файл без параметра id и поэтому, удалить сервер невозможно (скорее всего Вы не выбрали сервер, который нужно удалять, на предыдущем шаге), вернитесь назад и повтрите попытку!";
}
?>
Вот форма:
Код HTML:
<form action="drop_server.php" method="post">
<input name='id' type='radio' value='$id'><label>$ip : $port</label>
<br>
<input name="submit" type="submit" value="Удалить сервер">
</form>
Вот помогите дописать плз, я думаю что нужно смоотреть в сторону цикла while, но думаю что это ошибачное мнение
Выручите плз
mail: dimgunkin@gmail.com
skype: dimgunkin
icq: 684-795-212
webber9989 вне форума Ответить с цитированием
Старый 14.08.2010, 20:59   #2
dekameron
Форумчанин
 
Аватар для dekameron
 
Регистрация: 27.04.2010
Сообщений: 185
По умолчанию

А почему бы не сделать все это с помощью SELECT'a?
PHP код:
<select size="5" name="id" multiple>
<option value="<?=$id?>"><?=$ip.':'.$port?></option>
</select>
Помог - тырк на весы
dekameron вне форума Ответить с цитированием
Старый 14.08.2010, 22:06   #3
webber9989
dimgunkin
Форумчанин
 
Аватар для webber9989
 
Регистрация: 06.05.2010
Сообщений: 112
По умолчанию

Без разницы, не форму нужно править, а сам скрипт....
mail: dimgunkin@gmail.com
skype: dimgunkin
icq: 684-795-212
webber9989 вне форума Ответить с цитированием
Старый 14.08.2010, 23:54   #4
GROWZER
Пользователь
 
Аватар для GROWZER
 
Регистрация: 16.06.2009
Сообщений: 47
По умолчанию

если деалть через комбобоксы то можно сделать так.. будет удалять по несколько по ID или имение как нужно...
Код:
<?php
if((isset($_GET['del']))&&($_GET['del']=="1")){
if($_POST['serv1']=='on'){
    
    $result = mysql_query ("DELETE FROM servers WHERE id='".$_POST['serv1ID']."'"); 

    if ($result == 'true') 
    {
          echo "Сервер ".$_POST['serv1ID']." был успешно удалён!";
     } 
    else 
    {
          echo "<p>Не удалось удалить сервер!";
     } 
}

if($_POST['serv2']=='on'){
  
    $result = mysql_query ("DELETE FROM servers WHERE id='".$_POST['serv2ID']."'"); 

    if ($result == 'true') 
    {
          echo "Сервер ".$_POST['serv2ID']." был успешно удалён!";
     } 
    else 
    {
          echo "<p>Не удалось удалить сервер!";
     } 
}

if($_POST['serv3']=='on'){
  
    $result = mysql_query ("DELETE FROM servers WHERE id='".$_POST['serv3ID']."'"); 

    if ($result == 'true') 
    {
          echo "Сервер ".$_POST['serv3ID']." был успешно удалён!";
     } 
    else 
    {
          echo "<p>Не удалось удалить сервер!";
     } 
}
}
?>

<form action="?del=1" method="post">
<input type="hidden" name="serv1ID" value="<?=$id[0]?>">
<input type="checkbox" name="serv1" /> <label>$ip : $port</label>
<br>
<input type="hidden" name="serv2ID" value="<?=$id[1]?>">
<input type="checkbox" name="serv2" /> <label>$ip : $port</label>
<br>
<input type="hidden" name="serv3ID" value="<?=$id[2]?>">
<input type="checkbox" name="serv3" /> <label>$ip : $port</label>
<br>
<input name="submit" type="submit" value="Удалить сервер">
</form>
GROWZER вне форума Ответить с цитированием
Старый 15.08.2010, 15:26   #5
bracomp
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 23
По умолчанию

Для чекбоксов работает след. код

if (isset($serv1))
{
...
}
if (isset($serv2))
{
....
}
....
bracomp вне форума Ответить с цитированием
Старый 15.08.2010, 15:28   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Допустим - есть массив с данными серверов:
PHP код:
$servers = array(
    array(
'server_id'=>'1' ,'server_ip'=>'91.211.217.52' ,'server_port'=>'27015'),
    array(
'server_id'=>'2' ,'server_ip'=>'91.211.217.53' ,'server_port'=>'27025'),
    array(
'server_id'=>'3' ,'server_ip'=>'91.211.217.54' ,'server_port'=>'27035')
); 
Тогда форма:
Код:
<form action="drop_server.php" method="post">
<?php
if(!empty($servers)){
    foreach($servers as $server){
?>
        <input type="checkbox" name="delete_servers[<?=$server['server_id'];?>]" /> <?=$server['server_ip'] . ' : ' . $server['server_port'];?> <br/>
<?php        
    }
}
?>
<input name="submit" type="submit" value="Удалить сервер" />
</form>
Обработчик (drop_server.php):
PHP код:
if(isset($_POST['delete_servers'])){
    foreach(
$_POST['delete_servers'] as $key=>$value){
        
// $key - это и есть id отмеченных для удаления серверов
        
$query 'DELETE FROM `servers` WHERE `server_id` = ' $key;
        
$result mysql_query($query);
        
// ... далее ваши проверки на успешность удаления
    
}

Andkorol вне форума Ответить с цитированием
Старый 15.08.2010, 17:55   #7
webber9989
dimgunkin
Форумчанин
 
Аватар для webber9989
 
Регистрация: 06.05.2010
Сообщений: 112
По умолчанию

Andkorol, а можешь плз показать решение, для конкретной формы и скрипта:

index.php (в рабочем виде выглядит как на скрине в первом посте)
PHP код:
          <form action="drop_server.php" method="post">
<? 
require "../connect_db.php";
$result mysql_query("SELECT ip,c_port,id FROM lgsl");      
$myrow mysql_fetch_array($result);

do 
{
printf ("<p><input name='id' type='radio' value='%s'><label> %s:%s</label></p>",$myrow["id"],$myrow["ip"],$myrow["c_port"]);
}

while (
$myrow mysql_fetch_array($result));
?>

<p> <input name="submit" type="submit" value="Удалить сервер"></p>

</form>
тут нужно будет заменить type на checkbox....

check.php
PHP код:
<?php 
require "connect_db.php";
if (isset(
$_POST['id'])) {$id $_POST['id'];}
if (isset(
$id))
{
$result mysql_query ("DELETE FROM lgsl WHERE id='$id'");

if (
$result == 'true') {echo "<p>Сервер был успешно удалён, вы можете вернуться на <a href='del_server.php'>страницу удаления серверов</a> или на <a href='index.php'>главную страницу админки</a>.</p>";
}
else 
{
echo 
"<p>Не удалось удалить сервер, вы можете вернуться на <a href='del_server.php'>страницу удаления серверов</a> и попробывыть сново.</p>";}
}         
else 
{
echo 
"<p>Вы запустили данный файл без параметра id и поэтому, удалить сервер невозможно (скорее всего Вы не выбрали сервер, который нужно удалять, на предыдущем шаге), вернитесь <a href='del_server.php'>назад</a> и повтрите попытку.</p>";
}
?>
mail: dimgunkin@gmail.com
skype: dimgunkin
icq: 684-795-212
webber9989 вне форума Ответить с цитированием
Старый 15.08.2010, 18:21   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Andkorol, а можешь плз показать решение, для конкретной формы и скрипта:
Я вам привёл рабочий пример - подставьте свои значения - и всё...
В чём проблемы?
Цитата:
тут нужно будет заменить type на checkbox....
Так заменяйте - всё в ваших руках.
Andkorol вне форума Ответить с цитированием
Старый 15.08.2010, 18:33   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

1.Использовать конструкцию do ... while тут не корректно,потому как в вашем случае,даже если запрос серверов вернёт false - у вас всё равно будет выведен первый чекбокс без значений - что не есть гуд.

2.С какой целью вы дважды пользуете mysql_fetch_array()? Используйте просто while - и будет вам радость.

Для начала неплохо бы также удостовериться, что запрос вернул true-результат,да ещё и рядов более 0 желательно....
PHP код:
$result false;
$result mysql_query("SELECT ip,c_port,id FROM lgsl");
if((
$result != false) && (mysql_num_rows($result) > 0)){
    
// поехали обрабатывать результат запроса


Последний раз редактировалось Andkorol; 15.08.2010 в 18:38.
Andkorol вне форума Ответить с цитированием
Старый 17.08.2010, 04:16   #10
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
PHP код:
$result false;
$result mysql_query("SELECT ip,c_port,id FROM lgsl");
if((
$result != false) && (mysql_num_rows($result) > 0)){
    
// поехали обрабатывать результат запроса

Совсем небольшое замечание только. Объявлять переменную как boolean, а затем неявно конвертировать её в ресурс - плохой тон. Да и двойная проверка тут не нужна. Достаточно проверить mysql_num_rows($result) > 0 и будет ясно, удалось или нет провести запрос.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP и MySQL удаление Table bondik PHP 14 11.07.2017 09:53
checkbox and php mar4elo PHP 1 03.08.2010 23:21
Удаление информации из файлов .mb: почему не происходит? Ruschel БД в Delphi 4 25.02.2010 09:22
Удаление повторной информации из таблиц paratruper17 Microsoft Office Word 8 03.11.2009 10:31
(PHP) Передача информации о выбранном компоненте sabina_smile PHP 2 11.12.2007 23:22