Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: массив
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » массив

Страниц (2): [1] 2 »
 

1. PATCH - 23 Июня, 2011 - 17:29:15 - перейти к сообщению
вечно у меня проблема с массивами)

CODE (htmlphp):
скопировать код в буфер обмена
  1.         echo ("<form action='delete_group.php' method='post'>");
  2.        
  3.         do{print ("<div><input name='id_party' type='hidden' value='".$group_row3['id_party']."'><input name='party' type='checkbox' >".$group_row3['name_party']."</div>");}
  4.        
  5.         while ($group_row3 = mysql_fetch_array($group_res3));
  6.        
  7.         echo ("<input name='delete_sub_party' type='submit' value='Удалить'></form>");
  8.        
  9.         if(isset($_POST['delete_sub_party']))
  10.         {
  11.  
  12.  
  13.                
  14.                 if (preg_match('/^[0-9]{1,1000}$/i',$_POST[id_party])) {} else {exit("<p>Попытка взлома</p>");}
  15.                 if(empty($_POST['id_party']))
  16.                 {exit("<p>Попытка взлома</p>");}
  17.  
  18.                 $arr = array('party');
  19.                 $checked = array();
  20.                 foreach($arr as $v)
  21.                 {
  22.                         if(isset($_POST[$v]))
  23.                         {
  24.                                  $delete_name_group = mysql_query ("DELETE FROM party WHERE id_party = '$_POST[id_party]' ");
  25.                                  $delete_access_group = mysql_query ("DELETE FROM access WHERE id_party = '$_POST[id_party]'");
  26.                                  if($delete_access_group >0) {exit("Группы успешно удалены");}
  27.                         }
  28.                 }
  29.         }


как сделать выборку в массив id_party ваще суть скрипта такова мы отмечаем галками нужные нам поля и жмем на кнопку где идет проверка если галка стоит то удаляем запись с этим id если не стоит то нечего с ним не делаем.
2. DeepVarvar - 23 Июня, 2011 - 17:45:24 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM party WHERE id_party IN (1,4,67,88,122.....)
3. PATCH - 23 Июня, 2011 - 17:59:27 - перейти к сообщению
DeepVarvar пишет:
DELETE FROM party WHERE id_party IN (1,4,67,88,122.....)

id_party у нас не фиксированое N-количество
4. vsll - 23 Июня, 2011 - 18:06:50 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo "<input type='checkbox' name='party' value='".$group_row3['id_party']."' />";
  2. if(isset($_POST[$v])) {
  3.     $party_ids = "";
  4.     if (isset($_POST['party']) && is_array($_POST['party'])) {
  5.         foreach ($_POST['party'] as $thisnum) {
  6.             if (is_int($thisnum)) { $party_ids .= ($party_ids ? "," : "").$thisnum; }
  7.         }
  8.         $delete_access_group = mysql_query("DELETE FROM access WHERE id_party IN (".$party_ids.")");
  9.     }
  10. }
5. PATCH - 23 Июня, 2011 - 18:19:10 - перейти к сообщению
не работает) вообще не чего не удаляет)
6. vsll - 23 Июня, 2011 - 18:25:29 - перейти к сообщению
Вы имена кнопок и запросов сверьте, я вам ориентировочный алгоритм написала, а не готовый код. У меня такая схема работает
7. PATCH - 23 Июня, 2011 - 18:42:52 - перейти к сообщению
вроде все перепроверил и все равно не работает)

PHP:
скопировать код в буфер обмена
  1.         echo ("<form action='delete_group.php' method='post'>");
  2.        
  3.         do{print ("<div><input type='checkbox' name='party' value='".$group_row3['id_party']."' />".$group_row3['name_party']."</div>");}
  4.        
  5.         while ($group_row3 = mysql_fetch_array($group_res3));
  6.        
  7.         echo ("<input name='delete_sub_party' type='submit' value='Удалить'></form>");
  8.        
  9.         if(isset($_POST['delete_sub_party']))
  10.         {
  11.  
  12.     $party_ids = "";
  13.     if (isset($_POST['party']) && is_array($_POST['party']))
  14.                 {
  15.                 foreach ($_POST['party'] as $thisnum)
  16.                          {  if (is_int($thisnum)) { $party_ids .= ($party_ids ? "," : "").$thisnum; }}
  17.         $delete_access_group = mysql_query("DELETE FROM access WHERE id_party IN (".$party_ids.")");
  18.                 $delete_name_group = mysql_query ("DELETE FROM party WHERE id_party IN (".$party_ids.") ");
  19.         if($delete_access_group >0) {exit("Группы успешно удалены");}
  20.         }
  21.         }
  22.  
8. vsll - 23 Июня, 2011 - 18:47:15 - перейти к сообщению
посмотрите, в исходном коде страницы значения value для чекбоксов - integer?
9. PATCH - 23 Июня, 2011 - 18:49:07 - перейти к сообщению
да <input type='checkbox' name='party' value='26' />
10. Toxa - 23 Июня, 2011 - 18:50:01 - перейти к сообщению
да причем тут значения, если у него все чекбоксы имеют одинаковое имя? Когда ж вы уже научитесь делать
PHP:
скопировать код в буфер обмена
  1. echo "<pre>".print_r($_POST, true)."</pre>";
11. vsll - 23 Июня, 2011 - 18:54:42 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <input type='checkbox' name='party[]' value='".$group_row3['id_party']."' />
12. PATCH - 23 Июня, 2011 - 19:30:33 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.                 if(isset($_POST['delete_sub_party']) && isset($_POST['party']))
  2.         {
  3.  
  4.                         foreach ($_POST['party'] as $party)
  5.                         {
  6.                                 $delete_name_group = mysql_query ("DELETE FROM party WHERE id_party = '$party' ");
  7.                          $delete_access_group = mysql_query ("DELETE FROM access WHERE id_party = '$party'");
  8.                         if($delete_access_group >0) {exit("Группы успешно удалены");}
  9.                         }
  10.         }
удаляет только по одному файлу) как я понел ет из за того что я закинул значение в переменую а не в массив) как вот значение перекинуть в массив
13. vsll - 23 Июня, 2011 - 19:39:17 - перейти к сообщению
да нет, так не будет работать, оставьте предыдущую схему и у чекбоксов смените party на party[]
14. PATCH - 23 Июня, 2011 - 19:46:24 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.   if(isset($_POST['delete_sub_party']))
  2.         {
  3.  
  4.     $party_ids = "";
  5.     if (isset($_POST['party']) && is_array($_POST['party']))
  6.          {
  7.              foreach ($_POST['party'] as $thisnum)
  8.                                   {  if (is_int($thisnum)) { $party_ids .= ($party_ids ? "," : "").$thisnum; }}
  9.                                 $delete_access_group = mysql_query("DELETE FROM access WHERE id_party IN (".$party_ids.")");
  10.                         $delete_name_group = mysql_query ("DELETE FROM party WHERE id_party IN (".$party_ids.") ");
  11.                                 if($delete_access_group >0) {exit("Группы успешно удалены");}
  12.         }
  13. }


так вообще не работает) с чекбуксом

PHP:
скопировать код в буфер обмена
  1. "<div><input type='checkbox' name='party[]' value='".$group_row3['id_party']."'/>".$group_row3['name_party']."</div>"
15. vsll - 23 Июня, 2011 - 19:51:18 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['delete_sub_party']))
  2.         {
  3.  var_dump ($_POST['party']);
  4.  
  5. }
результат напишите сюда

 

Powered by ExBB FM 1.0 RC1