[PHP/ZEND] probleem met object

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jigs
  • Registratie: April 2004
  • Laatst online: 17-01-2024
Hallo allemaal,

De laatste weken ben ik in het Zend framework gedoken. Volgens mij is dit voor de meesten van jullie wel bekend terrein. Ik heb me voor genomen om het MVC concept uit te werken binnen mijn web applicatie. En dit is me goed gelukt aan de hand van de verschillende (video) tutorials op het web. Gelukkig is het na wat vallen en opstaan gelukt om het framework in elkaar te zetten.

Ik zit nu met het volgende probleem. Ik wil een persoon met het MVC model kunnen CRUDen.
1.Ik kan een lijst naar het scherm zetten om alle personen uit de database te laten zien
2.Ik kan een persoon aanmaken.
alleen wanneer ik op een persoon klik om de details ervan te bekijken, krijg ik niks te zien. Zie onderstaande code uit de controller.
code:
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
<?
if(!$id){
            $db = db::getInstance();
            if (!$db->connect())
            $db->print_last_error(false);
            $data = array();
            $sql = ("SELECT * from personen LIMIT 10");
           
            $res = $db->select($sql);
            while($row = $db->get_row($res)){
                array_push($data,$row);
             }
            $this->view->personen = $data;
            //$personen = new persoon($a,'all');
            //print_r($data);
        }else{
            $this->_request->setActionName('person');
            $this->view->title = "Een persoon";
            $data =array('persoon_id' => $id);
            $p = new Persoon($data, 'select');
            //print_r($p);
            $this->view->personen = $p;
            //$this->view->render();
        }

?>

Wanneer ik een persoon kies, komt hij in de else. Dus dat gaat goed. Nu zijn er twee dingen die mij opvallen:
1. wanneer ik de print_r aan zet, krijg ik heel veel data, alle eigenschappen van de persoon, maar ook mijn querie en zelfs het username en wachtwoord van mijn db
2. alhoewel $p alle info van de persoon heeft, wordt het niet op het scherm getoont. Wat doe ik hier fout?

Alvast bedankt voor de hulp.

code:
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
//Dit is de code van mijn person action

<?php echo $this->render('header.phtml'); ?>
<?php echo $this->render('menu.phtml'); ?>
<br>
<?php echo $this->title ;?>
<?php if ($this->personen):
//print_r($this->personen);

?>

<!-- A table of some people. -->
 
       
        <?php foreach ($this->personen as $key => $val): ?>
        <br>
         <td><?php echo $this->escape($val) ?></td>
        <?php endforeach; ?>


<?php else: ?>

    <p>There are no persons to display.</p>

<?php endif;


echo $this->render('footer.phtml'); ?>

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Bondige en toch complete samenvatting startpost: :Y)
Jigs schreef op dinsdag 15 april 2008 @ 23:13:
Wat doet print_r($object); ?
Nou,
print_r() displays information about a variable in a way that's readable by humans.

print_r(), var_dump() and var_export() will also show protected and private properties of objects with PHP 5. Static class members not will be showed.
Dat sommige data niet getoond wordt komt wellicht omdat bepaalde grote strings of arrays afgekapt worden in de output.

{signature}


Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Zou je misschien (een link naar) je action kunnen posten? Want volgensmij probeer je nu meerdere zaken in één action af te handelen. Ik maak zelf gebruik van meerdere actions, bijvoorbeeld:
- indexAction() -> Laat het overzicht zien van personen uit de database
- viewAction() -> Laat een bepaald persoon zien
- editAction() -> Laat het wijzigingsformulier zien voor de persoon
- deleteAction() -> Verwijderd de persoon

Het voordeel hiervan is dat je de verschillende functionaliteiten gescheiden houd en dus over het algemeen makkelijker te onderhouden is.

Je zou ook nog gebruik kunnen gaan maken van Zend_Db in combinatie met Zend_Db_Table om het één en ander simpeler te maken. Verder lijkt me dit standaard debug werk ;).

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

[/onzin]

[ Voor 127% gewijzigd door SchizoDuckie op 16-04-2008 09:22 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
Wanneer ik een persoon kies, komt hij in de else. Dus dat gaat goed. Nu zijn er twee dingen die mij opvallen:
1. wanneer ik de print_r aan zet, krijg ik heel veel data, alle eigenschappen van de persoon, maar ook mijn querie en zelfs het username en wachtwoord van mijn db
2. alhoewel $p alle info van de persoon heeft, wordt het niet op het scherm getoont. Wat doe ik hier fout?
Iets zegt mij dat jij de code van de class Persoon niet hebt bekeken. Wat blijkbaar bevat die class ook een database class en meer informatie. sowieso geeft var_dump meer informatie dan print_r dus dat geeft dat al weer meer inzicht.

In die class Persoon (en waarschijnlijk in een bovenliggende klasse) gebeurt van alles met het construeren van de query. Dat gaat mis in class Persoon.

Dus je moet stap voor stap kijken wat er gebeurt, probeer die query die je krijgt met print_r($p) eens rechtstreeks uit op de database, buiten je webapplicatie om?

Acties:
  • 0 Henk 'm!

  • Jigs
  • Registratie: April 2004
  • Laatst online: 17-01-2024
@Voutloos: bedankt voor je reactie ik wist niet dat het klopte dat print_r werkelijk alles laat zien. Inclusief de db password enz. Ik dacht dat het aan een programmeerfout aan mijn kant lag.
Dat sommige data niet getoond wordt komt wellicht omdat bepaalde grote strings of arrays afgekapt worden in de output.
Het feit dat alle properties in mijn $p staan betekent volgens mij dat mijn select goed gegaan is. Alleen worden ze in mijn template om een of andere reden niet goed op het scherm getoont.





@RAJH
RAJH schreef op woensdag 16 april 2008 @ 09:21:
Zou je misschien (een link naar) je action kunnen posten?
Je zou hier het hele proces kunnen zien: http://217.149.198.122/
Ik heb de print_r en de var_dump bewust uitgestert omdat anders mijn db password ook zichbaar wordt.
Je zou ook nog gebruik kunnen gaan maken van Zend_Db in combinatie met Zend_Db_Table om het één en ander simpeler te maken. Verder lijkt me dit standaard debug werk ;).
Dit is in de toekomst ook zeker mijn bedoelling maar omdat ik ik deze classes al had voordat ik met Zend begon, heb ik besloten om ze voorlopig toch maar te implementeren.



@all, alvast bedankt voor de reacties.
Pagina: 1