Een array met db gegevens vullen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mark Eilander

Mark Eilander

21/02/2008 20:50:00
Quote Anchor link
Goede avond,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;
}

}


?>


Tweede Classe


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;
    }
}


?>
 
PHP hulp

PHP hulp

21/11/2024 23:19:59
 
Joren de Wit

Joren de Wit

21/02/2008 20:58:00
Quote Anchor link
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.
 
Jan Koehoorn

Jan Koehoorn

21/02/2008 20:58:00
Quote Anchor link
In de methode getNames in de eerste klasse retourneer je de id's.
 
Mark Eilander

Mark Eilander

21/02/2008 21:01:00
Quote Anchor link
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.


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.
 
Joren de Wit

Joren de Wit

21/02/2008 21:06:00
Quote Anchor link
Niet slim, doe het gewoon direct goed. Dat je niet zou kunnen testen als je deze klasses die je nu hebt gewoon als methodes van 1 klasse zou schrijven, is onzin.

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...
 
Lode

Lode

21/02/2008 21:55:00
Quote Anchor link
Wat ik wel vaak doe is patterns gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
class inloggen{

      private $pattern = array(
                                              'naam'            => 'string', //validator
                                              'wachtwoord'   => 'password',
                                          );


      public function __construct($data){
          if(!is_int(array_diff_key($data))){
                //valid
                //validator(s) uitvoeren...

           }
      }
}

?>


bij wijze van voorbeeld....
Gewijzigd op 01/01/1970 01:00:00 door Lode
 
Joren de Wit

Joren de Wit

21/02/2008 21:59:00
Quote Anchor link
@Lode: lijkt me dat je dat met name gebruik bij de controle van input? Wat heeft dat dan met de code in dit topic te maken?

Met andere woorden, hoe zou jij die patterns hier willen gebruiken?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.