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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проблема с массивом (наверное)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
jeck111
Отправлено: 27 Марта, 2009 - 00:29:33
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Янв. 2009  
Откуда: Украина, Кременчуг


Помог: 0 раз(а)




Здравствуйте уважаемые. Прошу Вашей помощи. Вопрос в следующем: в привиденном ниже куске кода, возникает проблема: когда я из selecta выбираю один пункт и отправляю данные (нажатии на кнопку "Найти\ Показать"), т.е условие не выполняется.., у меня почему то не записывается массив $cat, точнее присваевается, но тип получается строка. Но до этого массив образуется нормально и я с ним работаю, так же как и при нажатии на "Показать все", опять получается ожидаемый мною массив, и я с ним уже дальше работаю. Почему так происходит, понять не могу, своим глазом не вижу что мешает также записываться этому массиву.
Почему так помогите пожалуйста новичку.
Надеюсь понятно объяснил свой непонятный вопрос. Заранее спасибо.

PHP:
скопировать код в буфер обмена
  1. <?PHP  
  2. case '3':{
  3.          
  4.             $result=mysql_query("SELECT * FROM `cat`",$db);
  5.             if ($result){
  6.                if (mysql_num_rows($result)>0) {
  7.                   while ($myrow=mysql_fetch_array($result)) {
  8.                         $cat[$myrow['cat_id']] = $myrow['title'] .'|||'. $myrow['parent_id'];
  9.                    }
  10.  
  11.                }
  12.             }
  13.  
  14.             ?>
  15.             <form name="search_post" action="" method="post">
  16.             <select name="cat">
  17.          <option value="" selected="selected" >Все категории</option>
  18.  
  19.          <?PHP
  20.             foreach($cat as $cat_id=> $value) {
  21.                   list ($title, $parent) = explode("|||", $value);
  22.                echo '<option value="'. $cat_id .'">'. $title .'</option>';
  23.             }
  24.  
  25.          ?>
  26.          </select>      
  27.             <input name="sear" type="hidden" value="3">
  28.           <input name="step" type="hidden" value="3">
  29.           <input type="submit" value="Найти / Показать">
  30.              </p>
  31.  
  32.          </form>
  33.          </td> <td align="right" valign="top">
  34.          <form name="all" action="" method="post">
  35.             <input name="step" type="hidden" value="3">
  36.             <input name="all" type="hidden" value="3">
  37.             <input type="submit" value="Показать все">
  38.          </form>  
  39.  
  40.             <?PHP
  41.             if (!isset($_POST['sear']) || isset($_POST['all'])) {
  42.                $res= mysql_query ("SELECT * FROM `data`, `relation`, `cat` WHERE data.data_id=relation.data_id AND relation.cat_id=cat.cat_id AND cat.parent_id='0' ORDER BY `date` DESC", $db);
  43.                if (mysql_num_rows($res)<=0) echo " В базе нет данных.";
  44.             }
  45.             else {
  46.                $begin = "SELECT * FROM `data`, `relation`, `cat` ";
  47.                  $where = "WHERE data.data_id=relation.data_id AND relation.cat_id=cat.cat_id ";
  48.  
  49.                $end = "ORDER BY `date` DESC";
  50.                $parent = "AND cat.parent_id='0' ";
  51.  
  52.                 if ($_POST['cat']) {
  53.                    $where .= "AND cat.cat_id='". $_POST['cat'] ."' ";
  54.                     unset($parent);
  55.                 }
  56.  
  57.                $query= $begin.$where.$parent.$end;
  58.                $res= mysql_query ($query);
  59.                if (mysql_num_rows($res)<=0) echo " В базе нет данных.";
  60.            }
  61.                echo '<table class="tadmin"="tadmin" width="100%">
  62.                     <tr bgcolor="#E7E7DE">
  63.                        <td align="center"><b>Название</b></td>
  64.                        <td align="center"><b>$</b></td>
  65.                        <td align="center"><b>Категория</b></td>
  66.                        <td align="center"><b>Подкатегория</b></td>
  67.                        <td align="center"><b>Дата добавления</b></td></tr>';
  68.               $i=1;
  69.             while ($row= mysql_fetch_array ($res)) {
  70.  
  71.                   foreach($rel as $val) {
  72.                   list ($did, $rcid) = explode("|||", $val);
  73.                   if ($did==$row['data_id']) {
  74.                      $cid[]=$rcid;
  75.                   }
  76.                   }
  77.                     $n=count($cid);
  78.                     if(!isset($cat)) {
  79.                   foreach($cat as $ccid=> $value) {
  80.                         list ($title, $parent) = explode("|||", $value);
  81.                         for ($k=0; $k<$n; $k++) {
  82.                                if($ccid==$cid[$k]){
  83.                               if ($parent==0){
  84.                                  $root=$title;
  85.                               }
  86.                               else {
  87.                                  $subcat.=$title. ', ';
  88.                               }
  89.                            }
  90.                         }
  91.                      }
  92.                  }
  93.                $subcat = substr($subcat, 0, strlen($subcat) - 2);
  94.                          
  95.                 //  ....
  96.                 // Вывод результатов....
  97.        
  98.                   unset($cid);
  99.                    unset($subcat);
  100.             }
  101.  
  102. break;
  103. }
  104. ?>
 
 Top
vitaliy_mad
Отправлено: 27 Марта, 2009 - 04:01:57
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




похоже проблема в самом запросе... echo $query; и посмотри что он пытается сделать.. проверь в phpMyAdmin этот запрос...
 
 Top
jeck111
Отправлено: 27 Марта, 2009 - 13:27:46
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Янв. 2009  
Откуда: Украина, Кременчуг


Помог: 0 раз(а)




нет запрос здесь не при чем. запрос через точку набирается такой как я и планировал, и phpMyAdmin выдает ожидаемый результат.
Проблема уже решена, не скажу что разобрался, но пришло в голову сменить имя массива, и это помогло:
просто сменил $cat на другое имя, но сам по прежнему не понимаю почему так,
единственное что приходит мне в голову так это то что $_POST['cat'] и $cat[] каким то образом связаны, и что ли перезаписывают друг друга, (хотя на сколько я знаю так быть не должно) ..... ну это так мысли в слух потому что уже перепробовал все и не понимаю, чем мешало имени $cat???
В любом случае спасибо за внимание.
 
 Top
Гость
Отправлено: 27 Марта, 2009 - 14:18:43
Post Id


УДАЛЁН










Цитата:
Единственное что приходит мне в голову так это то что $_POST['cat'] и $cat[] каким то образом связаны
"Таинственная связь" скорее всего кроется в register_globals Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB