Een array met db gegevens vullen.
Ik ben bezig met een kleine applicatie waarmee ik de resultaten van mijn studie online bij kan houden.
Wil deze applicatie zoveel mogelijk in OOP bouwen.
Heb echt een groot probleem.
De eerste classe vult een array met modulenamen.
De tweede classe haalt aan de hand van de modulenamen array de modulecodes uit de db.
Als ik deze echter in een array wil stoppen, dan vult hij de array alleen met de laatste record uit de db.
Ik vermoed dat het een loop foutje is, maar kom er zelf niet echt ui (te lang naar m'n scherm gestaard;))
Hopelijk weet een van jullie de fout te vinden.
Eerste classe
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
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
<?php
/**
* @author Phoenix
* @copyright 21 2 2008 || 19:3
*/
require_once("../Smarty.class.php");
require_once("classes/main_inc.php");
class GetModuleNames {
private $m_aModuleNames;
private $m_aModuleId;
function __construct ()
{
$this->m_aModuleNames = array();
$this->m_aModuleId = array();
}
public function GetNames ()
{
if ($this->m_sConnection = "") {
// exception gooien als er geen databse verbinding is
throw new MyException ('Er is geen database verbinding tot stand gekomen.');
} else {
//Database connectie maken
$m_oDb = new Database();
$m_oDb->sName = "loi";
$m_oDb->sUser = "root";
$m_oDb->sHost = "localhost";
$m_oDb->sPassword = "eenmaal";
$m_oDb->sRoot = "modulenaam";
$m_oDb->Connect($m_oDb->sHost, $m_oDb->sName, $m_oDb->sUser, $m_oDb->sPassword);
$m_sQuery = $m_oDb->Query("SELECT * FROM modulenaam");
while($m_sResult = $m_oDb->FetchAssoc($m_sQuery)) {
// variabelen aan smarty toekennen
$this->m_aModuleNames[] = $m_sResult['ModuleNaam'];
}
foreach ($this->m_aModuleNames as $waarde => $key) {
$this->m_aModuleId[] = $waarde + 1;
}
return $this->m_aModuleId;
}
$m_oDb = null;
}
}
?>
/**
* @author Phoenix
* @copyright 21 2 2008 || 19:3
*/
require_once("../Smarty.class.php");
require_once("classes/main_inc.php");
class GetModuleNames {
private $m_aModuleNames;
private $m_aModuleId;
function __construct ()
{
$this->m_aModuleNames = array();
$this->m_aModuleId = array();
}
public function GetNames ()
{
if ($this->m_sConnection = "") {
// exception gooien als er geen databse verbinding is
throw new MyException ('Er is geen database verbinding tot stand gekomen.');
} else {
//Database connectie maken
$m_oDb = new Database();
$m_oDb->sName = "loi";
$m_oDb->sUser = "root";
$m_oDb->sHost = "localhost";
$m_oDb->sPassword = "eenmaal";
$m_oDb->sRoot = "modulenaam";
$m_oDb->Connect($m_oDb->sHost, $m_oDb->sName, $m_oDb->sUser, $m_oDb->sPassword);
$m_sQuery = $m_oDb->Query("SELECT * FROM modulenaam");
while($m_sResult = $m_oDb->FetchAssoc($m_sQuery)) {
// variabelen aan smarty toekennen
$this->m_aModuleNames[] = $m_sResult['ModuleNaam'];
}
foreach ($this->m_aModuleNames as $waarde => $key) {
$this->m_aModuleId[] = $waarde + 1;
}
return $this->m_aModuleId;
}
$m_oDb = null;
}
}
?>
Tweede Classe
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
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
<?php
/**
* @author Phoenix
* @copyright 21 2 2008 || 19:3
*/
class GetModuleCodes {
private $m_aModuleCodes;
function __construct ()
{
$this->m_aModuleCodes;
}
public function GetCodes ()
{
if ($this->m_sConnection = "") {
// exception gooien als er geen databse verbinding is
throw new MyException ('Er is geen database verbinding tot stand gekomen.');
} else {
$m_oModuleNames = new GetModuleNames ();
$m_aNamen = $m_oModuleNames->GetNames();
//Database connectie maken
$m_oDb = new Database();
$m_oDb->sName = "loi";
$m_oDb->sUser = "root";
$m_oDb->sHost = "localhost";
$m_oDb->sPassword = "eenmaal";
$m_oDb->sRoot = "modulenaam";
$m_oDb->Connect($m_oDb->sHost, $m_oDb->sName, $m_oDb->sUser, $m_oDb->sPassword);
foreach ($m_aNamen as $waarde) {
// query opzetten om de variabelen uit de db te halen.
$m_sQuery = $m_oDb->Query("SELECT * FROM modulescodes WHERE Mod_id = ".$waarde."");
while($m_sResult = $m_oDb->FetchAssoc($m_sQuery)) {
// module codes in smarty zetten
$this->m_aModuleCodes = array($waarde => array(
'Code' => $m_sResult['ModuleCode'],
'Afgerond' => $m_sResult['DatumAfgerond'],
'Nagekeken' => $m_sResult['DatumNagekeken'],
'Cijfer' => $m_sResult['Cijfer'],
'Status' => $m_sResult['Status']));
//echo $waarde."--".$m_sResult['ModuleCode']." ";
//echo $m_sResult['DatumAfgerond']." ";
//echo $m_sResult['DatumNagekeken']." ";
//echo $m_sResult['Cijfer']." ";
//echo $m_sResult['Status']."<br />";
}
}
print_r($this->m_aModuleCodes);
}
$m_oDb = null;
}
}
?>
/**
* @author Phoenix
* @copyright 21 2 2008 || 19:3
*/
class GetModuleCodes {
private $m_aModuleCodes;
function __construct ()
{
$this->m_aModuleCodes;
}
public function GetCodes ()
{
if ($this->m_sConnection = "") {
// exception gooien als er geen databse verbinding is
throw new MyException ('Er is geen database verbinding tot stand gekomen.');
} else {
$m_oModuleNames = new GetModuleNames ();
$m_aNamen = $m_oModuleNames->GetNames();
//Database connectie maken
$m_oDb = new Database();
$m_oDb->sName = "loi";
$m_oDb->sUser = "root";
$m_oDb->sHost = "localhost";
$m_oDb->sPassword = "eenmaal";
$m_oDb->sRoot = "modulenaam";
$m_oDb->Connect($m_oDb->sHost, $m_oDb->sName, $m_oDb->sUser, $m_oDb->sPassword);
foreach ($m_aNamen as $waarde) {
// query opzetten om de variabelen uit de db te halen.
$m_sQuery = $m_oDb->Query("SELECT * FROM modulescodes WHERE Mod_id = ".$waarde."");
while($m_sResult = $m_oDb->FetchAssoc($m_sQuery)) {
// module codes in smarty zetten
$this->m_aModuleCodes = array($waarde => array(
'Code' => $m_sResult['ModuleCode'],
'Afgerond' => $m_sResult['DatumAfgerond'],
'Nagekeken' => $m_sResult['DatumNagekeken'],
'Cijfer' => $m_sResult['Cijfer'],
'Status' => $m_sResult['Status']));
//echo $waarde."--".$m_sResult['ModuleCode']." ";
//echo $m_sResult['DatumAfgerond']." ";
//echo $m_sResult['DatumNagekeken']." ";
//echo $m_sResult['Cijfer']." ";
//echo $m_sResult['Status']."<br />";
}
}
print_r($this->m_aModuleCodes);
}
$m_oDb = null;
}
}
?>
Verder zijn namen en codes eigenschappen van een module die je als attribuut in een klasse Module zou moeten opslaan. Vervolgens zou een klasse ModuleList kunnen gebruiken waarin je meerdere Module objecten gebruikt.
Er zijn vele mogelijkheden waarop je dit zou kunnen aanpakken, maar degene waarop je nu bezig bent is in ieder geval niet juist. Kijk dus nog eens wat tutorials over OOP door en probeer het principe door te krijgen voordat je verder gaat.
In de methode getNames in de eerste klasse retourneer je de id's.
Blanche schreef op 21.02.2008 20:58:
De manier waarop je nu met OOP bezig bent is niet de juiste. De bewerkingen waar jij nu klasses voor gebruikt (verkrijgen van namen en codes) horen eigenlijk gewoon methodes van 1 klasse te zijn.
Verder zijn namen en codes eigenschappen van een module die je als attribuut in een klasse Module zou moeten opslaan. Vervolgens zou een klasse ModuleList kunnen gebruiken waarin je meerdere Module objecten gebruikt.
Er zijn vele mogelijkheden waarop je dit zou kunnen aanpakken, maar degene waarop je nu bezig bent is in ieder geval niet juist. Kijk dus nog eens wat tutorials over OOP door en probeer het principe door te krijgen voordat je verder gaat.
Verder zijn namen en codes eigenschappen van een module die je als attribuut in een klasse Module zou moeten opslaan. Vervolgens zou een klasse ModuleList kunnen gebruiken waarin je meerdere Module objecten gebruikt.
Er zijn vele mogelijkheden waarop je dit zou kunnen aanpakken, maar degene waarop je nu bezig bent is in ieder geval niet juist. Kijk dus nog eens wat tutorials over OOP door en probeer het principe door te krijgen voordat je verder gaat.
Dit is ook niet zoals het uiteindelijk wordt, dit worden straks idd ook aparte methods.
Maar had ze even in 2 files gestopt, zodat ik ze wat makkelijker kan testen.
Zorg gewoon dat de opbouw van je systeem klopt, dat is namelijk de basis van het hele object georienteerd programeren. Dit is dus ook iets waarmee je zou moeten beginnen voordat je nog maar een regel code getypt hebt! Je hele systeem staat of valt met de opbouw ervan. Als die niet klopt, en dat is nu het geval, kom je later in ieder geval in de problemen...
Met andere woorden, hoe zou jij die patterns hier willen gebruiken?