За последние 24 часа нас посетили 16113 программистов и 1547 роботов. Сейчас ищут 913 программистов ...

Проблема с выводом из цикла

Тема в разделе "Прочие вопросы по PHP", создана пользователем middle, 2 июл 2014.

  1. middle

    middle Активный пользователь

    С нами с:
    1 фев 2011
    Сообщения:
    7
    Симпатии:
    0
    Здравствуйте, вот мой код:
    Код (Text):
    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.     }
    Проблема в том, что если в $_GET[id] передаю 1, то все отображается нормально, при любом другом (2,3,4 и т.п.), выводит просто пустые блоки (кол-во блоков правильное).

    P.S.: Проверял функцией print_r($aux_vcat) - массив выводится правильно при любых $_GET[id].
    Код (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. )
     
  2. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    $vcat[$row['id']] = array("id"=>"$row[id]", "title"=>"$row[title]", "cat"=>"$row[cat]", "image"=>"$row[image]", "active"=>"$row[active]");
    Это спокойно заменяется на $vcat[$row['id']] = $row;
    А вообще - у вас в массиве элементы с индексами 4 и 6, а цикл for ($i=1; $i < $count_cat; $i++) пытается получить элементы с индексами 1 и 2. Сделайте последний цикл так:
    Код (Text):
    1.  
    2. foreach ($aux_vcat as $id=>$data){
    3.    echo $data['image'];
    4.    }