toegang via klasse
Heb er nu een voor toegang en verbinding met database. Met heel veel commentaar er tussen. (anders snap ik er zelf niks meer van ;-) )
Deze probeer ik te testen door verkeerde $host, $user, $dbnaam etc in te vullen om te kijken of ik een foutmelding krijg of dat de verbinding gelukt is. Wat ik ook invul, ik krijg geen foutmelding.
Iemand die me kan uitleggen wat ik hier fout doe?
thanks
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
dit is begin test toegang<br>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
//--D E K L A S S E T O E G A N G ---------------------------------------------
class toegang {
//-- De variabelen nodig voor toegang velenen tot MySQL
//-- en die bij de klasse horen
var $user="xxx"; //gebruikersnaam
var $password="xxx"; //wachtwoord
var $host="localhost"; //naam van computer
var $dbnaam="xxx"; //naam van database
//-- Declaratie overige variabelen
var $db_verbinding=false; //resultaat van verbinding
var $sql_resultaat=false; //resultaat opgegeven SQL opdracht
//--V E R B I N D I N G -------------------------------------------------------
//-- Bij het aanroepen van een klasse
//-- wordt een functie met hetzelfde naam
//-- in de klasse direct uitgevoerd (constructor).
//-- functie toegang wordt dus direkt uitgevoerd
//-- die de functie verbinden aanroept voor
//-- het totstand brengen van de verbinding
//-- met de database.
//--Constructor
function toegang() {
//--functie verbinden wordt in het begin uitgevoerd bij
//--aanroep van deze klasse
//--daarbij vormt "$this->" een sleutelwoord.
//--sleutelwoord geeft daarbij toegang tot
//--alle opgenomen variabelen en functies.
$this->verbinden();
}
//--Als er nog geen verbinding is met de database
//--deze aanmaken en als standaard opnemen.
function verbinden() {
if($this->$db_verbinding=false){ //--bij het verbinden moet gekeken worden
//--of er al een verbinding is
//--de eerste keer is dat er nog niet omdat
//--$db_verbinding de waarde false heeft.
//--met @ worden webserver fouten onderdrukt
//--om fouten te zien, maken we een functie foutmelding
$this->$db_verbinding=@mysql_connect($this->$host, $this->$user, $this->$password);
//--controleer of de verbinding gelukt is
if(empty($this->$db_verbinding)){
//--roep foutfunctie op met opgegeven melding
$this->foutmelding("Er is een fout opgetreden bij het maken van een verbinding");
}
//--als er geen foutmelding is dan
//--is de verbinding met de database gelukt
//--of de verbinding met de database is al aanwezig
//--nu controleren we of het mogelijk is om
//--de opgegeven database te gaan gebruiken
$db_selecteren=@mysql_select_db($this->$dbnaam, $this->$db_verbinding);
//--controleer of het selecteren van de database gelukt is
if(empty($db_selecteren)){
//--selecteren niet gelukt, geef foutmelding
$this->foutmelding("Het selecteren van de database is mislukt ");
}
//--selecteren is gelukt, kan de functie verbinden verlaten
return $this->$db_verbinding;
}
}
//--F O U T M E L D I N G -----------------------------------------------------
//--Als er een fout is opgetreden, geef hiervan een melding
//--en sluit deze script en html tags af.
function foutmelding($foutbericht){
echo $foutbericht. " <br>";
echo mysql_error()." <br/>";
echo mysql_errno();
echo '</body></html>';
exit;
}
}
?>
//--D E K L A S S E T O E G A N G ---------------------------------------------
class toegang {
//-- De variabelen nodig voor toegang velenen tot MySQL
//-- en die bij de klasse horen
var $user="xxx"; //gebruikersnaam
var $password="xxx"; //wachtwoord
var $host="localhost"; //naam van computer
var $dbnaam="xxx"; //naam van database
//-- Declaratie overige variabelen
var $db_verbinding=false; //resultaat van verbinding
var $sql_resultaat=false; //resultaat opgegeven SQL opdracht
//--V E R B I N D I N G -------------------------------------------------------
//-- Bij het aanroepen van een klasse
//-- wordt een functie met hetzelfde naam
//-- in de klasse direct uitgevoerd (constructor).
//-- functie toegang wordt dus direkt uitgevoerd
//-- die de functie verbinden aanroept voor
//-- het totstand brengen van de verbinding
//-- met de database.
//--Constructor
function toegang() {
//--functie verbinden wordt in het begin uitgevoerd bij
//--aanroep van deze klasse
//--daarbij vormt "$this->" een sleutelwoord.
//--sleutelwoord geeft daarbij toegang tot
//--alle opgenomen variabelen en functies.
$this->verbinden();
}
//--Als er nog geen verbinding is met de database
//--deze aanmaken en als standaard opnemen.
function verbinden() {
if($this->$db_verbinding=false){ //--bij het verbinden moet gekeken worden
//--of er al een verbinding is
//--de eerste keer is dat er nog niet omdat
//--$db_verbinding de waarde false heeft.
//--met @ worden webserver fouten onderdrukt
//--om fouten te zien, maken we een functie foutmelding
$this->$db_verbinding=@mysql_connect($this->$host, $this->$user, $this->$password);
//--controleer of de verbinding gelukt is
if(empty($this->$db_verbinding)){
//--roep foutfunctie op met opgegeven melding
$this->foutmelding("Er is een fout opgetreden bij het maken van een verbinding");
}
//--als er geen foutmelding is dan
//--is de verbinding met de database gelukt
//--of de verbinding met de database is al aanwezig
//--nu controleren we of het mogelijk is om
//--de opgegeven database te gaan gebruiken
$db_selecteren=@mysql_select_db($this->$dbnaam, $this->$db_verbinding);
//--controleer of het selecteren van de database gelukt is
if(empty($db_selecteren)){
//--selecteren niet gelukt, geef foutmelding
$this->foutmelding("Het selecteren van de database is mislukt ");
}
//--selecteren is gelukt, kan de functie verbinden verlaten
return $this->$db_verbinding;
}
}
//--F O U T M E L D I N G -----------------------------------------------------
//--Als er een fout is opgetreden, geef hiervan een melding
//--en sluit deze script en html tags af.
function foutmelding($foutbericht){
echo $foutbericht. " <br>";
echo mysql_error()." <br/>";
echo mysql_errno();
echo '</body></html>';
exit;
}
}
?>
Gewijzigd op 23/11/2005 12:59:00 door Zackat
Daarbij, waneer je al geen verbinding hebt kunnen maken met de db, dan moet je niet ook nog eens proberen een database te selecteren.
if(empty($this->$db_verbinding)){
wel of niet gemaakt wordt, als dat niet gemaakt kan worden dan springt het script naar de foutmelding. Omdat daar een exit zit, zal de mogelijkheid tot db_selecteren niet eens worden uitgevoerd.
ik zie ook dat ik exit; in mijn foutafhandeling vergeten ben. wordt nu aangepast in script en ook hier.
Gewijzigd op 23/11/2005 13:02:00 door zackat
if($this->db_verbinding==false)
ipv
if($this->$db_verbinding=false)
ok, opgelost, maar wil er ook iets meer van opsteken dus hierbij een andere vraag.
als ik de $ teken bij db_verbinding laat zitten krijg ik deze melding:
Notice: Undefined variable: db_verbinding
Notice: Undefined property
snap ik niet omdat ik het wel declareer met $
als ik mijn declaratie laat staan met $ en in de functie de $ verwijder, dan doet tie h't
kan iemand me vertellen waarom dat zo is?
Thanks
alle $ moeten uit de functies verwijderd worden voor de variabelen die met var $ gedeclareerd zijn.
ik snap niet waarom, als iemand dat kan uitleggen. Graag.