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]   

> Без описания
middlee
Отправлено: 02 Июля, 2014 - 07:51:11
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июль 2014  


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




Здравствуйте, вот мой код:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Mcat extends Db {
  3. var $id;
  4.                
  5. function __construct() {
  6.         $this->id = $_GET['id'];
  7. }
  8.                
  9. function return_cat() {
  10.         $sql = "SELECT * FROM subcat WHERE active=1 AND cat=".$this->id." ORDER BY id ASC" ;
  11.         $res = mysql_query($sql) ;
  12.         return $res ;
  13. }
  14. }
  15.  
  16.  
  17. class Ccat extends Mcat {
  18.                
  19. function print_cat() {
  20.         $res = parent::return_cat() ;
  21.         $vcat = array();
  22.  
  23.         while ($row = mysql_fetch_assoc($res))
  24.         {
  25.                 $vcat[$row['id']] = array("id"=>"$row[id]", "title"=>"$row[title]", "cat"=>"$row[cat]", "image"=>"$row[image]", "active"=>"$row[active]");
  26.         }
  27.         return $vcat;
  28. }
  29. }
  30.  
  31.  
  32.  
  33. $aux_vcat = new Ccat() ;
  34. $aux_vcat = $aux_vcat->print_cat() ;
  35. $count_cat = count($aux_vcat) + 1;
  36.  
  37.  
  38. for ($i=1; $i < $count_cat; $i++) {
  39.         echo $aux_vcat[$i]['image'];
  40.         }
  41.  

Проблема в том, что если в $_GET[id] передаю 1, то все отображается нормально, если что-то другое, выводит просто пустые блоки (кол-во блоков правильное).

P.S.: Проверял функцией print_r($aux_vcat) - массив выводится правильно при любых $_GET[id].
CODE (text):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [4] => Array
  4.         (
  5.             [id] => 4
  6.             [title] => Подкатегория 3
  7.             [cat] => 3
  8.             [image] => pizhami.jpg
  9.             [active] => 1
  10.         )
  11.  
  12.     [6] => Array
  13.         (
  14.             [id] => 6
  15.             [title] => Подкатегория 4
  16.             [cat] => 3
  17.             [image] => pizhami.jpg
  18.             [active] => 1
  19.         )
  20.  
  21. )

(Отредактировано автором: 02 Июля, 2014 - 08:35:51)

 
 Top
Panoptik
Отправлено: 02 Июля, 2014 - 10:43:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




вообще передавать гет напрямую в запрос - это небезопасно
и у вас ошибка при передаче параметров
PHP:
скопировать код в буфер обмена
  1. while ($row = mysql_fetch_assoc($res))
  2.         {
  3.                 $vcat[$row['id']] = array("id"=>"$row[id]", "title"=>"$row[title]", "cat"=>"$row[cat]", "image"=>"$row[image]", "active"=>"$row[active]");
  4.         }
  5.         return $vcat;

$row[id] - массивы и объекты в строке нужно оборачивать в фигурные скобки смотрите пример ниже с $row[id]
или вообще конкатенировать или не использовать строку остальные параметры $row
PHP:
скопировать код в буфер обмена
  1. while ($row = mysql_fetch_assoc($res))
  2.         {
  3.                 $vcat[$row['id']] = array("id"=>"{$row[id]}", "title"=>$row['title']", "cat"=>$row['cat'], "image"=>$row['image'], "active"=>$row['active']);
  4.        }
  5.        return $vcat;

(Добавление)
и вообще вместо вот этой фигни
PHP:
скопировать код в буфер обмена
  1. array("id"=>"{$row[id]}", "title"=>$row['title']", "cat"=>$row['cat'], "image"=>$row['image'], "active"=>$row['active'])
просто напишите $row
PHP:
скопировать код в буфер обмена
  1. while ($row = mysql_fetch_assoc($res))
  2.         {
  3.                 $vcat[$row['id']] = $row;
  4.        }
  5.        return $vcat;

(Отредактировано автором: 02 Июля, 2014 - 10:44:20)



-----
Just do it
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB