deprecated constructo
Ik voeg het script bij. De foutmelding staat helemaal onderaan. Kan en wil iemand mij op weg helpen.
-------------------------------------------------------------------------------------------------------------
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?php
include("../include/session.php");
//include("connect.php");
class mijn_toegang{
//Variabelen voor toegangsgegevens
var $user=USER; //Gebruikersnaam voor MySQL
var $password=PW; //Wachtwoord
var $host=HOST; //Naam (IP-adres) van de computer met MySQL
var $dbname=DBF; //Naam van de database
//Overige variabelen
var $db_verbinding=false; //Resultaat van verbinding
var $sql_result=false; //Resultaat van uitvoeren SQL-opdracht
//Constructor definiëren
function mijn_toegang(){
//Functie verbinden wordt uitgevoerd bij aanroepen klasse
$this->verbinden();
}
//Als verbinding niet bestaat,
//verbinding opzetten en gegevensbase als standaard definiëren
function verbinden(){
if ($this->db_verbinding==false){
$this->db_verbinding = @mysql_connect($this->host, $this->user, $this->password);
if(empty($this->db_verbinding)){
$this->fout("Bij opzetten verbinding");
}
$keuze = @mysql_select_db($this->dbname, $this->db_verbinding);
if(empty ($keuze)){
$this->fout("Bij selecteren van DB");
}
return $this->db_verbinding;
}
}
//Geef foutmelding weer en sluit script af
function fout($foutpunt){
echo $foutpunt . " is een fout opgetreden!<br>";
echo mysql_error() . "<br>"; //beschrijving fout
echo mysql_errno(); //foutnummer
echo "</body></html>"; //html-tags sluiten
exit;
}
//SQL-opdracht uitvoeren
function sql_opdracht ($sql){
$this->sql_result = @mysql_query($sql, $this->db_verbinding);
if (empty($this->sql_result)){
$this->fout("Bij verzenden query");
}
return $this->sql_result;
}
//Als al eerder een SQL-opdracht is uitgevoerd,
//wordt hier de array met de records weergegeven
function sql_gegevens(){
if(!empty($this->sql_result)){
$sql_array=@mysql_fetch_array($this->sql_result);
return $sql_array;
}else{
$this->fout("Bij het weergeven van de records");
}
}
//Query in tabelvorm weergeven met prijzen
function sql_in_tabel($sql, $tab_titel="", $prijs1=" ", $prijs2=" "){
//Alleen uitvoeren als query is doorgegeven
if(!empty($sql)){
//Kop weergeven indien aanwezig
if(!empty($tab_titel)){
echo "<br><b><font size=\"+2\" color=\"#999999\">";
echo htmlentities($tab_titel);
echo "</font></b><br>\n";
}
//ZFunctie sql_opdracht aanroepen om SQL-opdracht uit te voeren
$this->sql_opdracht($sql);
echo "<table border=\"0\"><tr>";
$aant_kolommen=mysql_num_fields($this->sql_result);
$aant_rijen=mysql_num_rows($this->sql_result);
//kolomkoppen
for($kolom=0; $kolom<$aant_kolommen; $kolom++){
echo "<th bgcolor=\"#BBBBBB\"> ";
echo mysql_field_name($this->sql_result, $kolom);
echo " </font></th>";
}
echo "</tr>\n";
//Rijen vullen
while($rij=$this->sql_gegevens()){
echo"<tr bgcolor=\"#DDDDDD\">";
for($kolom=0; $kolom<$aant_kolommen; $kolom++){
$field_name=mysql_field_name($this->sql_result, $kolom);
if($field_name==$prijs1 OR $field_name==$prijs2){
$format_euro=$this->format_euro($rij[$kolom]);
echo "<td align=\"right\"> ". $format_euro . " </td>";
}else{
echo "<td> ". ($rij[$kolom]) . " </td>";
}
}
echo "</tr>\n";
}
echo "</table>";
}
}
//Eerste waarde van een resultaat-array van een query in kolom weergeven
function sql_in_kolom($sql, $tab_titel="", $prijs1=" ", $prijs2=" "){
if(!empty($sql)){
//Eventueel kop overnemen
if(!empty($tab_titel)){
echo "<br><b><font size=\"+2\" color=\"#999999\">";
echo htmlentities($tab_titel);
echo "</font></b><br>\n";
}
//Functie sql_opdracht aanroepen om SQL-opdracht uit te voeren
$this->sql_opdracht($sql);
$recordset=$this->sql_gegevens();
echo "<table border=\"0\"><tr>";
$aant_rijen=mysql_num_fields($this->sql_result);
//Rijen vullen
for($rij=0; $rij<$aant_rijen; $rij++){
//alleen weergeven als element in veld staat
if(!empty($recordset[$rij])){
$field_name=mysql_field_name($this->sql_result, $rij);
echo "<tr bgcolor=\"#DDDDDD\" align=\"left\">";
echo "<td bgcolor=\"#BBBBBB\"><b>\n";
echo $field_name;
echo "</b></td>";
if($field_name==$prijs1 OR $field_name==$prijs2){
$format_euro=$this->format_euro($recordset[$rij]);
echo "<td> ". $format_euro . " </td>";
}else{
echo "<td> ". $recordset[$rij] . " </td>";
}
echo "</td></tr>\n";
}
}
echo "</table>\n";
}
}
function format_euro($bedrag){
if(isset($bedrag)){
$euro=number_format($bedrag,2,',','.') ." EUR";
}
return $euro;
}
}
$db=new mijn_toegang();
?>
include("../include/session.php");
//include("connect.php");
class mijn_toegang{
//Variabelen voor toegangsgegevens
var $user=USER; //Gebruikersnaam voor MySQL
var $password=PW; //Wachtwoord
var $host=HOST; //Naam (IP-adres) van de computer met MySQL
var $dbname=DBF; //Naam van de database
//Overige variabelen
var $db_verbinding=false; //Resultaat van verbinding
var $sql_result=false; //Resultaat van uitvoeren SQL-opdracht
//Constructor definiëren
function mijn_toegang(){
//Functie verbinden wordt uitgevoerd bij aanroepen klasse
$this->verbinden();
}
//Als verbinding niet bestaat,
//verbinding opzetten en gegevensbase als standaard definiëren
function verbinden(){
if ($this->db_verbinding==false){
$this->db_verbinding = @mysql_connect($this->host, $this->user, $this->password);
if(empty($this->db_verbinding)){
$this->fout("Bij opzetten verbinding");
}
$keuze = @mysql_select_db($this->dbname, $this->db_verbinding);
if(empty ($keuze)){
$this->fout("Bij selecteren van DB");
}
return $this->db_verbinding;
}
}
//Geef foutmelding weer en sluit script af
function fout($foutpunt){
echo $foutpunt . " is een fout opgetreden!<br>";
echo mysql_error() . "<br>"; //beschrijving fout
echo mysql_errno(); //foutnummer
echo "</body></html>"; //html-tags sluiten
exit;
}
//SQL-opdracht uitvoeren
function sql_opdracht ($sql){
$this->sql_result = @mysql_query($sql, $this->db_verbinding);
if (empty($this->sql_result)){
$this->fout("Bij verzenden query");
}
return $this->sql_result;
}
//Als al eerder een SQL-opdracht is uitgevoerd,
//wordt hier de array met de records weergegeven
function sql_gegevens(){
if(!empty($this->sql_result)){
$sql_array=@mysql_fetch_array($this->sql_result);
return $sql_array;
}else{
$this->fout("Bij het weergeven van de records");
}
}
//Query in tabelvorm weergeven met prijzen
function sql_in_tabel($sql, $tab_titel="", $prijs1=" ", $prijs2=" "){
//Alleen uitvoeren als query is doorgegeven
if(!empty($sql)){
//Kop weergeven indien aanwezig
if(!empty($tab_titel)){
echo "<br><b><font size=\"+2\" color=\"#999999\">";
echo htmlentities($tab_titel);
echo "</font></b><br>\n";
}
//ZFunctie sql_opdracht aanroepen om SQL-opdracht uit te voeren
$this->sql_opdracht($sql);
echo "<table border=\"0\"><tr>";
$aant_kolommen=mysql_num_fields($this->sql_result);
$aant_rijen=mysql_num_rows($this->sql_result);
//kolomkoppen
for($kolom=0; $kolom<$aant_kolommen; $kolom++){
echo "<th bgcolor=\"#BBBBBB\"> ";
echo mysql_field_name($this->sql_result, $kolom);
echo " </font></th>";
}
echo "</tr>\n";
//Rijen vullen
while($rij=$this->sql_gegevens()){
echo"<tr bgcolor=\"#DDDDDD\">";
for($kolom=0; $kolom<$aant_kolommen; $kolom++){
$field_name=mysql_field_name($this->sql_result, $kolom);
if($field_name==$prijs1 OR $field_name==$prijs2){
$format_euro=$this->format_euro($rij[$kolom]);
echo "<td align=\"right\"> ". $format_euro . " </td>";
}else{
echo "<td> ". ($rij[$kolom]) . " </td>";
}
}
echo "</tr>\n";
}
echo "</table>";
}
}
//Eerste waarde van een resultaat-array van een query in kolom weergeven
function sql_in_kolom($sql, $tab_titel="", $prijs1=" ", $prijs2=" "){
if(!empty($sql)){
//Eventueel kop overnemen
if(!empty($tab_titel)){
echo "<br><b><font size=\"+2\" color=\"#999999\">";
echo htmlentities($tab_titel);
echo "</font></b><br>\n";
}
//Functie sql_opdracht aanroepen om SQL-opdracht uit te voeren
$this->sql_opdracht($sql);
$recordset=$this->sql_gegevens();
echo "<table border=\"0\"><tr>";
$aant_rijen=mysql_num_fields($this->sql_result);
//Rijen vullen
for($rij=0; $rij<$aant_rijen; $rij++){
//alleen weergeven als element in veld staat
if(!empty($recordset[$rij])){
$field_name=mysql_field_name($this->sql_result, $rij);
echo "<tr bgcolor=\"#DDDDDD\" align=\"left\">";
echo "<td bgcolor=\"#BBBBBB\"><b>\n";
echo $field_name;
echo "</b></td>";
if($field_name==$prijs1 OR $field_name==$prijs2){
$format_euro=$this->format_euro($recordset[$rij]);
echo "<td> ". $format_euro . " </td>";
}else{
echo "<td> ". $recordset[$rij] . " </td>";
}
echo "</td></tr>\n";
}
}
echo "</table>\n";
}
}
function format_euro($bedrag){
if(isset($bedrag)){
$euro=number_format($bedrag,2,',','.') ." EUR";
}
return $euro;
}
}
$db=new mijn_toegang();
?>
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; mijn_toegang has a deprecated constructor in /volume1/web/raavk_com/app_statistiek/mijn_toegang.inc.php on line 7 Call Stack: 0.0001 363024 1. {main}() /volume1/web/raavk_com/app_statistiek/overzicht.php:0
Deze heet nu logischerwijs __construct(....) { ..... }
http://php.net/manual/en/language.oop5.decon.php
Mysql_*****() functies zijn trouwens ook al uit. Pas deze aan naar MySQLi of PDO.
Gewijzigd op 22/02/2019 15:57:31 door - Ariën -
class mijn_toegang
Zou dat niet beter class MijnDatabase kunnen heten?
var $user=USER;
var $password=PW;
var $host=HOST;
var $dbname=DBF;
Geef deze mee als argumenten aan de constructor. Het heeft geen enkele zin om deze binnen een object bij te houden.
function mijn_toegang
Komt te vervallen ten faveure van __construct(), hier zou je parameters aan mee kunnen geven.
function verbinden()
De inhoud van deze functie kun je overzetten naar __construct(). Als het ook de bedoeling is om min of meer af te dwingen om via een object van deze klasse te communiceren met je database is het misschien beter om $db_verbinding gewoon intern op te slaan, en deze verder niet vrij toegankelijk te maken.
Bij het maken van de verbinding zou je ook nog andere opties mee kunnen geven zoals een poortnummer en, nog veel belangrijker, een character encoding.
function fout($foutpunt)
Op het moment dat er iets onverwachts gebeurt is het niet de taak van de database om deze fouten dan en daar af te handelen. Dit zou een ander proces verder op moeten pikken. Dit bijvoorbeeld omdat een fout op de ontwikkelomgeving waarschijnlijk een andere afhandeling heeft als op de productieomgeving. Dit kun je dan op een andere plek programmeren en besluiten wat je doet op grond van de omgeving waar deze code in uitgevoerd wordt. Voor dit alles zou je exceptions moeten throwen en (ergens anders) moeten catchen.
function sql_opdracht ($sql)
Weet niet of empty echt een goede controle is. Een query is wel echt altijd fout als er false wordt geretourneerd. Je zou dus eigenlijk expliciet op deze waarde moeten controleren, en op dat moment een exception moeten throwen.
function sql_gegevens()
Dit klint als een hele omslachtige manier om een record op te halen. Ook bevat fetch_array() veel dubbele informatie (zowel onder numerieke alsook associatieve indexen?). fetch_assoc() lijkt mij een betere default, of je geeft een parameter mee waarmee je kunt kiezen hoe informatie geretourneerd dient te worden.
function sql_in_tabel($sql, $tab_titel="", $prijs1=" ", $prijs2=" ")
Dit betreft opmaak van een (specifiek) resultaat, dit hoort niet thuis in deze klasse.
function sql_in_kolom($sql, $tab_titel="", $prijs1=" ", $prijs2=" ")
idem dito
function format_euro($bedrag)
Dit is een formatteringsfunctie, deze losse flodder hoort ook niet thuis in deze klasse.
Gewijzigd op 22/02/2019 16:42:42 door Thomas van den Heuvel
Bedankt voor de informatie. Het gaat nu wel lukken.