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

Форум PHP

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

 

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

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

тема: Групповое изменение данных
 
 автор: Hin   (23.06.2006 в 16:24)   письмо автору
 
 

Народ есть страница, где преведены порядка 10 наименований, у них опция показывать/не показывать, там можно ставить галку, как сделать так, чтобы их можно было менять по несколько сразу. Внизу есть кнопка сохранить.

   
 
 автор: cheops   (23.06.2006 в 18:08)   письмо автору
 
   для: Hin   (23.06.2006 в 16:24)
 

В чём затруднение (вопрос)?

   
 
 автор: Hin   (23.06.2006 в 18:27)   письмо автору
 
   для: cheops   (23.06.2006 в 18:08)
 

У каждого наменования есть свой id, как передовать id и значения(скрывать/не скрывать), когда их много??

   
 
 автор: Trianon   (23.06.2006 в 18:33)   письмо автору
 
   для: Hin   (23.06.2006 в 18:27)
 

передавать через массивы входных параметров.
изменяемые параметры индексировать id'ами.
Давайте короткий пример - разберем.

   
 
 автор: Hin   (27.06.2006 в 16:49)   письмо автору
 
   для: Trianon   (23.06.2006 в 18:33)
 

Таблица для пользователя
| ID | Описание | Скрыть | Удалить |
| 16 | Купи его | checkbox | Del |
| 17 | Купи его 2 | checkbox | Del |
Если я поставлю галочку в двуж checkbox'ах и нажму на кнопку сохранить, то они передают скрипту данные, а скрипт должен для кажного id в БД записать данные (1показывать, 0 нет). Как забрать данные для каждого id?

   
 
 автор: Trianon   (27.06.2006 в 18:28)   письмо автору
 
   для: Hin   (27.06.2006 в 16:49)
 

как вывдится строка таблицы?

while($row = mysql_fetch_array($res))
{
      echo ???
}

   
 
 автор: Hin   (27.06.2006 в 18:49)   письмо автору
 
   для: Trianon   (27.06.2006 в 18:28)
 

Да

   
 
 автор: Trianon   (27.06.2006 в 18:52)   письмо автору
 
   для: Hin   (27.06.2006 в 18:49)
 

не "Да", а продолжите оператор echo.
Сформируйте им эти поля.
А потом мы вместе поправим.

   
 
 автор: Hin   (30.06.2006 в 14:46)   письмо автору
 
   для: Trianon   (27.06.2006 в 18:52)
 


 while($object=@mysql_fetch_array($query_view))
   {
     if($cur_class == "r1"){
        $cur_class="r2";
    }else{
        $cur_class="r1";
    }
    
    echo "<TR class=".$cur_class.">
    <TD><STRONG>".$object['id_ob']."</STRONG></TD>
    <TD>".$object['date']."</TD>
    <TD><A title='".$object['comment']."' href='index.php?edit=".$object['id_ob']."'>".$object['comment']."</A></TD>
    <TD><div align='center'><input name=hide type='checkbox' value='".$object['hide']."'></div></TD>
    <TD><A href='index.php?delete=".$object['id_ob']."'><IMG src='del.png'></A></TD></TR>";
   }


Вот, как быть??

   
 
 автор: Trianon   (30.06.2006 в 15:22)   письмо автору
 
   для: Hin   (30.06.2006 в 14:46)
 

Как-то так...

while($object=@mysql_fetch_array($query_view)) 
   { 
     if($cur_class == "r1"){ 
        $cur_class="r2"; 
    }else{ 
        $cur_class="r1"; 
    } 
     
    echo "<TR class=".$cur_class."> 
    <TD><STRONG>".$object['id_ob']."</STRONG></TD> 
    <TD>".$object['date']."</TD> 
    <TD><A title='".$object['comment']."' href='index.php?edit=".$object['id_ob']."'>".$object['comment']."</A></TD> 
    <TD><div align='center'><input name=hide type='checkbox[".$object['id_ob']."]' value='".$object['hide']."'></div></TD> 
    <TD><A href='index.php?delete=".$object['id_ob']."'><IMG src='del.png'></A></TD></TR>"; 
   } 

На входе скрипта окажется $_POST['checkbox'] , являющийся массивом, проиндексированным значениями столбца id_ob Вашей таблицы

   
 
 автор: Hin   (30.06.2006 в 16:00)   письмо автору
 
   для: Trianon   (30.06.2006 в 15:22)
 

А так можно??

<TD><div align='center'><input name='hide[".$object['id_ob']."] ' type='checkbox' value='".$object['hide']."'></div></TD>


А разве он будет кидать в массив данные об id_ob?
То тогда чтобы мне обновить данные для каждого этемента надо будет сделать такой запрос


for(i=0;$i<count($_POST['hide']);$i++){ mysql_query("UPDATE table SET hide="1" WHERE id_ob=".$_POST['hide'][$i].";");}

   
 
 автор: Trianon   (30.06.2006 в 17:31)   письмо автору
 
   для: Hin   (30.06.2006 в 16:00)
 

Да, конечно, я ошибся с атрибутом тега. )
можно и одним запросом, что-то вроде:

$list = implode(',',$_POST['hide']);
mysql_query("UPDATE table SET hide=1  WHERE id_ob IN($list)");

   
 
 автор: Hin   (03.07.2006 в 12:09)   письмо автору
 
   для: Trianon   (30.06.2006 в 17:31)
 

Не работает, в строке пишет какуюто чушь
index.php?hide%5B11%5D=1&hide%5B35%5D=1
И еще у меня вот такой вопрос, проверка на наличие галки осуществляется так

if($object['hide'] == "1"){
        echo "<TD class='np'><div align='center'><input name='hide[".$object['id_ob']."]' type='checkbox' value=".$object['hide']."></div></TD>";
    }else{
        echo "<TD class='np'><div align='center'><input name='hide[".$object['id_ob']."]' CHECKED type='checkbox' value='1'></div></TD>";
    }

Помойму я немного намудрил, когда checkbox выделен (CHECKED), то когда галку снимаешь, hide'y значение 1 будет присваеваться??

   
 
 автор: Trianon   (03.07.2006 в 13:00)   письмо автору
 
   для: Hin   (03.07.2006 в 12:09)
 

Вы пытаетесь данные передавать методом GET, поэтому в строке адреса появляются параметры. Обычно данные формы передают методом POST: <form method=post action=.... >

Если галку снять, этот чекбокс вообще передан не будет.
Так что чекбоксы можно оличать просто по наличию их в списке.
Соответственно, каких-то конкретных значений им присваивать необязательно и уж коль скоро name = hide[$id] задано, то value='1' равно как и value=".$object['hide']." писать смысла нет.

   
 
 автор: Hin   (11.07.2006 в 15:50)   письмо автору
 
   для: Trianon   (30.06.2006 в 17:31)
 

А выборку из базы можно делать по томуже принцыпу. Тоесть есть данные в виде массива, его пропускаю через implode, а дальше сравниваю с значениями в колонке базы и как вывести все совпадения??

$list = implode(',',$_POST['hide']);
mysql_query("SELET * from table WHERE id_ob IN($list)");

   
Rambler's Top100
вверх

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