Class in functie
In mijn index.php require ik require.inc.php met daarin alle standaard zooi, oa dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
require('r/config.inc.php');
require('r/classes.inc.php');
require('r/functions.inc.php');
$db = new dbclass();
$db->dbc_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die($db->dbc_error().' ('.$db->dbc_errno().')');
$db->dbc_select_db(DB_DATABASE_NAME) or die($db->dbc_error().' ('.$db->dbc_errno().')');
define('IP', ip());
if (banned(IP)) {
die('Je bent (tijdelijk) geweigerd op de site');
}
?>
require('r/config.inc.php');
require('r/classes.inc.php');
require('r/functions.inc.php');
$db = new dbclass();
$db->dbc_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die($db->dbc_error().' ('.$db->dbc_errno().')');
$db->dbc_select_db(DB_DATABASE_NAME) or die($db->dbc_error().' ('.$db->dbc_errno().')');
define('IP', ip());
if (banned(IP)) {
die('Je bent (tijdelijk) geweigerd op de site');
}
?>
Alle variabelen enzo kloppen dus daar ligt het niet aan. Nu gebruik ik in veel functies queries die ik dus eigenlijk met die class wil doen. Daarvoor zal ik in de functie de class moeten gebruiken, maar dit wil niet werken. Als ik het niet in een functie zet werkt het gewoon, maar zodra de query in een functie wordt uitgevoerd krijg ik foutmeldingen.
Eén van de functies, de eerst waarbij het dus al mis gaat:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Dit levert de volgende melding op:
Quote:
Fatal error: Call to a member function on a non-object in /var/www/html/dutchcamel/r/functions.inc.php on line 3
Als ik de functie iets aanpas tot:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
function banned($ip) {
global $db;
$db->dbc_query("SELECT id FROM banned WHERE ip = '".$ip."' AND (date > NOW() OR date = '0000-00-00 00:00:00') LIMIT 0, 1") or die($db->dbc_error().' ('.$db->dbc_errno().')');
if (mysql_num_rows($db->dbc_get('result')) == 0) {
return FALSE;
}
else {
return TRUE;
}
}
?>
function banned($ip) {
global $db;
$db->dbc_query("SELECT id FROM banned WHERE ip = '".$ip."' AND (date > NOW() OR date = '0000-00-00 00:00:00') LIMIT 0, 1") or die($db->dbc_error().' ('.$db->dbc_errno().')');
if (mysql_num_rows($db->dbc_get('result')) == 0) {
return FALSE;
}
else {
return TRUE;
}
}
?>
Krijg ik vervolgens deze melding:
Quote:
Fout in query (1)
Dat is dus een foutmelding die ik zelf heb ingevoegd in die class. Maar de query is niet fout want hij werkt perfect en als de code dus niet in de functie wordt uitgevoerd maar gewoon normaal werkt alles wel.
Ik ben niet echt een expert met classes enzo dus het kan zijn dat de oplossing heel eenvoudig is, heeft iemand een idee hoe mijn probleem op te lossen is?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
function banned($ip) {
dbclass::dbc_query("SELECT id FROM banned WHERE ip = '".$ip."' AND (date > NOW() OR date = '0000-00-00 00:00:00') LIMIT 0, 1") or die(dbclass::dbc_error().' ('.dbclass::dbc_errno().')');
if (mysql_num_rows(dbclass::dbc_get('result')) == 0) {
return FALSE;
}
else {
return TRUE;
}
}
?>
function banned($ip) {
dbclass::dbc_query("SELECT id FROM banned WHERE ip = '".$ip."' AND (date > NOW() OR date = '0000-00-00 00:00:00') LIMIT 0, 1") or die(dbclass::dbc_error().' ('.dbclass::dbc_errno().')');
if (mysql_num_rows(dbclass::dbc_get('result')) == 0) {
return FALSE;
}
else {
return TRUE;
}
}
?>
Zoiets?