login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[ZF] Db_Table (Opgelost)

Offline Oneday - 12/03/2011 23:11 (laatste wijziging 13/03/2011 09:28)
Avatar van OnedayNieuw lid Hey, ik heb al vanalles geprobeerd maar 't lukt me maar niet connectie te maken met de database vanop mijn zend framework.

Ik heb volgende in mijn application.ini staan:

  1. recources.db.adapter = "PDO_MYSQL"
  2. recourses.db.params.host = "localhost"
  3. recourses.db.params.username = "root"
  4. recources.db.params.password = ""
  5. recourses.db.params.dbname = "bspot"


Dus als ik 't goed begrijp zou ik dan makkelijk moeten kunnen connecteren naar die database.

Dat lukt wel als ik elke keer manueel op de klassieke manier connectie maak maar dit is natuurlijk niet de bedoeling binnen een framework.

Ik zou mijn models gewoon willen extenden met bijvoorbeeld Zend_Db_Table moet dat dan zijn geloof ik? Zodat elke model indien nodig access heeft tot de database.

Maar dit lukt me niet, iemand een idee waar ik dit dan nog verder moet instellen?

26 antwoorden

Gesponsorde links
Offline lemoinet - 13/03/2011 00:24
Avatar van lemoinet PHP gevorderde je moet je adapter ook nog definiëren

bvb.
  1. resources.db.adapter = Pdo_Mysql
Offline Oneday - 13/03/2011 09:27
Avatar van Oneday Nieuw lid
lemoinet schreef:
je moet je adapter ook nog definiëren

bvb.
[..code..]

Ah sorry, die stond er ook al in, was die vergeten te copy-pasten.
Offline shibble - 13/03/2011 11:02
Avatar van shibble MySQL interesse Krijg je niet een foutmelding als je in development modus werkt?

Als ik in development modus werk (Localhost) heb ik in me htaccess aangegeven dat het Development is en in mijn application.ini heb ik nog een aparte [development : production] en daarin weer de instellingen: "display_startup_error", "Display_errors" en "resources.frontController.throwExceptions = true".

Als iets fout gaat dan krijg ik altijd een foutmelding dus als ik geen DB Connecte kan maken krijg ik wel een melding met het probleem.
Offline Oneday - 13/03/2011 11:07
Avatar van Oneday Nieuw lid
shibble schreef:
Krijg je niet een foutmelding als je in development modus werkt?

Als ik in development modus werk (Localhost) heb ik in me htaccess aangegeven dat het Development is en in mijn application.ini heb ik nog een aparte [development : production] en daarin weer de instellingen: "display_startup_error", "Display_errors" en "resources.frontController.throwExceptions = true".

Als iets fout gaat dan krijg ik altijd een foutmelding dus als ik geen DB Connecte kan maken krijg ik wel een melding met het probleem.

Display exceptions stond op 0, heb 't ff op true gezet, ik krijg volgende error:


  1. Exception information:
  2.  
  3. Message: No adapter found for Application_Model_K8055
  4. Stack trace:
  5.  
  6. #0 C:\wamp\www\bspot\library\Zend\Db\Table\Abstract.php(739): Zend_Db_Table_Abstract->_setupDatabaseAdapter()
  7. #1 C:\wamp\www\bspot\library\Zend\Db\Table\Abstract.php(268): Zend_Db_Table_Abstract->_setup()
  8. #2 C:\wamp\www\bspot\library\Zend\Db\Table.php(77): Zend_Db_Table_Abstract->__construct(Array)
  9. #3 C:\wamp\www\bspot\application\modules\index\controllers\manueelController.php(22): Zend_Db_Table->__construct()
  10. #4 C:\wamp\www\bspot\library\Zend\Controller\Action.php(513): manueelController->indexAction()
  11. #5 C:\wamp\www\bspot\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('indexAction')
  12. #6 C:\wamp\www\bspot\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
  13. #7 C:\wamp\www\bspot\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
  14. #8 C:\wamp\www\bspot\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
  15. #9 C:\wamp\www\bspot\public\index.php(26): Zend_Application->run()
  16. #10 {main}


