login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[ZF] Data plaatsen (Opgelost)

Offline Wouser - 27/01/2008 23:10
Avatar van WouserPHP interesse Hallo,

Ik probeer naar aanleiding van deze tut. http://www.site...:_deel_4_5

wat data uit db te halen en vervolgens uit te printen. Nu gaat het uit de db halen allemaal ok echter het uitprinten om een pagina lukt niet niet zo...

Ik krijg namelijk de error

Citaat:
Notice: Trying to get property of non-object in C:xampphtdocswebsiteapplicationviewsscriptsmemberlistindex.phtml on line 110, 114 etc... dat is de lijn waar steeds $row aangeroepen in wordt zie code...


Plaatscode: 5288

7 antwoorden

Gesponsorde links
Offline timmie_loots - 27/01/2008 23:35
Avatar van timmie_loots PHP gevorderde $row is een array, geen object. Je moet de elementen uit een array anders aanspreken (namelijk d.m.v. $row['id'], $row['nation_id'], etc.).
Offline Stijn - 27/01/2008 23:38 (laatste wijziging 27/01/2008 23:39)
Avatar van Stijn PHP expert Een kleine opmerking over die $i++ onderaan. Je kan dit veel makkelijker doen. Doe die $i++ weg onderaan en maak van lijn 30 het volgende:

  1. <tr style="background-color: #<?= ($i++ % 2) != 0 ? 'ccffff' : 'ffffff' ?>;">
Er wordt dan +1 gedaan als de modulo berekend is.

Nu het echte probleem. Je hebt 99% zekers de opgehaalde resultaten niet aan je Zend_View toegewezen.

  1. public function indexAction()
  2. {
  3.  
  4. $projects = new Projects();
  5.  
  6. //get the results and show them on the screen
  7. //deze lijn dus!!!
  8. $this->view->projects = $projects->fetchAll();
  9.  
  10. $this->view->paginaTitel = 'Gallery';
  11. $this->view->titel = 'Overzicht van alle projecten :]';
  12. $this->render();
  13.  
  14. }


Bij jou wordt dat dan $this->view->member = $model->fetchAll();

@timmie_loots: kijk eens naar mijn tutorial Je ziet dat $row een object is van die rij. $this->members is een array met objecten.
Offline timmie_loots - 27/01/2008 23:51
Avatar van timmie_loots PHP gevorderde Als de print_r output die in de comment van het script staat klopt, vind ik mijn redenatie niet zo vreemd. Dat heeft namelijk niets met het Zend framework te maken.

Zeker gezien de foutmelding.
Offline Wouser - 27/01/2008 23:54 (laatste wijziging 28/01/2008 00:05)
Avatar van Wouser PHP interesse
stijn1989 schreef:
Een kleine opmerking over die $i++ onderaan. Je kan dit veel makkelijker doen. Doe die $i++ weg onderaan en maak van lijn 30 het volgende:

[..code..]Er wordt dan +1 gedaan als de modulo berekend is.

Nu het echte probleem. Je hebt 99% zekers de opgehaalde resultaten niet aan je Zend_View toegewezen.

[..code..]

Bij jou wordt dat dan $this->view->member = $model->fetchAll();

@timmie_loots: kijk eens naar mijn tutorial Je ziet dat $row een object is van die rij. $this->members is een array met objecten.


Wat je zegt klopt ja... mijn regel waar ik de data uit haal doe gewoon als volgt uit...
$this -> view -> member = $db -> fetchAll('SELECT * FROM members ORDER BY '.$sort.' '.$order.'');

Maar als ik dan de manier van jou wil gebruike? Hoe voeg ik dan de where clause en order toe??? Dat kan ik namelijk dus niet vinden in de zf docu.
Offline Stijn - 28/01/2008 01:10 (laatste wijziging 28/01/2008 01:13)
Avatar van Stijn PHP expert
timmie_loots schreef:
Als de print_r output die in de comment van het script staat klopt, vind ik mijn redenatie niet zo vreemd. Dat heeft namelijk niets met het Zend framework te maken.

Zeker gezien de foutmelding.
Je zou een andere foutmelding krijgen. Iets van: Trying to use an array as object.

Je mag geen SQL code typen in models. Je kan where clauses uitvoeren via Models hoor anders was het niet nuttig. Je kan het via volgend voorbeeldje zien hoe WHERE gebruikt wordt (de model is Bugs).

  1. <?php
  2.  
  3. $table = new Bugs();
  4.  
  5. $where = array(
  6. 'bug_status = ?' => 'NEW',
  7. 'reported_by = ?' => 'dduck'
  8. );
  9.  
  10. $rows = $table->fetchAll($where);
  11. // generated SQL contains:
  12. // WHERE bug_status = 'NEW' AND reported_by = 'dduck'


Klik voor meer informatie

Hier wat meer code over fetchAll() 

  1. <?php
  2.  
  3. $table = new Bugs();
  4.  
  5. $where = $table->getAdapter()->quoteInto('bug_status = ?', 'NEW');
  6.  
  7. $order = 'bug_id';
  8.  
  9. // Return the 21st through 30th rows
  10. $count = 10;
  11. $offset = 20;
  12.  
  13. $rows = $table->fetchAll($where, $order, $count, $offset);


Extra informatie. Je model maakt gebruik van Zend_Db_Select om data op te halen. Klik hier voor informatie over zend_db_select.
Offline Ibrahim - 28/01/2008 08:34
Avatar van Ibrahim PHP expert als je dan toch custom queries wil uitvoeren, kun je het beste in je modelclass een functie aanmaken en die in je controller aanroepen.

MVC 
Offline Wouser - 28/01/2008 11:58
Avatar van Wouser PHP interesse Harstikke bedankt 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.198s