[CLASS]
Ik heb 2 classes gemaakt:
MySQL Class
Pagenavigation Class
Die Pagenavigation Class werkt samen met die MySQL Class.
Maar het werkt niet.
Foutmelding:
Fatal error: Call to a member function on a non-object in **** pagenav.php on line 24
Code:
Index.php
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
include "pagenav.php";
$page = htmlspecialchars($_GET['page']);
$pagenav = new pagenav;
$mysql->connect();
$pagenav->set('admins', $page, 5);
$pagenav->pgnav_show();
?>
include "pagenav.php";
$page = htmlspecialchars($_GET['page']);
$pagenav = new pagenav;
$mysql->connect();
$pagenav->set('admins', $page, 5);
$pagenav->pgnav_show();
?>
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
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
<?php
###########################
### Script: MySQL Class ###
### Author: Syncie ###
### Year: 2006 ###
###########################
if(strpos($_SERVER['REQUEST_URI'], basename(__FILE__))){
echo 'Dit bestand werkt alleen als het word ingeladen. Dit bestand kan niet los worden geopend!';
}
class mysql {
var $db = array('host' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'database');
var $query;
var $error;
var $mysqlerrno;
var $mysqlerror;
var $email = '[email protected]';
function connect(){
mysql_connect($this->db['host'], $this->db['username'], $this->db['password']) or $this->error();
mysql_select_db($this->db['database']) or $this->error();
}
function query($sql){
$query = mysql_query($sql) or $this->error();
return $query;
}
function num($query){
$num = mysql_num_rows($query);
return $num;
}
function asc($query){
$asc = mysql_fetch_assoc($query);
return $asc;
}
function error(){
die('<div align="center">
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<td>
<div align="center"><font color="#FF0000"><strong>FOUT</strong></font></div>
</td>
</tr>
<tr>
<td>
Door een fout met de MySql database kunt u niet verder gaan.
<br>
Probeer het later nog een keer.
<br>
Mocht u deze fout vaker zien kunt u contact met ons opnemen. Ons emailadres is: '.$this->email.'
<br>
<br>
De fout die de database terug geeft:
<br>
<strong>Foutnummer:</strong> '.mysql_errno().'
<br>
<strong>Fout:</strong> '.mysql_error().'
</td>
</tr>
</table>
</div>');
}
}
?>
###########################
### Script: MySQL Class ###
### Author: Syncie ###
### Year: 2006 ###
###########################
if(strpos($_SERVER['REQUEST_URI'], basename(__FILE__))){
echo 'Dit bestand werkt alleen als het word ingeladen. Dit bestand kan niet los worden geopend!';
}
class mysql {
var $db = array('host' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'database');
var $query;
var $error;
var $mysqlerrno;
var $mysqlerror;
var $email = '[email protected]';
function connect(){
mysql_connect($this->db['host'], $this->db['username'], $this->db['password']) or $this->error();
mysql_select_db($this->db['database']) or $this->error();
}
function query($sql){
$query = mysql_query($sql) or $this->error();
return $query;
}
function num($query){
$num = mysql_num_rows($query);
return $num;
}
function asc($query){
$asc = mysql_fetch_assoc($query);
return $asc;
}
function error(){
die('<div align="center">
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<td>
<div align="center"><font color="#FF0000"><strong>FOUT</strong></font></div>
</td>
</tr>
<tr>
<td>
Door een fout met de MySql database kunt u niet verder gaan.
<br>
Probeer het later nog een keer.
<br>
Mocht u deze fout vaker zien kunt u contact met ons opnemen. Ons emailadres is: '.$this->email.'
<br>
<br>
De fout die de database terug geeft:
<br>
<strong>Foutnummer:</strong> '.mysql_errno().'
<br>
<strong>Fout:</strong> '.mysql_error().'
</td>
</tr>
</table>
</div>');
}
}
?>
Pagenav.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
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
<?php
####################################
### Script: Pagenavigation Class ###
### Author: Syncie ###
### Year: 2006 ###
### Requires: MySQL Class ###
####################################
include "mysql.php";
$mysql = new mysql;
$mysql->connect();
if(strpos($_SERVER['REQUEST_URI'], basename(__FILE__))){
echo 'Dit bestand werkt alleen als het word ingeladen. Dit bestand kan niet los worden geopend!';
}
class pagenav {
var $table;
var $per_page;
var $page;
var $results;
var $pages;
function set($table, $page, $per_page){
$results = $mysql->query("SELECT COUNT (id) AS aantal FROM ".$table."");
if($results == 0){
echo '<i>Er zijn nog geen resultaten</i>';
}else{
$pages = ceil($results / $per_page);
if(!isset($_GET[$this->page])|| empty($_GET[$this->page]) || !is_numeric($_GET[$this->page])){
$this->page = 1;
}
if($this->page < 1 || $this->page > $pages){
$this->page = 1;
}
}
}
function pgnav_show(){
if($this->page > 1){
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$this->page--.'">Vorige</a>';
}
for($i = 1; $i <= $this->pages; $i++){
if($i == $this->page){
echo ' ['.$i.'] ';
}else{
echo ' <a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a> ';
}
}
if($this->page < $pages){
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$this->page++.'">Volgende</a>';
}
}
}
?>
####################################
### Script: Pagenavigation Class ###
### Author: Syncie ###
### Year: 2006 ###
### Requires: MySQL Class ###
####################################
include "mysql.php";
$mysql = new mysql;
$mysql->connect();
if(strpos($_SERVER['REQUEST_URI'], basename(__FILE__))){
echo 'Dit bestand werkt alleen als het word ingeladen. Dit bestand kan niet los worden geopend!';
}
class pagenav {
var $table;
var $per_page;
var $page;
var $results;
var $pages;
function set($table, $page, $per_page){
$results = $mysql->query("SELECT COUNT (id) AS aantal FROM ".$table."");
if($results == 0){
echo '<i>Er zijn nog geen resultaten</i>';
}else{
$pages = ceil($results / $per_page);
if(!isset($_GET[$this->page])|| empty($_GET[$this->page]) || !is_numeric($_GET[$this->page])){
$this->page = 1;
}
if($this->page < 1 || $this->page > $pages){
$this->page = 1;
}
}
}
function pgnav_show(){
if($this->page > 1){
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$this->page--.'">Vorige</a>';
}
for($i = 1; $i <= $this->pages; $i++){
if($i == $this->page){
echo ' ['.$i.'] ';
}else{
echo ' <a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a> ';
}
}
if($this->page < $pages){
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$this->page++.'">Volgende</a>';
}
}
}
?>
Kan iemand mij helpen?
Alvast bedankt
Daar staat ' $results = $mysql->query();', maar waar haal je $mysql vandaan? Geen global, ook geen argument, niet eens een variabele van het object...
Zie bijvoorbeeld deze klasse van mij, gebruikt ook mijn database klasse. Maar ik geef het (iig, ik heb de mogelijkheid, er zit ook nog een ander mechanisme in) database-object mee als argument bij de __construct()-functie, en dan 'sla ik hem op' in het object. Dan kan je verder lekker functies uitvoeren zonder er nog naar om te hoeven kijken.