Database Class
lasdesigner - 19/09/2005 20:20
PHP 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:
<?php
class DatabaseTest
{
var $database;
var $user;
var $pass;
var $host;
var $connectie;
function open()
{
$this->connectie = mysql_connect($this->host, $this->user, $this->pass);
mysql_select_db($this->database);
}
function close()
{
mysql_close($this->connectie);
}
function query()
{
$this->open;
$result = mysql_query($query, $this->connectie);
$this->close;
return $result;
}
}
?>
<?php
class DatabaseTest
{
var $database ;
var $user ;
var $pass ;
var $host ;
var $connectie ;
function open( )
{
$this -> connectie = mysql_connect ( $this -> host , $this -> user , $this -> pass ) ; }
function close( )
{
}
function query( )
{
$this -> open ;
$this -> close ;
return $result ;
}
}
?>
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
Maarten - 19/09/2005 20:32 (laatste wijziging 19/09/2005 20:33)
Erelid
Als je zelf iets maakt kan je er meestal toch mee werken? Of vergis ik me?
<?php
$conn = new DatabaseTest;
$conn->user = "bla";
// enzovoort
$conn->open();
$conn->query("SELECT * FROM tabel");
$conn->close();
?>
<?php
$conn = new DatabaseTest;
$conn -> user = "bla" ;
// enzovoort
$conn -> open ( ) ;
$conn -> query ( "SELECT * FROM tabel" ) ;
$conn -> close ( ) ;
?>
nemesiskoen - 19/09/2005 20:44
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.
<?php
class Database
{
var $database;
var $user;
var $pass;
var $host;
var $connectie;
var $result;
function Database($host, $user, $pass,$db,$open=TRUE)
{
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->database = $db;
if($open) {
$this->open();
}
}
function changeUser($host, $user, $pass,$db) {
$this->close();
$this->Database($host, $user, $pass,$db);
$this->open();
}
function open() {
$this->connectie = mysql_connect($this->host, $this->user, $this->pass);
mysql_select_db($this->database);
}
function close()
{
mysql_close($this->connectie);
}
function query($query,$free=TRUE)
{
$this->result = mysql_query($query, $this->connectie);
return $this->result;
if($free) {
$this->free();
}
}
function free() {
mysql_free_result($this->result);
unset($this->result);
}
/* optioneel: als je met php5 werkt */
function __destruct() {
$this->free();
$this->close();
}
}
$db = new Database("localhost", "root", "", "test");
$res = $db->query("SELECT * FROM users");
while($dat = mysql_fetch_array($res)) {
echo $dat['naam'] ."<br />";
}
?>
<?php
class Database
{
var $database ;
var $user ;
var $pass ;
var $host ;
var $connectie ;
var $result ;
function Database( $host , $user , $pass , $db , $open = TRUE )
{
$this -> host = $host ;
$this -> user = $user ;
$this -> pass = $pass ;
$this -> database = $db ;
if ( $open ) {
$this -> open ( ) ;
}
}
function changeUser( $host , $user , $pass , $db ) {
$this -> close ( ) ;
$this -> Database ( $host , $user , $pass , $db ) ;
$this -> open ( ) ;
}
function open( ) {
$this -> connectie = mysql_connect ( $this -> host , $this -> user , $this -> pass ) ; }
function close( )
{
}
function query( $query , $free = TRUE )
{
return $this -> result ;
if ( $free ) {
$this -> free ( ) ;
}
}
function free( ) {
}
/* optioneel: als je met php5 werkt */
function __destruct( ) {
$this -> free ( ) ;
$this -> close ( ) ;
}
}
$db = new Database( "localhost" , "root" , "" , "test" ) ;
$res = $db -> query ( "SELECT * FROM users" ) ;
echo $dat [ 'naam' ] . "<br />" ; }
?>
Opkuising + uitbreiding van je code. Misschien kan je nog een fetch methode schrijven. Zo zou je hem ongeveer kunnen gebruiken.
lasdesigner - 19/09/2005 20:45
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!
lasdesigner - 20/09/2005 19:10 (laatste wijziging 22/09/2005 19:09)
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?
<?php
function mysqlnum($query)
{
$this->open();
$this->result = mysql_num_rows($query);
$this->close();
return $this->result;
}
?>
<?php
function mysqlnum( $query )
{
$this -> open ( ) ;
$this -> close ( ) ;
return $this -> result ;
}
?>
lasdesigner - 23/09/2005 17:18
PHP beginner
Ik heb nu dit
<?php
class Database
{
var $database;
var $user;
var $pass;
var $host;
var $connectie;
function DataBase($host, $user, $pass, $db, $pass=TRUE)
{
$this->host = $host;
$this->pass = $pass;
$this->user = $user;
$this->database = $db;
if($open)
{
$this->open();
}
}
function newUser($host, $user, $pass, $db)
{
$this->close();
$this->database($host, $user, $pass, $db);
$this->open();
}
function query($query,$free=TRUE)
{
$this->result = mysql_query($query, $this->connectie);
return $this->result;
if($free)
{
$this->free();
}
}
function free()
{
mysql_free_result($this->result);
unset($this->result);
}
function open()
{
$this->connectie($host, $user, $pass);
mysql_select_db($this->database);
}
function sluit()
{
mysql_close($this->connectie);
}
function __destruct()
{
$this->free();
$this->close();
}
function mysqlnum($query)
{
$this->result = mysql_num_rows($query);
return $this->result;
}
function fetchassoc($resultaat)
{
$this->result = mysql_fetch_assoc($resultaat);
return $this->result;
}
}
$db = new Database("localhost","root","","oop");
$res = $db->query("SELECT * FROM test");
while($a = $db->fetchassoc($res))
{
$a['test'];
}
echo $db->mysqlnum($res);
?>
<?php
class Database
{
var $database ;
var $user ;
var $pass ;
var $host ;
var $connectie ;
function DataBase( $host , $user , $pass , $db , $pass = TRUE )
{
$this -> host = $host ;
$this -> pass = $pass ;
$this -> user = $user ;
$this -> database = $db ;
if ( $open )
{
$this -> open ( ) ;
}
}
function newUser( $host , $user , $pass , $db )
{
$this -> close ( ) ;
$this -> database ( $host , $user , $pass , $db ) ;
$this -> open ( ) ;
}
function query( $query , $free = TRUE )
{
return $this -> result ;
if ( $free )
{
$this -> free ( ) ;
}
}
function free( )
{
}
function open( )
{
$this -> connectie ( $host , $user , $pass ) ;
}
function sluit( )
{
}
function __destruct( )
{
$this -> free ( ) ;
$this -> close ( ) ;
}
function mysqlnum( $query )
{
return $this -> result ;
}
function fetchassoc( $resultaat )
{
return $this -> result ;
}
}
$db = new Database( "localhost" , "root" , "" , "oop" ) ;
$res = $db -> query ( "SELECT * FROM test" ) ;
while ( $a = $db -> fetchassoc ( $res ) )
{
$a [ 'test' ] ;
}
echo $db -> mysqlnum ( $res ) ;
?>
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!
lasdesigner - 23/09/2005 21:18
PHP beginner
1) KLopt was var close; vergeten! stom.
2) MAak ik toch?
<?php
function DataBase($host, $user, $pass, $db, $pass=TRUE)
{
$this->host = $host;
$this->pass = $pass;
$this->user = $user;
$this->database = $db;
if($open)
{
$this->open();
}
}
?>
<?php
function DataBase( $host , $user , $pass , $db , $pass = TRUE )
{
$this -> host = $host ;
$this -> pass = $pass ;
$this -> user = $user ;
$this -> database = $db ;
if ( $open )
{
$this -> open ( ) ;
}
}
?>
Button - 24/09/2005 14:25
PHP ver gevorderde
@2: ja je hebt de functie wel maar je roept die functie (volgens mij) nergens aan?
nemesiskoen - 24/09/2005 16:41
PHP expert
$db = new Database("localhost","root","","oop");
$db = new Database( "localhost" , "root" , "" , "oop" ) ;
Daar wordt de functie aangeroepen.
Maar je hebt de functie verkeerd overgenomen.
function open() {
$this->connectie = mysql_connect($this->host, $this->user, $this->pass);
mysql_select_db($this->database);
}
function open( ) {
$this -> connectie = mysql_connect ( $this -> host , $this -> user , $this -> pass ) ; }
Dat is hem
Niet:
function open()
{
$this->connectie($host, $user, $pass);
mysql_select_db($this->database);
}
function open( )
{
$this -> connectie ( $host , $user , $pass ) ;
}
Button - 25/09/2005 09:12
PHP ver gevorderde
$db = new Database("localhost","root","","oop");
$db = new Database( "localhost" , "root" , "" , "oop" ) ;
maar wordt hier niet alleen de class aangemaakt?
moet het niet zo ?
$db = new Database;//class aanmaken
$db->Database("localhost","root","","oop");//functie(!) Database aanroepen?
$db = new Database; //class aanmaken
$db -> Database ( "localhost" , "root" , "" , "oop" ) ; //functie(!) Database aanroepen?
? niet
Gesponsorde links
Dit onderwerp is gesloten .