communicatie tussen klasse probleem
ik nog maar eens beginne experimenteren met OOP, ik wil het toch ooit is kunnen, maar zit ff vast.
ik heb een klasse database waarin ik alle acties met de database wil afhandelen, de connectie, selects, inserts,..
daarnaast heb ik voorlopig een index pagina die gewoon alles waargeeft en een klasse tblspelers die dingen plaatst en ophaald uit de database.
Het probleem zit hem ni in het feit dat ik de klasse tblspelers maar niet kan laten communiceren met de klasse database.
Als ik een select wil doen krijg ik
Code (php)
1
Fatal error: Call to a member function select() on a non-object in /usr/home/deb4991/domains/moskydesign.be/public_html/Lab/otblSpelers.php on line 8
hier even de code
index.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
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
<?php
include("otblSpelers.php");
?>
</head>
<body>
<form id="form1" name="form1" method="post" action="saverank.php">
<table border="0" cellspacing="3">
<?php
$spelers = new tblspelers();
while ($record = $spelers->fetch_assoc())
{
echo "<tr><td>" . $record[vnaam] . " " . $record[anaam] . "</td> <td><select name='". $record[id] . "' id='fgh'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select></td></tr>";
}
?>
include("otblSpelers.php");
?>
</head>
<body>
<form id="form1" name="form1" method="post" action="saverank.php">
<table border="0" cellspacing="3">
<?php
$spelers = new tblspelers();
while ($record = $spelers->fetch_assoc())
{
echo "<tr><td>" . $record[vnaam] . " " . $record[anaam] . "</td> <td><select name='". $record[id] . "' id='fgh'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select></td></tr>";
}
?>
otblSpelers.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
require_once("connection.php");
class tblspelers
{
public function __construct() {
$Result = $database->select("SELECT * FROM tblSpeler");
return $Result;
}
}
?>
require_once("connection.php");
class tblspelers
{
public function __construct() {
$Result = $database->select("SELECT * FROM tblSpeler");
return $Result;
}
}
?>
connection.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
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
<?php
require("config.inc.php");
class database {
private static $db;
public static function connect() {
$mysqli = new mysqli('localhost', username, password, database);
if (mysqli_connect_errno())
{
printf("Er kan geen verbinding worden gemaakt met de database. Foutmelding: %s\n", mysqli_connect_error());
}
return $mysqli;
}
public static function select($query) {
$db = self::connect();
return $db->query("$query");
}
}
?>
require("config.inc.php");
class database {
private static $db;
public static function connect() {
$mysqli = new mysqli('localhost', username, password, database);
if (mysqli_connect_errno())
{
printf("Er kan geen verbinding worden gemaakt met de database. Foutmelding: %s\n", mysqli_connect_error());
}
return $mysqli;
}
public static function select($query) {
$db = self::connect();
return $db->query("$query");
}
}
?>
Het zal waarschijnlijk wel een stomme beginnersfout zijn, maar ik ben ook een beginner.
Alvast bedankt
Je initieert $database niet.
ik dacht da niet moest met een static function?
How how, niet bumpen
Code (php)
1
2
3
4
2
3
4
<?php
$object = new klasse(); //$object is feitenlijk een reference naar de class...
$object->functie(); //werkt daardoor gewoon!
?>
$object = new klasse(); //$object is feitenlijk een reference naar de class...
$object->functie(); //werkt daardoor gewoon!
?>
lees eens over references op http://www.php.net/
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
class stat{
static public function test(){
//static functies hebben geen class variabelen nodig om te
//kunnen functioneren. dus geen $this->blaat
//welicht een enkele static $var. Maar geen procedural->object!
return true;
//kan wel wat terug geven. maar dat een value! geen reference naar
//$this->
}
}
?>
class stat{
static public function test(){
//static functies hebben geen class variabelen nodig om te
//kunnen functioneren. dus geen $this->blaat
//welicht een enkele static $var. Maar geen procedural->object!
return true;
//kan wel wat terug geven. maar dat een value! geen reference naar
//$this->
}
}
?>
je kan static en procedural natuurlijk combineren.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class mixed{
protected $blaat = array();
static public function string($string){
return new self($string); //static functie maakt instantie van class
//en dat is dus een object!
}
public function __construct($string){
$this->blaat = preg_split('~[\w?\b]+~sU', $string);
}
public function stringetje(){
return implode('-=-', $this->blaat).'<br/>'.PHP_EOL;
}
}
///////////////////////////////////////////////////
$str = 'Gewoon een hoop onzin?! met wat spaties en wordbounds!';
$test = mixed::string($str)->stringetje();
// omdat de static function __construct aanroept is $test dus wel een $object!
//en kan je dus chained calls maken...
echo var_dump($test);
?>
class mixed{
protected $blaat = array();
static public function string($string){
return new self($string); //static functie maakt instantie van class
//en dat is dus een object!
}
public function __construct($string){
$this->blaat = preg_split('~[\w?\b]+~sU', $string);
}
public function stringetje(){
return implode('-=-', $this->blaat).'<br/>'.PHP_EOL;
}
}
///////////////////////////////////////////////////
$str = 'Gewoon een hoop onzin?! met wat spaties en wordbounds!';
$test = mixed::string($str)->stringetje();
// omdat de static function __construct aanroept is $test dus wel een $object!
//en kan je dus chained calls maken...
echo var_dump($test);
?>
Volg je het nu :-]
EDIT!!!!!!!!!!
wouter schreef op 18.03.2008 15:14:
ik nog maar eens beginne experimenteren met OOP, ik wil het toch ooit is kunnen, maar zit ff vast.
ik heb een klasse database waarin ik alle acties met de database wil afhandelen, de connectie, selects, inserts,..
ik heb een klasse database waarin ik alle acties met de database wil afhandelen, de connectie, selects, inserts,..
Dat is al helemaal geen OOP meer denk ik...
Een database class verbind php met een database. Of er een insert/update/delete/truncate, etc... gebeurd heeft ie niks over te zeggen...
Gewijzigd op 01/01/1970 01:00:00 door Lode