Doorgeven properties van methode naar methode binnen class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

John Cena

John Cena

02/06/2010 13:08:38
Quote Anchor link
en dat is dus precies wat er niet goed werkt.
Omdat ik iets fout doe.
Maar wat ik fout doe ontschiet me even!

Let's see:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php

    function parse_menu_settings()
    {

        $query         = 'SELECT * FROM menu ORDER BY rank';
        if ($this->_db->query($query))
        {

            $menu = array();
            
                while($row = $this->_db->fetchAssoc())
                {

                    $menu[$row->id] = $row->title;
                }
            
        }
            
    }
    
    function
parse_menu_items()
    {

        $this->parse_menu_settings();
        
        foreach ($this->menu as $id => $title)
            {

               echo '<li>'. $title .'</li>';
            }
    }

?>


Foutmelding:
Warning: Invalid argument supplied for foreach() in /storage/mijndomein/users/120864/public/sites/www.aaaa.com/CMS/inc/menu_rank.php on line 51
 
PHP hulp

PHP hulp

03/05/2024 21:36:39
 
Hipska BE

Hipska BE

02/06/2010 13:19:57
Quote Anchor link
in je eerste methode doe je geen $this->menu maar $menu!

Anders kan je ook werken met return $menu en in de tweede methode $menu = $this->parse_menu_settings();
 
John Cena

John Cena

02/06/2010 15:18:59
Quote Anchor link
Hmm, kheb nu deze code, alleen krijg ik enkel en alleen 1 stipje als aankondiging van de LI.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php

    function parse_menu_settings()
    {

        $query         = 'SELECT * FROM menu ORDER BY rank';
        if ($this->_db->query($query))
        {

            $menu = array();
            
                while($row = $this->_db->fetchAssoc())
                {

                    $menu[$row->id] = $row->name_dutch;
                }
            
        }

            return $menu;
    }
    
    function
parse_menu_items()
    {

        $menu = $this->parse_menu_settings();
        
        foreach ($menu as $id => $name_dutch)
            {

               echo '<li>'. $name_dutch .'</li>';
            }
    }

?>
 
Pim -

Pim -

02/06/2010 15:25:37
Quote Anchor link
Ik zie dat je een begin maakt met OOP, maar ik zou toch nog even de basisbeginselen doornemen. Als vuistregel kan je nemen dat er nooit SQL en HTML in 1 bestand/klasse moet staan. Het hele idee van OOP is dat je taken als dataseverkeer en opmaak scheidt.

Maar toch heel goed dat je met OOP bezig bent ;)
 
John Cena

John Cena

02/06/2010 15:58:48
Quote Anchor link
zou je me wel aan kunnen geven wat er fout gaat?
 
Jelmer -

Jelmer -

02/06/2010 18:17:46
Quote Anchor link
Doe in je parse_menu_items() eens var_dump($menu) net voor die foreach-lus? Ik heb het idee dat in die array niet precies zit wat je verwacht.

Oeh, trouwens, die while-lus in parse_menu_settings(), daarin heb je fetchAssoc() staan. Geeft die een array terug, zoals de naam suggereert, of daadwerkelijk objecten, zoals jij ze gebruikt?

(Maar dat zou je vrij snel moeten merken wanneer je error-reporting aan hebt staan)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
?>
 
John Cena

John Cena

02/06/2010 23:26:16
Quote Anchor link
Nee, ik zie het nu ook. hij geeft objecten terug... (A)

Hoe ga ik dit nu in de code verwerken zodat hij ze wel goed pakt?
 
Jelmer -

Jelmer -

03/06/2010 00:01:37
Quote Anchor link
Als je fetchAssoc() objecten teruggeeft, dan zou het goed moeten gaan. Wat is lekkerlijk de output van die var_dump?
 
John Cena

John Cena

08/06/2010 10:52:19
Quote Anchor link
Jelmer rrr, bedankt!

Voor de zoekresultaten, zo opgelost:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function parse_menu_items()
    {

        $query         = 'SELECT * FROM menu ORDER BY rank';
        if ($this->_db->query($query))
        {

            $menu = array();
                echo '<ul id="menu_list" class="sortable-list">';
                while($row = $this->_db->fetchAssoc())
                {

                    echo '<li id='.$row['id'].'>'.$row['name_dutch'].'</li>';
                }

                   echo '</ul>';
                   ?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.