ООП в php HELP!

Discussion in 'PHP' started by Sh0ks1, 21 Nov 2011.

  1. Sh0ks1

    Sh0ks1 New Member

    Joined:
    7 Aug 2010
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    Вот код:
    PHP:
    <?php

    header
    ('Content-Type: text/html; charset=utf-8');
    include(
    "config/config.php");
    $DB = new DataBase();
    $DB->MySQL_Connect();

    class 
    Menu {

        public function 
    Menu() {
            
    $query "SELECT * FROM menu WHERE menu_id = '1' AND menu_hide <> 'F'";
            
    $res mysql_query($query);
            if (!
    $res)
                die(
    mysql_error());

            
    $arr = array();
            while (
    $row mysql_fetch_object($res)) {
                
    $arr[] = $row;
            }
        }

        public function 
    Categories() {
            
    $query "SELECT * FROM categories WHERE cat_hide <> 'F'";
    $res mysql_query($query);
    if(!
    $res)
        die(
    mysql_error());

    $menu = array();
    while (
    $row mysql_fetch_object($res))
    {
        
    $menu[] = $row;
    }
        }

    }
    $Menu = new Menu();
    $Menu->Menu;
    $Menu->Categories;
    ?>

    <ul>
            <h3><?php echo $Menu->Menu->arr[0]->menu_name?></h3>
        <?php foreach ($Menu->Categories->menu as $key => $item): ?>
        <li><?php echo "<a href=$item->cat_url>$item->cat_name</a>"?></li>
        <?php endforeach; ?>
    </ul>
    пишет Warning: Invalid argument supplied for foreach() in C:\AppServ\www\site\menu1.php on line 43
    Помогите решить как через цикл foreach вывести всё это дело.
     
  2. D@iVeR[SQL+]

    D@iVeR[SQL+] New Member

    Joined:
    30 Sep 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    как-то странно ты тут обращаешься к этим массивам.
    сделай их полями класса.
     
  3. Sh0ks1

    Sh0ks1 New Member

    Joined:
    7 Aug 2010
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    Спасибо конечно, но я не сильно понял, с ооп не очень хорошо дружу. Можешь примерно показать. Буду очень благодарен.
    Вроде понял щас попробую.
     
  4. Sh0ks1

    Sh0ks1 New Member

    Joined:
    7 Aug 2010
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    всё равно не получается.
     
  5. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    мда... такой кривой ООП я ещё не видел =)

    PHP:

    <?php 

    header
    ('Content-Type: text/html; charset=utf-8'); 
    include(
    "config/config.php"); 
    $DB = new DataBase(); 
    $DB->MySQL_Connect(); 

    class 
    Menu 

        public 
    $menu_array = array();
        
        public function 
    Menu() { 
            
    $query "SELECT * FROM menu WHERE menu_id = '1' AND menu_hide <> 'F'"
            
    $res mysql_query($query); 
            if (!
    $res
                die(
    mysql_error()); 

            
    $arr = array(); 
            while (
    $row mysql_fetch_object($res)) { 
                
    $arr[] = $row
            } 
        } 

        public function 
    Categories() { 
            
    $query "SELECT * FROM categories WHERE cat_hide <> 'F'"
    $res mysql_query($query); 
    if(!
    $res
        die(
    mysql_error()); 

    while (
    $row mysql_fetch_object($res)) 

        
    $this->menu_array[] = $row

        } 


    $Menu = new Menu(); 
    $Menu->Menu
    $Menu->Categories
    ?> 

    <ul> 
            <h3><?php echo $Menu->Menu->arr[0]->menu_name?></h3> 
        <?php foreach ($Menu->menu_array as $key => $item): ?> 
        <li><?php echo "<a href=$item->cat_url>$item->cat_name</a>"?></li> 
        <?php endforeach; ?> 
    </ul>
     
  6. Sh0ks1

    Sh0ks1 New Member

    Joined:
    7 Aug 2010
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    Лучше бы помог чем обосрал.Смысл твоего сообщения
     
  7. AnGeI

    AnGeI Elder - Старейшина

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    PHP:
    <?php

    header
    ('Content-Type: text/html; charset=utf-8');
    include(
    "config/config.php");
    $DB = new DataBase();
    $DB->MySQL_Connect();

    class 
    Menu {

        public function 
    Menu() {
            
    $query "SELECT * FROM menu WHERE menu_id = '1' AND menu_hide <> 'F'";
            
    $res mysql_query($query);
            if (!
    $res)
                die(
    mysql_error());

            
    $arr = array();
            while (
    $row mysql_fetch_object($res)) {
                
    $arr[] = $row;
            }
        }

        public function 
    Categories() {
            
    $query "SELECT * FROM categories WHERE cat_hide <> 'F'";
    $res mysql_query($query);
    if(!
    $res)
        die(
    mysql_error());

    $menu = array();
    while (
    $row mysql_fetch_object($res))
    {
        
    $menu[] = $row;
    }
        }

    }
    $Menu = new Menu();
    $Menu->Menu;
    $Menu->Categories;
    ?>

    <ul>
            <h3><?php echo $Menu->Menu->arr[0]->menu_name?></h3>
        <?php 
        $your_array 
    $Menu->Categories->menu;
        if (
    count($your_array) === 0) {echo 'Передается пустой массив, foreach не любит пустой массив и жалуется интерпритатору!'; exit;}
        foreach (
    $Menu->Categories->menu as $key => $item): 
        
    ?>
        <li><?php echo "<a href=$item->cat_url>$item->cat_name</a>"?></li>
        <?php endforeach; ?>
    </ul>
    Работает? Это всего-лишь warning, можно его отключить:
    PHP:
    error_reporting (E_ERROR E_PARSE E_NOTICE);
     
    #7 AnGeI, 21 Nov 2011
    Last edited: 21 Nov 2011
  8. Failure

    Failure Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    мде, видимо о различиях свойства объекта и локальной переменной в методе никто не знает? :(
    А о конструкторах в классах и подавно
    PHP:
    <?php
    class Menu {
        public 
    $menu = array();
        public 
    $categories = array();
        
        public function 
    vMenu() {
            
    $query "SELECT * FROM menu WHERE menu_id = '1' AND menu_hide <> 'F'";
            
    $res mysql_query($query);
            if (!
    $res)
                die(
    mysql_error());

            while (
    $row mysql_fetch_object($res))
                
    $this->menu[] = $row;
        }

        public function 
    vCategories() {
            
    $query "SELECT * FROM categories WHERE cat_hide <> 'F'";
            
    $res mysql_query($query);
            if(!
    $res)
                die(
    mysql_error());
                
            while (
    $row mysql_fetch_object($res))
                
    $this->categories[] = $row;
        }
    }
    $obj = new Menu();
    $obj->vMenu();
    $obj->vCategories();
    print_r($obj->menu);
    print_r($obj->categories);
     
  9. Sh0ks1

    Sh0ks1 New Member

    Joined:
    7 Aug 2010
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    Почему, знаем) Забыл, про это.Спасибо большое!
     
  10. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    мда.. глаза протрите батюшка.. и посмотрите код который я вам дал в сообщении ..
     
  11. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    error_reporting(1);