Wat ik nu heb gedaan is m'n model ge-extend naar Zend_Db_Table
Offline shibble - 13/03/2011 11:57
Avatar van shibble MySQL interesse Hoe ziet je Model K8055 eruit?
Offline Oneday - 13/03/2011 14:35
Avatar van Oneday Nieuw lid
  1. <?php
  2. class Application_Model_K8055 extends Zend_Db_Table
  3. {
  4. protected $_name = 'instellingen';
  5. protected $_port = array(
  6. 'pomp' => 1,
  7. 'zonnecollectoren' => 2
  8. );
  9. protected $_prefix = array(
  10. 'pomp' => 'DO',
  11. 'zonnecollectoren' => 'DO'
  12. );
  13. public function getMode()
  14. {
  15. $sql = "SELECT `mode` FROM instellingen";
  16. echo $sql;
  17. die();
  18. }
  19. public function getAll()
  20. {
  21. exec('c:\wamp\bin\apache\Apache2.2.17\cgi-bin\K8055.exe 0,READ',$result);
  22. foreach ($result as $value)
  23. {
  24. if (strstr($value,"=") !== false)
  25. {
  26. $explode = explode('=',$value);
  27. $array[$explode[0]] = $explode[1];
  28. }
  29. }
  30. return $array;
  31. }
  32. public function getZonnecollectoren()
  33. {
  34. $array = $this->getAll();
  35. return $array[$this->_prefix['zonnecollectoren'].$this->_port['zonnecollectoren']];
  36. }
  37. public function setZonnecollectoren($status = 0)
  38. {
  39. exec('c:\wamp\bin\apache\Apache2.2.17\cgi-bin\K8055.exe 0,BIT'.$status.','.$this->_port['zonnecollectoren'],$result);
  40. return $result;
  41. }
  42. public function getPomp()
  43. {
  44. $array = $this->getAll();
  45. return $array[$this->_prefix['pomp'].$this->_port['pomp']];
  46. }
  47. public function setPomp($status = 0)
  48. {
  49. exec('c:\wamp\bin\apache\Apache2.2.17\cgi-bin\K8055.exe 0,BIT'.$status.','.$this->_port['pomp'],$result);
  50. return $result;
  51. }
  52.  
  53.  
  54. }
Offline lemoinet - 13/03/2011 14:36
Avatar van lemoinet PHP gevorderde en als je dit nog in ja application.ini erbij zet

  1. resources.db.isDefaultTableAdapter = true
Offline Oneday - 13/03/2011 14:43
Avatar van Oneday Nieuw lid
lemoinet schreef:
en als je dit nog in ja application.ini erbij zet

[..code..]

Zelfde error
Offline lemoinet - 13/03/2011 14:48 (laatste wijziging 13/03/2011 14:48)
Avatar van lemoinet PHP gevorderde het is resources ipv recourses
Offline Oneday - 13/03/2011 15:03 (laatste wijziging 13/03/2011 15:08)
Avatar van Oneday Nieuw lid
lemoinet schreef:
het is resources ipv recourses

Ouch Weer zo'n domme fout van me!


ik heb nu dit:

  1. $result = $this->select("mode")->from("instellingen");
  2. Zend_Debug::dump($result);


Nu krijg ik een heleboel andere dingen mee in de result array die er niet bij moeten.
Offline lemoinet - 13/03/2011 15:09
Avatar van lemoinet PHP gevorderde je kan best je error_reporting aanzetten. dan krijg je tenminste al een foutmelding
Offline Oneday - 13/03/2011 15:35 (laatste wijziging 13/03/2011 15:36)
Avatar van Oneday Nieuw lid Nu krijg ik geen foutmelding meer, maar gewoon een dump van het opbject:

http://plaatscode.be/140807/
Offline lemoinet - 13/03/2011 18:50 (laatste wijziging 13/03/2011 18:54)
Avatar van lemoinet PHP gevorderde ik denk dat dit het ongeveer moet zijn.

  1. public function getMode()
  2. {
  3. $select = $this->select()
  4. ->from($this->_name, array('mode'));
  5. return $this->fetchAll($select);
  6. }
Offline Oneday - 13/03/2011 19:13
Avatar van Oneday Nieuw lid
lemoinet schreef:
ik denk dat dit het ongeveer moet zijn.

[..code..]

Ik krijg hetzelfde als resultaat.
Offline lemoinet - 13/03/2011 19:57
Avatar van lemoinet PHP gevorderde zet dan toch eens je error_reporting en display_errors op, zodat we kunnen weten welke fout je krijgt.

