login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] CodeIgniter, database gebruiken in model

Offline dimb - 09/10/2009 21:03 (laatste wijziging 11/10/2009 15:16)
Avatar van dimbNieuw lid Hallo,

Ik ben een model aan het schrijven voor een loginsysteem.
Dit maak ik in codeIgniter, dus met MVC model en OOP.

Nu heb ik een heel raar probleem waar ik helemaal gek van wordt.
Als ik een query wil uitvoeren in mijn model krijg ik de volgende foutmelding:

Fatal error: Call to a member function query() on a non-object in F:\Scripting Envoirment\UsbWebserver\Root\urenPlus.com\Website\application\models\userSystem.php on line 93

Zulke foutmeldingen krijg ik bij welke query dan ook, ook als ik Active Records probeer.
Als ik dezelfde query in mijn Controller uitvoer heb ik dit probleem niet.
Nu heb ik geprobeerd handmatig contact te maken met de database vanuit mijn model maar dit werkt niet.

Werkt niet:
  1. $this->load->model('userSystem', '', TRUE);
  2. ---
  3. $config['hostname'] = "localhost";
  4. $config['username'] = "myusername";
  5. $config['password'] = "mypassword";
  6. $config['database'] = "mydatabase";
  7. $config['dbdriver'] = "mysql";
  8. $config['dbprefix'] = "";
  9. $config['pconnect'] = FALSE;
  10. $config['db_debug'] = TRUE;
  11.  
  12. $this->load->model('userSystem', '', $config);
  13. ---
  14. $this->load->database();
(geprobeerd in de construct van de model).

Nu ga ik hier niet de hele code gooien maar wel een gedeelte:

Controller:
  1. <?php
  2.  
  3. class login extends Controller {
  4.  
  5. function index()
  6. {
  7. $this -> load -> view('login');
  8. }
  9.  
  10. function logMeIn()
  11. {
  12.  
  13. $this -> load -> model('userSystem', '', TRUE);
  14.  
  15. if(! $this -> userSystem -> logMeIn($_POST) )
  16. {
  17. $data['postMessage'] = $this -> userSystem -> returnErrors();
  18. }else{
  19. $data['postMessage'] = array('Uw bent succesvol ingelogd');
  20. }
  21.  
  22.  
  23.  
  24. $this -> load -> view('login',$data);
  25.  
  26. }
  27.  
  28. }


Model:
  1. <?php /* Created by Paul du Long - 2009 - pauldulong@gmail.com */
  2.  
  3. class UserSystem extends Model{
  4.  
  5. //Testing
  6. var $debug = true;
  7.  
  8. //Database structure
  9. var $db = array(
  10. 'table' => 'users',
  11. 'userRow' => 'username',
  12. 'passRow' => 'password'
  13. );
  14.  
  15. var $requiredPostField = array('username','password','userType');
  16. var $minimunLength = 1;
  17. var $allowedSelect = array('klant','programmeur','admin');
  18.  
  19. //Variables
  20. var $loginLvl;
  21. var $errors = array();
  22. var $data;
  23. var $userData;
  24. var $parentId;
  25.  
  26. function UserSystem()
  27. {
  28. parent::Model();
  29. }
  30.  
  31. function logMeIn($data)
  32. {
  33.  
  34. //Insert Post Data
  35. $this -> data = $data;
  36.  
  37. //Check required fields
  38. $this -> checkFields();
  39. $this -> checkSelectField();
  40.  
  41. if(! count($this -> errors) )
  42. {
  43.  
  44. $this -> setLvl();
  45. $this -> setParent(6);
  46.  
  47. if( $this -> loadUserData() )
  48. {
  49. $this -> createSessions();
  50. $this -> redirectUser();
  51. }else{
  52. return false;
  53. }
  54. }else{
  55. return false;
  56. }
  57.  
  58. }
  59.  
  60. function setParent($id)
  61. {
  62. $this -> parentId = $id;
  63. }
  64.  
  65. function loadUserData()
  66. {
  67.  
  68. $sql = "SELECT id FROM ".$this -> db['table']." WHERE ".$this -> db['userRow']."=? AND ".$this -> db['passRow']."=? AND parent = ? ";
  69. $sqlData = array(
  70. $_POST[$this -> requiredPostField[0]],
  71. md5($_POST[$this -> requiredPostField[1]]),
  72. $this -> parentId
  73. );
  74.  
  75. $query = $this -> db -> query($sql,$sqlData);
  76. if( $query -> num_rows() )
  77. {
  78.  
  79. $this -> userData = $query -> row_array();
  80. return true;
  81.  
  82. }else{
  83. $this -> errors[] = 'Geen account gevonden met deze gegevens';
  84. return false;
  85. }
  86.  
  87. }

4 antwoorden

Gesponsorde links
Offline Daiben - 09/10/2009 21:45
Avatar van Daiben Lid zet je database in de autoload die kun je vinden in config.php
Offline GijsB - 09/10/2009 21:45 (laatste wijziging 09/10/2009 21:46)
Avatar van GijsB Nieuw lid Nog een codeigniter gebruiker, zie je niet vaak Ondanks dat het door ziekte al weer zeker 1-2 maanden geleden is dat ik nog heb kunnen scripten (jammer genoeg) kan ik je waarschijnlijk wel helpen.

Eerste vraag even: Ben je er zeker van dat je de Active Records Class goed gebruikt? Ik gebruik die namelijk altijd, omdat de standaard query's bij mij ook vervelender doen. Dus kortom ben je net begonnen met codeigniter en kan daar het probleem ook nog liggen?

(Trouwens, met codeignitervragen kun je overigens beter bij het codeigniter forum aankloppen in in het vervolg, ik merkte zelf in het begin ook dat in Nederland niet heel veel codeingniter gebruikers zijn en daar antwoorden ze vaak vrij snel en juist)

EDIT: Inderdaad, eerst even doen wat Daiben zegt, ik ging er vanuit dat je dat al had gedaan en keek niet eens naar dat eerste deel  
Offline dimb - 09/10/2009 23:07
Avatar van dimb Nieuw lid De fout was dat ik in mijn model zelf de variable $db had gebruikt  .
Stomme fout dus  
Offline jaronneke - 12/10/2009 10:33
Avatar van jaronneke MySQL interesse Hehe , ook een fijn framework is KOHANA ( dit zie ik als een betere versie / opvolger? van Codeignitter 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.205s