Ik heb dus onlangs de basis van mijn framework geschreven, maar zit nu wat vast bij models maken.
Ik wil eerst gewoon eens testen of ik iets uit de database kan halen, naar de controller sturen en van daar uit naar de view.
Maar ik krijg steeds gewoon mijn lay-out zonder de waarde die hij zou moeten tonen.
In de view staat dat hij $naam moet echo'en, die uit de controller gedefinieerd is.
De controller haalt dit dan weer uit de registry, en de registry heeft dit van het model.
Hij moet dus het eerste record nemen en de naam weergeven.
Tabel
1
2
3
4
5
6
7
8
9
--
-- Tabel structuur voor tabel `test`
--
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL auto_increment,
`naam` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Misschien helpt deze code:
Index.php controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class indexController extends baseController {
public function index() {
include_once(ROOT . DS . 'application' . DS . 'models/test.php');
$test = new Test();
$this->registry->template->id = $test->iTest_ID;
$this->registry->template->naam = $test->sTest_Naam;
$this->registry->template->welkom = 'SimpleCode by Jesse S.';
$this->registry->template->show('index2');
}
}
?>
Index2.php (de view, index2.php omdat andere even in gebruik is
1
2
3
4
5
6
7
8
9
10
11
<?php $this->registry->template->show('header'); ?>
<h2><?php echo $welkom; ?></h2>
<h2><?php echo $naam; ?></h2>
<p class="tekst">
Lorem ipsum shizzle.
</p>
<?php $this->registry->template->show('footer'); ?>
test.php (Model)
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
<?php
class test {
public $iTest_ID;
public $sTest_Naam;
public function getTest() {
$aData = array();
$sQuery = "SELECT * FROM test WHERE id = '1' ";
$rResult = @mysql_query($sQuery);
if($rResult == false) {
throw new Exception('Query (' .$sQuery. ') mislukt: ' . mysql_error());
}
if (@mysql_num_rows($rResult) == 0) {
throw new Exception('Geen objecten gevonden');
}
$aData = @mysql_fetch_assoc($rResult);
$this->registry->iTest_ID = $aData['id'];
$this->registry->sTest_Naam = $aData['naam'];
}
}
?>
db.php (Connectie etc.)
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
<?php
class db {
private static $instance = NULL;
private function __construct() {
}
public static function getInstance() {
if (!self::$instance) {
self::$instance = mysql_connect('localhost', 'root', 'usbw');
self::$instance .= mysql_select_db('test', self::$instance) or die('Could not select database.');
}
return self::$instance;
}
private function __clone() {
}
}
?>