application.ini
  1. phpSettings.display_startup_errors = 1
  2. phpSettings.display_errors = 1
  3. phpSettings.error_reporting = 8191
Offline Oneday - 13/03/2011 19:58
Avatar van Oneday Nieuw lid
lemoinet schreef:
zet dan toch eens je error_reporting en display_errors op, zodat we kunnen weten welke fout je krijgt.

application.ini
[..code..]

Had ik al gedaan, maar hij geeft geen fout. 
Offline lemoinet - 13/03/2011 19:59
Avatar van lemoinet PHP gevorderde doe eens var_dump($this->fetchAll($select));
Offline Oneday - 13/03/2011 20:00
Avatar van Oneday Nieuw lid
lemoinet schreef:
doe eens var_dump($this->fetchAll($select));

Dat is dezelfde dump als ik enkele posts geleden postte:

http://plaatscode.be/140807
Offline lemoinet - 13/03/2011 20:13
Avatar van lemoinet PHP gevorderde dat kan dezelfde dump niet zijn.
je moet een object van type Zend_Db_Table_Rowset terugkrijgen ipv type Zend_Db_Table_Select
Offline Oneday - 13/03/2011 20:19
Avatar van Oneday Nieuw lid
lemoinet schreef:
dat kan dezelfde dump niet zijn.
je moet een object van type Zend_Db_Table_Rowset terugkrijgen ipv type Zend_Db_Table_Select

Hm oké idd:

http://plaatscode.be/140808/

Offline lemoinet - 13/03/2011 20:22
Avatar van lemoinet PHP gevorderde uit je dump is duidelijk te merken dat je wel een array terug krijgt.
  1. protected '_data' =>
  2. 0 =>
  3. 'mode' => string '1' (length=1)


dus het probleem moet ergens anders liggen, controller of view
Offline Oneday - 13/03/2011 20:40
Avatar van Oneday Nieuw lid
lemoinet schreef:
uit je dump is duidelijk te merken dat je wel een array terug krijgt.
[..code..]

dus het probleem moet ergens anders liggen, controller of view

maar ik doe de dump zelf in het model als je dat bedoeld? Gevolgd door die();
Offline lemoinet - 13/03/2011 20:45
Avatar van lemoinet PHP gevorderde gewoon terug
  1. return $this->fetchAll($select);

dump en die verwijderen.

dat je een lege pagina krijgt zal ergens anders aan liggen.
hoe ziet de controller en view van je "lege" pagina eruit?

Offline Oneday - 13/03/2011 20:52
Avatar van Oneday Nieuw lid
lemoinet schreef:
gewoon terug
[..code..]
dump en die verwijderen.

dat je een lege pagina krijgt zal ergens anders aan liggen.
hoe ziet de controller en view van je "lege" pagina eruit?

Nu krijg ik geen lege pagina meer, maar dingen uit de database halen lukt me dus niet zoals je ziet in de dumps in vorige posts. :S
Offline lemoinet - 13/03/2011 20:59
Avatar van lemoinet PHP gevorderde uit je vorige dump kreeg je wel data uit je database
  1. protected '_data' =>
  2. 0 =>
  3. 'mode' => string '1' (length=1)


geef eens een voorbeeld waar je de gegevens uitleest
Offline Oneday - 13/03/2011 21:13 (laatste wijziging 13/03/2011 22:44)
Avatar van Oneday Nieuw lid
lemoinet schreef:
uit je vorige dump kreeg je wel data uit je database
[..code..]

geef eens een voorbeeld waar je de gegevens uitleest

Maar hoe haal ik daar die 'mode' dan uit?? Want ik wil gewoon tabelletje weergeven van database inhoud:

bv

id: 1 - mode: 1
id: 2 - mode: 4

Dus gebruik ik deze query :

  1. $select = $this->select()
  2. ->from($this->_name, array('mode'));
  3. $return = $this->fetchAll($select);


Maar hoe kan ik die 'mode' nu uit die return halen?

Normaalgezien krijg je gewoon een array met wat je uit de database terugkrijgt toch?


EDIT:

Ik heb de oplossing gevonden. ^,^ Blijkbaar kon je bij een fetchAll() of fetchRow() ook een toArray() doen waardoor je enkel hetgene dat je opvroeg in de database kreeg.


  1. 0 =>
  2. 'mode' => string '1' (length=1)


Zeer hard bedankt voor je hulp iig! 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.305s