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":

<?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:

<?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.
Nick,

je hebt een (onvoorwaardelijke) return statement in je while lus. wat is de letterlijke betekenis van het woord return?
Dus pas aan het eind een return geven.
<?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;
}
?>
en hoe krijg ik de waardes dan terug op het scherm?

[size=xsmall]Toevoeging op 19/03/2013 10:02:58:[/size]

Heb dit geprobeerd maar dat werkt niet :(


<?php
foreach($this->sem_obj->read() as $value) {
            $this->content .= $value;
        }
?>
Kleine wijziging aangebracht.

<?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;
}
?>

<?php
foreach($this->sem_obj->read() as $value) {
$this->content .= $value->title;
}
?>
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
Zie mijn edit.
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

[size=xsmall]Toevoeging op 19/03/2013 10:49:15:[/size]

Heb het werkend gekregen!!!!
Dit stukje code moest veranderd worden.

<?php
foreach($this->sem_obj->read() as $value) {
            $this->content .= $value['title'];
        }
?>


Naar dit stukje:


<?php
foreach($this->sem_obj->read() as $value) {
            $this->content .= $value->title;
        }
?>


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

Ja logisch, het is een object en geen array.
Zal mijn post even aanpassen.

Succes verder.

Reageren