login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Database Class

Offline lasdesigner - 19/09/2005 20:20
Avatar van lasdesignerPHP beginner Hallo allemaal, ik heb dit gemaakt maar weet niet of het helemaal klopt en hoe ik het precies moet gebruiken.

Iemand ideen of tips:

  1. <?php
  2. class DatabaseTest
  3. {
  4. var $database;
  5. var $user;
  6. var $pass;
  7. var $host;
  8. var $connectie;
  9.  
  10.  
  11. function open()
  12. {
  13. $this->connectie = mysql_connect($this->host, $this->user, $this->pass);
  14. mysql_select_db($this->database);
  15. }
  16.  
  17. function close()
  18. {
  19. mysql_close($this->connectie);
  20. }
  21.  
  22. function query()
  23. {
  24. $this->open;
  25. $result = mysql_query($query, $this->connectie);
  26. $this->close;
  27. return $result;
  28. }
  29. }
  30. ?>


alvast bedankt
(p.s. admins/moderators sorry dat ik zoveel vragen over Classes stel, heb het nog steeds niet helemaal door..)

13 antwoorden

Gesponsorde links
Offline Maarten - 19/09/2005 20:32 (laatste wijziging 19/09/2005 20:33)
Avatar van Maarten Erelid Als je zelf iets maakt kan je er meestal toch mee werken? Of vergis ik me?

  1. <?php
  2. $conn = new DatabaseTest;
  3. $conn->user = "bla";
  4. // enzovoort
  5. $conn->open();
  6. $conn->query("SELECT * FROM tabel");
  7. $conn->close();
  8. ?>
Offline nemesiskoen - 19/09/2005 20:44
Avatar van nemesiskoen Gouden medaille

PHP expert
Als je dit hebt gemaakt ben je echt VERKEERD bezig.
Waar zijn je argumenten?
Waar geef je een waarde aan host etc...
Je gaat dat toch niet van buiten de class doen. Laat dat is allemaal meegeven in de constructor ofzo.

  1. <?php
  2. class Database
  3. {
  4. var $database;
  5. var $user;
  6. var $pass;
  7. var $host;
  8. var $connectie;
  9. var $result;
  10.  
  11.  
  12. function Database($host, $user, $pass,$db,$open=TRUE)
  13. {
  14. $this->host = $host;
  15. $this->user = $user;
  16. $this->pass = $pass;
  17. $this->database = $db;
  18. if($open) {
  19. $this->open();
  20. }
  21. }
  22. function changeUser($host, $user, $pass,$db) {
  23. $this->close();
  24. $this->Database($host, $user, $pass,$db);
  25. $this->open();
  26. }
  27. function open() {
  28. $this->connectie = mysql_connect($this->host, $this->user, $this->pass);
  29. mysql_select_db($this->database);
  30. }
  31.  
  32. function close()
  33. {
  34. mysql_close($this->connectie);
  35. }
  36.  
  37. function query($query,$free=TRUE)
  38. {
  39. $this->result = mysql_query($query, $this->connectie);
  40. return $this->result;
  41. if($free) {
  42. $this->free();
  43. }
  44. }
  45. function free() {
  46. mysql_free_result($this->result);
  47. unset($this->result);
  48. }
  49. /* optioneel: als je met php5 werkt */
  50. function __destruct() {
  51. $this->free();
  52. $this->close();
  53. }
  54. }
  55.  
  56. $db = new Database("localhost", "root", "", "test");
  57. $res = $db->query("SELECT * FROM users");
  58. while($dat = mysql_fetch_array($res)) {
  59. echo $dat['naam'] ."<br />";
  60. }
  61.  
  62. ?>


Opkuising + uitbreiding van je code. Misschien kan je nog een fetch methode schrijven. Zo zou je hem ongeveer kunnen gebruiken.
Offline lasdesigner - 19/09/2005 20:45
Avatar van lasdesigner PHP beginner Koen! hartstikke bedankt! Je helpt me echt!
hier kan ik wat mee! Dank je wel, ik ga het nu verder uitwerken en goed bekijken!
Offline marten - 19/09/2005 20:49
Avatar van marten Beheerder Jaaaa
cool maak het script voor me en je bent mijn beste vriend 

Heb je wel tutorial gelezen lasdesigner?
Offline lasdesigner - 20/09/2005 19:10 (laatste wijziging 22/09/2005 19:09)
Avatar van lasdesigner PHP beginner @Marten, het gaat er niet om dat hij het script gemaakt heeft. Ik gebruik dit hele script (nog) niet. Ik gebruik het alleen maar om te oefenen.
En ik heb de tutorials gelezen, en geprobeerd. Maar het lukt nog niet helemaal, dus blijf ik oefenen, vandar dat er misschien veel vragen over Classes van mij jop kunnen komen.

Kan dit?
  1. <?php
  2. function mysqlnum($query)
  3. {
  4. $this->open();
  5. $this->result = mysql_num_rows($query);
  6. $this->close();
  7. return $this->result;
  8. }
  9. ?>

Offline nemesiskoen - 22/09/2005 19:10
Avatar van nemesiskoen Gouden medaille

