Fatal error: Call to a member function query() on a non-object
Ik ben bezig met een script aan het schrijven alleen krijg ik steeds een fout bij het gebruik van classen de foutmelding is
Fatal error: Call to a member function query() on a non-object
Zou iemand mij hierbij kunnen helpen
Hieronder de bestanden.
mysql.php
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
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
<?php
defined('VALID_CON') or die ('Directe toegang tot deze locatie is niet toegestaan.');
define('DEBUG_MODE', true);
define('CONFIRMATION', true);
define('MESSAGE_RETURN', true);
class dbConnect{
private $dbHost = 'localhost';
private $dbName = 'bleaders';
private $dbUser = 'root';
private $dbPass = '';
function __construct(){
$link = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
$select = mysql_select_db($this->dbName);
if (!$link && !$select){
if (DEBUG_MODE){
$message = "Er is een fout opgetreden tijdens het verbinden.\n";
$message .= "MySQL fout: ".mysql_error()."\n";
$message .= "MySQL fout nummer: ".mysql_errno()."\n";
$this->melding($message);
}
else{
$message = "Er is een fout opgetreden tijdens het verbinden.\n";
$this->melding($message);
}
}
else{
if (CONFIRMATION){
$message = "Er is een verbinding gemaakt met de database.";
$this->melding($message);
}
}
}
function query($query = '', $taak = 0, $melding = ''){
$result = mysql_query($query);
if (!$result){
if (DEBUG_MODE){
$message = "Er is een fout opgetreden bij het uitvoeren van deze query.\n";
$message .= "MySQL fout: ".mysql_error()."\n";
$message .= "MySQL fout nummer: ".mysql_errno()."\n";
$this->melding($message);
}
else{
$message = "Er is een fout opgetreden tijden het uivoeren van deze query.\n";
$this->melding($message);
}
}
else{
if (CONFIRMATION){
if ($taak < 4){
$this->melding($melding);
}
else{
$message = "De resultaten zijn uit de database opgehaald.";
}
}
else{
if (MELDING){
if ($taak < 4){
$this->melding($melding);
}
}
}
if ($taak == 4){
return $result;
}
}
}
private function melding($melding = ''){
echo "<script language=\"javascript\">alert (\"$melding\");</script>";
}
function __destruct(){
mysql_close();
}
}
?>
defined('VALID_CON') or die ('Directe toegang tot deze locatie is niet toegestaan.');
define('DEBUG_MODE', true);
define('CONFIRMATION', true);
define('MESSAGE_RETURN', true);
class dbConnect{
private $dbHost = 'localhost';
private $dbName = 'bleaders';
private $dbUser = 'root';
private $dbPass = '';
function __construct(){
$link = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
$select = mysql_select_db($this->dbName);
if (!$link && !$select){
if (DEBUG_MODE){
$message = "Er is een fout opgetreden tijdens het verbinden.\n";
$message .= "MySQL fout: ".mysql_error()."\n";
$message .= "MySQL fout nummer: ".mysql_errno()."\n";
$this->melding($message);
}
else{
$message = "Er is een fout opgetreden tijdens het verbinden.\n";
$this->melding($message);
}
}
else{
if (CONFIRMATION){
$message = "Er is een verbinding gemaakt met de database.";
$this->melding($message);
}
}
}
function query($query = '', $taak = 0, $melding = ''){
$result = mysql_query($query);
if (!$result){
if (DEBUG_MODE){
$message = "Er is een fout opgetreden bij het uitvoeren van deze query.\n";
$message .= "MySQL fout: ".mysql_error()."\n";
$message .= "MySQL fout nummer: ".mysql_errno()."\n";
$this->melding($message);
}
else{
$message = "Er is een fout opgetreden tijden het uivoeren van deze query.\n";
$this->melding($message);
}
}
else{
if (CONFIRMATION){
if ($taak < 4){
$this->melding($melding);
}
else{
$message = "De resultaten zijn uit de database opgehaald.";
}
}
else{
if (MELDING){
if ($taak < 4){
$this->melding($melding);
}
}
}
if ($taak == 4){
return $result;
}
}
}
private function melding($melding = ''){
echo "<script language=\"javascript\">alert (\"$melding\");</script>";
}
function __destruct(){
mysql_close();
}
}
?>
premiumclasses.php
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
160
161
162
163
164
165
166
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
160
161
162
163
164
165
166
<?php
defined('VALID_CON') or die ('Directe toegang tot deze locatie is niet toegestaan.');
include 'includes/mysql.php';
//functies en classen behorende bij admin.administrator.php
$dbObj = new dbConnect;
class premiumActivator {
//funcite om alle gebruikers die nog geen betaald lidmaatschap hebben te tonen.
function showNotActive(){
$query = "SELECT user_id FROM jos_premium";
echo 'Nou tot hier komt hij wel <br>';
$this->result = $dbObj->query($query, 4, '');
$users = array();
$teller = 0;
while ($row = mysql_fetch_array($this->result)){
$users[$teller] = $row['id'];
$teller++;
}
mysql_free_result($this->result);
$query = "SELECT * FROM jos_users";
$this->result = $dbObj->query($query, 4, '');
while ($rows = mysql_fetch_array($this->result)){
foreach ($users as $premiums){
if ($premiums == $rows['id']){
$isPremium = true;
}
}
if ($isPremium == true){
}else{
echo 'Deze gebruiker heeft nog geen betaalde lidmaatschap.<br>';
echo 'Gebruikersnaam: '.$rows['username'].'<br>';
}
}
mysql_free_result($this->result);
}
//functie om alle gebruikers met een betaalde lidmaatschap te tonen.
function showActive(){
$query = "SELECT user_id FROM jos_premium";
$this->result = $dbObj->query($query, 4, '');
$users = array();
$aantal = mysql_num_rows($this->result);
if ($aantal < 1){
echo 'Er zijn geen gebruikers met betaalde lidmaatschappen.';
}
else{
$teller = 0;
while ($row = mysql_fetch_array($this->result)){
$users[$teller] = $row['id'];
$teller++;
}
mysql_free_result($this->result);
foreach ($users as $premiums){
$query = "SELECT * FROM jos_users WHERE id = $premium";
$this->result = $dbObj->query($query, 4, '');
$row = mysql_fetch_array($this->result);
echo 'Gebruikersnaam: '.$row['username'].'<br>';
echo 'Gebruikersnummer: '.$row['id'].'<br>';
mysql_free_result($this->result);
}
}
}
//functie om een gebruiker te activeren als een betaalde lidmaatschap.
function activateUser($userid, $datums, $datume, $reminder, $debnr){
$query = "INSERT INTO jos_premiums SET user_id = $userid, date_start = $datums, date_end = $datume, reminder = $reminder, debiteuren_nr = $debnr";
$this->result = mysql_query($query);
if (!$this->result){
echo 'Er is een fout opgetreden bij het toevoegen van deze gebruiker.';
}
else{
echo 'De gebruiker is geactiveerd.';
}
}
//functie om alle debiteuren in te zien.
function showDeb(){
$query = "SELECT id FROM jos_users";
$this->result = mysql_query($query) or die ('Kan deze query niet uitvoeren.');
$users = array();
$teller = 0;
while ($row = mysql_fetch_array($this->result)){
$users[$teller] = $row['id'];
$teller++;
}
mysql_free_result($this->result);
foreach ($users as $user){
$query = "SELECT * FROM debiteuren WHERE user_id = $user";
$this->result = mysql_query($query) or die ('Kan de query niet uitvoeren.');
$aantal = mysql_num_rows($this->result);
if ($aantal < 1){
mysql_free_result($this->result);
}
else{
while ($row = mysql_fetch_array($this->result)){
echo '<b>Debiteurennr</b>: '.$row['debiteuren_nr'].'<br>';
echo '<b>Naam:</b> '.$row['naam'].'<br>';
echo '<b>Bedrijf:</b> '.$row['bedrijf'].'<br>';
echo '<b>Adres:</b> '.$row['adres'].'<br>';
echo '<b>Plaats:</b> '.$row['plaats'].'<br>';
echo '<b>Postcode:</b> '.$row['postcode'].'<br>';
$getSQL = "SELECT * FROM facturen WHERE debiteuren_nr = ".$row['debiteuren_nr'];
$sqlReturn = $dbObj->query($query, 4, '');
$facturen = mysql_num_rows($sqlReturn);
echo '<b>Facturen:</b> '.$facturen.'<br>';
mysql_free_result($sqlReturn);
echo '<hr>';
}
mysql_free_result($this->result);
}
}
}
//facturen van de debiteuren inzien.
function showFactuur($debnr){
$query = "SELECT * FROM facturen WHERE debiteuren_nr = $debnr";
$this->result = $dbObj->query($query, 4, '');
$aantal = mysql_num_rows($this->result);
if ($aantal < 1){
echo 'Deze gebruiker heeft geen facturen (controleer of deze gebruiker zich wel aangemeld heeft).';
mysql_free_result($this->result);
}
else{
while ($row = mysql_fetch_array($this->result)){
echo 'Factuurnr: '.$row['factuur_nr'].'<br>';
echo 'Factuurdatum: '.$row['datum'].'<br>';
echo 'Status: In behandeling';
echo '<hr>';
}
mysql_free_result($this->result);
}
}
//factuur status wijzigen
function changeFactuurState($factuurnr){
$query = "UPDATE facturen SET status = $status WHERE factuur_nr = $factuurnr";
$this->result = $dbObj->query($query, 1, '');
if (!$this->result){
echo 'Er is een fout opgetreden tijdens het wijzigen van de status.';
}
else{
conRedirect('index.php?action=premium&taak=active');
}
}
//factuur downloaden.
function dowloadFactuur($factuurnr){
}
function blockPremium($userid){
$query = "UPDATE jos_premium SET blocked = 1 WHERE user_id = $userid";
$this->result = $dbObj->query($this->result);
if (!$this->result){
echo 'Er is een fout opgetreden bij het blokkeren van deze gebruikers.';
}
else{
conRedirect('index.php?action=premium&taak=active');
}
}
function unblockPremium($userid){
$query = "UPDATE jos_premium SET blocked = 0 WHERE user_id = $userid";
$this->result = $dbObj->query($this->result);
if (!$this->result){
echo 'Er is een fout opgetreden bij het deblokkeren van deze gebruikers.';
}
else{
conRedirect('index2.php?action=premium&taak=active');
}
}
}
unset($dbObj);
?>
defined('VALID_CON') or die ('Directe toegang tot deze locatie is niet toegestaan.');
include 'includes/mysql.php';
//functies en classen behorende bij admin.administrator.php
$dbObj = new dbConnect;
class premiumActivator {
//funcite om alle gebruikers die nog geen betaald lidmaatschap hebben te tonen.
function showNotActive(){
$query = "SELECT user_id FROM jos_premium";
echo 'Nou tot hier komt hij wel <br>';
$this->result = $dbObj->query($query, 4, '');
$users = array();
$teller = 0;
while ($row = mysql_fetch_array($this->result)){
$users[$teller] = $row['id'];
$teller++;
}
mysql_free_result($this->result);
$query = "SELECT * FROM jos_users";
$this->result = $dbObj->query($query, 4, '');
while ($rows = mysql_fetch_array($this->result)){
foreach ($users as $premiums){
if ($premiums == $rows['id']){
$isPremium = true;
}
}
if ($isPremium == true){
}else{
echo 'Deze gebruiker heeft nog geen betaalde lidmaatschap.<br>';
echo 'Gebruikersnaam: '.$rows['username'].'<br>';
}
}
mysql_free_result($this->result);
}
//functie om alle gebruikers met een betaalde lidmaatschap te tonen.
function showActive(){
$query = "SELECT user_id FROM jos_premium";
$this->result = $dbObj->query($query, 4, '');
$users = array();
$aantal = mysql_num_rows($this->result);
if ($aantal < 1){
echo 'Er zijn geen gebruikers met betaalde lidmaatschappen.';
}
else{
$teller = 0;
while ($row = mysql_fetch_array($this->result)){
$users[$teller] = $row['id'];
$teller++;
}
mysql_free_result($this->result);
foreach ($users as $premiums){
$query = "SELECT * FROM jos_users WHERE id = $premium";
$this->result = $dbObj->query($query, 4, '');
$row = mysql_fetch_array($this->result);
echo 'Gebruikersnaam: '.$row['username'].'<br>';
echo 'Gebruikersnummer: '.$row['id'].'<br>';
mysql_free_result($this->result);
}
}
}
//functie om een gebruiker te activeren als een betaalde lidmaatschap.
function activateUser($userid, $datums, $datume, $reminder, $debnr){
$query = "INSERT INTO jos_premiums SET user_id = $userid, date_start = $datums, date_end = $datume, reminder = $reminder, debiteuren_nr = $debnr";
$this->result = mysql_query($query);
if (!$this->result){
echo 'Er is een fout opgetreden bij het toevoegen van deze gebruiker.';
}
else{
echo 'De gebruiker is geactiveerd.';
}
}
//functie om alle debiteuren in te zien.
function showDeb(){
$query = "SELECT id FROM jos_users";
$this->result = mysql_query($query) or die ('Kan deze query niet uitvoeren.');
$users = array();
$teller = 0;
while ($row = mysql_fetch_array($this->result)){
$users[$teller] = $row['id'];
$teller++;
}
mysql_free_result($this->result);
foreach ($users as $user){
$query = "SELECT * FROM debiteuren WHERE user_id = $user";
$this->result = mysql_query($query) or die ('Kan de query niet uitvoeren.');
$aantal = mysql_num_rows($this->result);
if ($aantal < 1){
mysql_free_result($this->result);
}
else{
while ($row = mysql_fetch_array($this->result)){
echo '<b>Debiteurennr</b>: '.$row['debiteuren_nr'].'<br>';
echo '<b>Naam:</b> '.$row['naam'].'<br>';
echo '<b>Bedrijf:</b> '.$row['bedrijf'].'<br>';
echo '<b>Adres:</b> '.$row['adres'].'<br>';
echo '<b>Plaats:</b> '.$row['plaats'].'<br>';
echo '<b>Postcode:</b> '.$row['postcode'].'<br>';
$getSQL = "SELECT * FROM facturen WHERE debiteuren_nr = ".$row['debiteuren_nr'];
$sqlReturn = $dbObj->query($query, 4, '');
$facturen = mysql_num_rows($sqlReturn);
echo '<b>Facturen:</b> '.$facturen.'<br>';
mysql_free_result($sqlReturn);
echo '<hr>';
}
mysql_free_result($this->result);
}
}
}
//facturen van de debiteuren inzien.
function showFactuur($debnr){
$query = "SELECT * FROM facturen WHERE debiteuren_nr = $debnr";
$this->result = $dbObj->query($query, 4, '');
$aantal = mysql_num_rows($this->result);
if ($aantal < 1){
echo 'Deze gebruiker heeft geen facturen (controleer of deze gebruiker zich wel aangemeld heeft).';
mysql_free_result($this->result);
}
else{
while ($row = mysql_fetch_array($this->result)){
echo 'Factuurnr: '.$row['factuur_nr'].'<br>';
echo 'Factuurdatum: '.$row['datum'].'<br>';
echo 'Status: In behandeling';
echo '<hr>';
}
mysql_free_result($this->result);
}
}
//factuur status wijzigen
function changeFactuurState($factuurnr){
$query = "UPDATE facturen SET status = $status WHERE factuur_nr = $factuurnr";
$this->result = $dbObj->query($query, 1, '');
if (!$this->result){
echo 'Er is een fout opgetreden tijdens het wijzigen van de status.';
}
else{
conRedirect('index.php?action=premium&taak=active');
}
}
//factuur downloaden.
function dowloadFactuur($factuurnr){
}
function blockPremium($userid){
$query = "UPDATE jos_premium SET blocked = 1 WHERE user_id = $userid";
$this->result = $dbObj->query($this->result);
if (!$this->result){
echo 'Er is een fout opgetreden bij het blokkeren van deze gebruikers.';
}
else{
conRedirect('index.php?action=premium&taak=active');
}
}
function unblockPremium($userid){
$query = "UPDATE jos_premium SET blocked = 0 WHERE user_id = $userid";
$this->result = $dbObj->query($this->result);
if (!$this->result){
echo 'Er is een fout opgetreden bij het deblokkeren van deze gebruikers.';
}
else{
conRedirect('index2.php?action=premium&taak=active');
}
}
}
unset($dbObj);
?>
Binnen de klasse bestaat $dbObj namelijk nog niet. Je instantieert wel op regel 5, maar dat is niet binnen de klasse premiumActivator...
je premiumActivator kent de $dbObj niet.
Je kunt die meegeven met aan de constructor
Code (php)
Je aanroep:
Dan in je functies niet:
$dbObj->query($query, 4, '');
Maar:
$this->dbObj->query($query, 4, '');
premiumActivator::functie
Het is niet echt een echte klasse maar meer een namespace idee en dan werkt het niet.
Dan zul je dus aan elke statische aanroep wel je database object mee moeten geven. Elke methode in de klasse premiumActivator die dat object nodig heeft, zal dan ook zo'n parameter moeten accepteren...