Ik was een beetje aan het oefenen met php en de klasses en ik wil dus dat de connectie in een variable word opgeslagen. Ik weet niet of dit de beste manier is maar zo probeer ik het in iedergeval maar het werkt niet.

Ik krijg de error dat de functie niet vindbaar is (mischien is dit mijn fout maar weet het niet zeker).

Dit is de code die ik hiervoor gebruik:

<?php
class database {
		
		function __construct() {
			$this->dbhost = 'xxxx';
			$this->dbname = 'xxxx';
			$this->dbuser = 'xxxx';
			$this->dbpass = 'xxxx';
			$this->dbconn = connect();
		}
		
		public function connect() {
			if (!$con = mysql_connect($this->dbhost, $this->dbuser, $this->dbpass)) {
				trigger_error(mysql_error());
			}
			else {
				if (!$con = mysql_select_db($this->dbname, $con)) {
					trigger_error(mysql_error());
				}
				else {
					echo 'Connectie succesvol gemaakt <br />';
				}
			}
		}
			
	}
?>


Ik hoop dat jullie mij kunnen helpen en eventueel mij mijn fouten laten inzien.
Als je het op die manier wilt aanpakken, zal het wel dit moeten zijn:
<?php
$this->dbconn = $this->connect();
?>
Verder echo je normaal gesproken geen gegevens vanuit je klasse en ook is het gebruik van trigger_error() niet de juiste oplossing. Gebruik liever Exceptions als je OO aan het programeren bent.
Bedankt voor je reactie ik probeer het even en ik zal meteen naar die exceptions kijken.

edit: het werkt op deze manier bedankt.
Ik bumb deze even zodat ik niet en heel nieuw topic hoef aan te maken.

Ik ga net verder met mijn db klasse maar ik denk dat ik iets fout heb gedaan want bij elke mysql functie die ik wil uitvoeren krijg ik deze error: supplied argument is not a valid MySQL-Link resource.

Kan iemand mij uitleggen wat ik fout gedaan heb want ik ben er nu al even mee bezig en ik ben er nog niet achter gekomen waar de fout precies ligt of wat ik moet aanpassen om deze fout te verhelpen.

Dit werkt al niet :


<?php
class database {
		
		/**
		 * Class __construct()
		 * Create variables
		 */
	 
		function __construct() {
			$this->dbhost = 'xxxx';
			$this->dbname = 'xxxx';
			$this->dbuser = 'xxxx';
			$this->dbpass = 'xxxx';
			$this->dbconn = null;
			$this->connect();
		}
		
		public function connect() {
			if(!$this->dbconn) {
				if (!$this->dbconn = mysql_connect($this->dbhost, $this->dbuser, $this->dbpass)) {
					trigger_error(mysql_error());
				} else {
					if (!$this->dbconn = @mysql_select_db($this->dbname)) {
						trigger_error(mysql_error());
					} 
				}
			}
        }

		function __destruct()
		{
			if (mysql_close($this->dbconn)) {
				$this->dbconn = null;
			}
		}
	}
?>
ik gok dat het iets te maken heeft met het @

Deze onderdrukt namelijk foutmeldingen.
Zonder komt er hetzelfde dus ik betwijfel of het daar aan ligt.
je hebt trouwens 3x dezelfde voorwaarde, op 3 verschillende plaatsen:

if(!$this->dbconn)


ik denk dat ie daarop vast loopt.
Dit is alleen een check of er al connectie is maar die is er niet dus gaat het gewoon verder. Ik denk zelf dat het ergens in het connectie maken zelf zit.


edit: als ik mysql_stat gebruik krijg ik wel gewoon gegevens door dus er is toch een connectie.
edit2: geen flauw idee waarom maar het werkt nu...
Ik wil nu op een valid manier dingen uit de database halen vanuit een andere klasse maar ik weet niet precies hoe.

Even een voorbeeltje: ik wil bij user_exists in users klasse dus kijken of de user is de database bestaat. Ik wil die info dus ophalen via mijn database klasse hoe doe ik dat precies.

<?php
class database {
		
		// Functies hier
		
		public function query($sql) {
			// query uitvoeren
		}

		// Functies daar
		
	}
	
	class user {
		
		public function user_exists() {
			// Bestaat user?
		}
		
		
	}
?>


edit: was vergeten te vermelden dat mijn mysql_close functie niet werkt als ik iets verkrijg in een andere klasse

Reageren