return database values in foreach

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nick Audenaerde

Nick Audenaerde

18/03/2013 11:16:42
Quote Anchor link
Beste forumleden,

Ik ben vrij nieuw in OOP php en probeer data van de database terug op het veld te zetten.
Het probleem is nu dat ik altijd maar 1 waarde terug op het scherm krijg als ik return gebruik.
Bij een echo laat hij ze allemaal zien, nu is het probleem dat ik geen echo kan gebruiken omdat ik een applicatie op heb gezet die html in functie's zet zodat ik eerst objecten kan vullen en ze dan allemaal netjes op het scherm kan zetten.
Hier is de code die ik nu gebruik:

De klasse "Seminair":
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
<?php

 public function read() {
        $query = "SELECT id, title, description, datetime FROM seminar";
        $result = $this->getDb()->query($query);
        $values = array();
        while(($row = $result->fetchObject()) !== false) {
            //foreach($row as $values) {
                $values['title'] = $row->title;
                return $values;
            //$this->setDescription($row->description);
            //$this->setDatetime($row->datetime);
            //}

        }
    }

?>


de klasse SeminairView:
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
<?php

public function render() {
        $this->content = '
            Op deze pagina staan alle Seminairs die te volgen zijn.
        '
;
        //$this->content .= $this->text1->read();
        foreach($this->sem_obj->read() as $value) {
            $this->content .= $value;
        }

        $this->content .= $this->sem_obj->read();
        $this->content .= $this->sem_obj->getTitle();
        $this->content .= $this->sem_obj->getDescription();
        $this->content .= $this->sem_obj->getDatetime();
        //$this->content .= $this->text1->showSeminairs();
        return $this->content;
    }

?>


Ik hoop dat iemand een idee heeft wat ik niet goed doe, of hoe ik het beter kan doen, alvast bedankt.
Gewijzigd op 18/03/2013 11:29:24 door Nick Audenaerde
 
PHP hulp

PHP hulp

05/11/2024 15:49:48
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/03/2013 12:37:47
Quote Anchor link
Nick,

je hebt een (onvoorwaardelijke) return statement in je while lus. wat is de letterlijke betekenis van het woord return?
 
Nick Audenaerde

Nick Audenaerde

18/03/2013 12:39:08
Quote Anchor link
Terugkeren
 
- SanThe -

- SanThe -

18/03/2013 15:08:10
Quote Anchor link
Dus pas aan het eind een return geven.
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
<?php

 public function read() {
        $query = "SELECT id, title, description, datetime FROM seminar";
        $result = $this->getDb()->query($query);
        $values = array();
        while(($row = $result->fetchObject()) !== false) {
            //foreach($row as $values) {
                // hier nieuw record in het array maken

                $values[]['title'] = $row->title;
            //$this->setDescription($row->description);
            //$this->setDatetime($row->datetime);
            //}

        }
    // hier pas de return van het hele array
    return $values;
    }

?>
 
Nick Audenaerde

Nick Audenaerde

19/03/2013 09:38:13
Quote Anchor link
en hoe krijg ik de waardes dan terug op het scherm?

Toevoeging op 19/03/2013 10:02:58:

Heb dit geprobeerd maar dat werkt niet :(

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($this->sem_obj->read() as $value) {
            $this->content .= $value;
        }

?>
 
- SanThe -

- SanThe -

19/03/2013 10:28:03
Quote Anchor link
Kleine wijziging aangebracht.

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
<?php
 public function read() {
        $query = "SELECT id, title, description, datetime FROM seminar";
        $result = $this->getDb()->query($query);
        $values = array();
        while(($row = $result->fetchObject()) !== false) {
            //foreach($row as $values) {
                // hier nieuw record in het array maken

                $values[] = $row;
            //$this->setDescription($row->description);
            //$this->setDatetime($row->datetime);
            //}

        }
    // hier pas de return van het hele array
    return $values;
    }

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($this->sem_obj->read() as $value) {
            $this->content .= $value->title;
        }

?>
Gewijzigd op 19/03/2013 10:53:44 door - SanThe -
 
Nick Audenaerde

Nick Audenaerde

19/03/2013 10:30:08
Quote Anchor link
Dat had ik ook geprobeerd, maar dat gaf helaas de volgende foutmelding:

Warning: Illegal string offset 'title' in /Applications/MAMP/htdocs/helix/puberbrein/views/SeminarView.php on line 26
 
- SanThe -

- SanThe -

19/03/2013 10:32:11
Quote Anchor link
Zie mijn edit.
 
Nick Audenaerde

Nick Audenaerde

19/03/2013 10:35:01
Quote Anchor link
Helaas geen succes Fatal error: Cannot use object of type stdClass as array in /Applications/MAMP/htdocs/helix/puberbrein/views/SeminarView.php on line 26

Toevoeging op 19/03/2013 10:49:15:

Heb het werkend gekregen!!!!
Dit stukje code moest veranderd worden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($this->sem_obj->read() as $value) {
            $this->content .= $value['title'];
        }

?>


Naar dit stukje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($this->sem_obj->read() as $value) {
            $this->content .= $value->title;
        }

?>


Super bedankt SanThe zonder jou was ik er nooit opgekomen !!
 
- SanThe -

- SanThe -

19/03/2013 10:53:16
Quote Anchor link
Ja logisch, het is een object en geen array.
Zal mijn post even aanpassen.

Succes verder.
 



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.