PHP expert
ja, maar het openen en sluiten moet niet. Gewoon uitvoeren.
Offline lasdesigner - 23/09/2005 17:18
Avatar van lasdesigner PHP beginner Ik heb nu dit
  1. <?php
  2.  
  3. class Database
  4. {
  5. var $database;
  6. var $user;
  7. var $pass;
  8. var $host;
  9. var $connectie;
  10.  
  11. function DataBase($host, $user, $pass, $db, $pass=TRUE)
  12. {
  13. $this->host = $host;
  14. $this->pass = $pass;
  15. $this->user = $user;
  16. $this->database = $db;
  17. if($open)
  18. {
  19. $this->open();
  20. }
  21. }
  22.  
  23. function newUser($host, $user, $pass, $db)
  24. {
  25. $this->close();
  26. $this->database($host, $user, $pass, $db);
  27. $this->open();
  28. }
  29.  
  30. function query($query,$free=TRUE)
  31. {
  32. $this->result = mysql_query($query, $this->connectie);
  33. return $this->result;
  34. if($free)
  35. {
  36. $this->free();
  37. }
  38. }
  39.  
  40. function free()
  41. {
  42. mysql_free_result($this->result);
  43. unset($this->result);
  44. }
  45.  
  46. function open()
  47. {
  48. $this->connectie($host, $user, $pass);
  49. mysql_select_db($this->database);
  50. }
  51.  
  52. function sluit()
  53. {
  54. mysql_close($this->connectie);
  55. }
  56.  
  57. function __destruct()
  58. {
  59. $this->free();
  60. $this->close();
  61. }
  62.  
  63. function mysqlnum($query)
  64. {
  65. $this->result = mysql_num_rows($query);
  66. return $this->result;
  67. }
  68.  
  69. function fetchassoc($resultaat)
  70. {
  71. $this->result = mysql_fetch_assoc($resultaat);
  72. return $this->result;
  73. }
  74. }
  75.  
  76. $db = new Database("localhost","root","","oop");
  77. $res = $db->query("SELECT * FROM test");
  78. while($a = $db->fetchassoc($res))
  79. {
  80. $a['test'];
  81. }
  82. echo $db->mysqlnum($res);
  83.  
  84. ?>

Maar hij doet het nog niet:S Krijg allerlei foutmeldingen:


Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\wamp\www\db\test.php on line 32

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\wamp\www\db\test.php on line 71

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\wamp\www\db\test.php on line 65

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\wamp\www\db\test.php on line 42

Fatal error: Call to undefined method Database::close() in c:\wamp\www\db\test.php on line 60

Iemand idee?:S HEb PHP5!
Offline Button - 23/09/2005 21:02 (laatste wijziging 23/09/2005 21:14)
Avatar van Button PHP ver gevorderde Die Fatal error: Call to undefined method Database:: close() komt omdat de close() functie niet bestaat!

edit:

en voor die andere warnings:
moet je er niet eerst voor zorgen dat je een connectie maakt voor je vraagt een query uit te voeren? (ja srry ik kan je nu geen directe code geven : omdat ik mijn reactie bewerk (en dan de code niet kan zien) en de code me niet exact herinner  maar ik denk dat je me wel begrijpt)
dus zou ik eerst die andere functies oproepen die connectie maken voor je de query opvraagt?

good luck
Offline lasdesigner - 23/09/2005 21:18
Avatar van lasdesigner PHP beginner 1) KLopt was var close; vergeten! stom.

2) MAak ik toch?

  1. <?php
  2. function DataBase($host, $user, $pass, $db, $pass=TRUE)
  3. {
  4. $this->host = $host;
  5. $this->pass = $pass;
  6. $this->user = $user;
  7. $this->database = $db;
  8. if($open)
  9. {
  10. $this->open();
  11. }
  12. }
  13. ?>

Offline Button - 24/09/2005 14:25
Avatar van Button PHP ver gevorderde @2: ja je hebt de functie wel maar je roept die functie (volgens mij) nergens aan?
Offline nemesiskoen - 24/09/2005 16:41
Avatar van nemesiskoen Gouden medaille

PHP expert
  1. $db = new Database("localhost","root","","oop");

Daar wordt de functie aangeroepen.

Maar je hebt de functie verkeerd overgenomen.

  1. function open() {
  2. $this->connectie = mysql_connect($this->host, $this->user, $this->pass);
  3. mysql_select_db($this->database);
  4. }

Dat is hem
Niet:
  1. function open()
  2. {
  3. $this->connectie($host, $user, $pass);
  4. mysql_select_db($this->database);
  5. }
Offline Button - 25/09/2005 09:12
Avatar van Button PHP ver gevorderde
  1. $db = new Database("localhost","root","","oop");

maar wordt hier niet alleen de class aangemaakt?
moet het niet zo ?
  1. $db = new Database;//class aanmaken
  2. $db->Database("localhost","root","","oop");//functie(!) Database aanroepen?


? niet
Offline nemesiskoen - 25/09/2005 12:20
Avatar van nemesiskoen Gouden medaille

PHP expert
helemaal niet.
Dat noemen ze een constructor.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.342s