[OOP] Mysql resource benaderen in class
Ik ben bezig met een stukje OOP. Ben daar vrij nieuw in en kom even niet verder met een database connectie binnen mijn class.
Omdat de hoster nog PHP4 draait heb ik de code ook daaraan aangepast.
Ik het nu volgende code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class MenuKaart {
var $connectie;
function __construct() {
$this->connectie = mysql_connect('localhost','user','password');
mysql_select_db('database', $this->connectie);
}
function toon_kaart () {
$result = mysql_query('SELECT * FROM menu_hoofdcategorie', $this->connectie);
while ($line = mysql_fetch_array($result)) {
echo $line['h_id'];
}
}
}
$MenuKaart = new MenuKaart();
$MenuKaart->toon_kaart();
?>
class MenuKaart {
var $connectie;
function __construct() {
$this->connectie = mysql_connect('localhost','user','password');
mysql_select_db('database', $this->connectie);
}
function toon_kaart () {
$result = mysql_query('SELECT * FROM menu_hoofdcategorie', $this->connectie);
while ($line = mysql_fetch_array($result)) {
echo $line['h_id'];
}
}
}
$MenuKaart = new MenuKaart();
$MenuKaart->toon_kaart();
?>
Probleem is dat ik de connectie bij het aanmaken van de class tot stand wil brengen en dan gewoon kan benaderen in iedere method. Bovenstaande code geeft volgende error:
"Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in..."
Wanneer ik echter de 2 regels van de constructor in de toon_kaart method plaats dan werkt het wel.
Quote:
Dan kun je binnenkort opnieuw beginnen, versie 4 wordt over enkele dagen niet meer ondersteund.Omdat de hoster nog PHP4 draait heb ik de code ook daaraan aangepast.
Tip: Zoek een hostingprovider die wel tijdig onderhoud pleegt en laat je nooit meer beperken door providers die uitblinken in gebrekkig onderhoud.
Hmm, waarschijnlijk is het probleem dat PHP4 niet '__construct()' aanroept bij het maken van een object. PHP4 zoekt naar de functie MenuKaart(), en die bestaat niet. __construct() wordt dus nooit uitgevoerd. Waarschijnlijk moet je dus __construct() veranderen in MenuKaart()
Daar zeg je wat, dat is inderdaad een probleem. Dat is ook de reden waarom je niet meer met versie 4 wilt werken, die is zeer beperkt met de OOP-mogelijkheden.
Ben het roerend met je eens. Het is echter voor een ander dat ik dit scriptje maak. De site is gehost bij transip, ik kan niet begrijpen dat ze niet updaten of dit moet zeer binnenkort gebeuren.
@Hylke:
Idd! Je hebt gelijk met die __construct. Probleem is dat ik begonnen ben met OOP te leren in PHP5, en dan sluipen deze fouten erin.
Bedankt!
Want ze zouden het gewoon moeten doen. (upgraden naar php5)
Ze zullen zelf toch ook wel snappen dat dat beter is voor iedereen,
Het draagt toch weer een beetje bij aan de verbetering van de wereld
transip.nl, die hebben toch echt versie 5.2 op (een deel van?) hun servers draaien. Zoek dus even uit wat er aan de hand is, het lijkt erop dat je niet meer met de ouwe zooi van versie 4 hoeft te werken.
Zie Ik denk dat ze nog de PHP4 versie naast de PHP 5 versie hebben draaien. Je kan dan door een bestand .php5 mee te geven als PHP5 draaien, of standaard door een .htacces in de root dir neer te zetten, ik zal ff kijken of ik nog terug kan vinden.
Gevonden, iets sneller dan ik dacht :) Bij mijn hoster is dat zo, geloof dat het algemeen is voor apache.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman