BlogSysteempje maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front end developer

Functie Qua type opdrachten is er echt een verscheidenheid aan afnemers, zo werken ze met grote multinationals, maar ook met startups. Zo kom je te werken in een gevarieerde omgeving en kan je ook schakelen tussen verschillende culturen. De projecten variëren van greenfield projecten tot langdurige ontwikkeltrajecten. Hier wordt alleen maar gewerkt met aan front end projecten. Daarom maakt het onze partner niet uit waar jij kennis van hebt, als je maar gedegen kennis hebt van Javascript frameworks, Unit testing en ook bekend bent met de scrum methodiek. Eisen Minimaal 4 jaar relevante werkervaring Kennen en ervaring van Javascript frameworks

Bekijk vacature »

Junior PHP Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale aspecten van Coolblue. Wat doe je als Junior PHP Developer bij Coolblue? Als Junior PHP Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen om te groeien als Junior Developer. Op dat moment komt je wil om steeds te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te kunnen maken. Je sterk analytisch vermogen komt dan ook goed

Bekijk vacature »

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Alblasserdam zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back

Bekijk vacature »

Senior Front-end Developer

Dit ga je doen Met behulp van diverse programmeertalen ontwikkelen van Front-end software; Het begeleiden van het front-end team; Het oplossen van incidenten; Het bijhouden van een backlog; Je hebt een actieve bijdrage in de wekelijkse overleggen met de omliggende teams; Je houdt trends bij en adviseert het management hierover waar nodig; Helder communiceren met de stakeholders om hen zo mee te nemen in projecten en laten inzien wat de duur en toegevoegde waarde van bepaalde projecten is. Hier ga je werken Deze organisatie heeft circa 40 miljoen bezoekers per maand en heeft innovatie hoog in het vaandel staan. Het

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. Je gaat als Full stack developer aan de slag en gaat

Bekijk vacature »

C# .NET Developer

Dit ga je doen Je richt je op het doorontwikkelen en herstructureren van het platform; Je werkt in teamverband en zelfstandig aan uitdagende projecten voor verschillende klanten; Softwareontwikkeling middels C# .NET; Je staat in contact met verschillende opdrachtgevers om de klantwensen te bespreken en deze vervolgens te ontwikkelen; Verbeteren van bedrijfsprocessen; Implementaties. Hier ga je werken Als .NET Developer kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Back-end developer

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een gemotiveerde SQL Developer/ functioneel consultant. Jij wordt verantwoordelijk voor zowel het ontwerpen en implementeren van SQL-databases als voor het in kaart brengen van de bedrijfsprocessen van een organisatie en het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Ontwerp en implementatie van SQL-databases: Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Analyse van bedrijfsprocessen: Je analyseert de bedrijfsprocessen van de organisatie om de behoeften van de klant te begrijpen en te vertalen naar

Bekijk vacature »

Senior PHP developer

Functie Jouw werkzaamheden zullen grotendeels bestaan uit het in teamverband ontwerpen, vernieuwen en door ontwikkelen van het systeem. Het is echt back-end werk (bijvoorbeeld het doorontwikkelen van een API) en dit moet je dan ook liggen. Ze zijn niet persee gebonden aan talen of tools maar gebruiken graag de technieken die het beste aansluiten op de gegeven oplossing. Voor nieuwe (versies van) componenten maken ze veelal gebruik van Go(lang). Bij aanpassingen aan bestaande onderdelen gebeurt dit in PHP en C++. Het team is heel divers, er hangt een relaxte sfeer en ze organiseren regelmatig leuke music nights, game nights e.d.

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

Bekijk vacature »

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een ambitieuze werkgever in regio Tilburg waar jij volledig de mogelijkheid krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je gaat projecten gedurende het hele proces begeleiden. Je sluit aan bij afspraken met klanten om hun processen helder te krijgen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt aan nieuwe softwareoplossingen die de logistieke processen verbeteren of vernieuwen; Je houdt je bezig met het ontwikkelen van

Bekijk vacature »

Oracle Apex Developer

Dit ga je doen Jouw taken bestaan uit: Het bouwen maatwerk Oracle applicaties voor Europese business units; Het implementeren van de nieuwste technieken om te blijven innoveren; Actief meedenken en aandragen van verbetervoorstellen. Hier ga je werken Deze organisatie in de regio Veenendaal is een van wereld grootste retailers met ruim 16.000 winkels in 27 markten en jaarlijks ruim 5,3 miljard klanten die winkelen bij een van hun welbekende retailmerken. Binnen de organisatie is er een IT Group actief die dient als IT Service Provider voor de hele organisatie en waar dagelijks IT'ers werken aan state-of-the-art IT oplossingen. Dit doen

Bekijk vacature »

Back end developer Onderwijssoftware

Functie Als back end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van hoogwaardige

Bekijk vacature »

Software Developer Mendix / Maatschappelijk Betrok

Dit ga je doen Het bouwen van de Mendix applicaties in samenwerking met jouw team of zelfstandig; Werken met Scrum methodiek; Ontwikkelen van vooruitstrevende oplossingen; Meedenken over nieuwe applicaties en ontwikkelingen; On the job eigen maken van de Mendix omgeving. Hier ga je werken Deze dynamische en snelgroeiende organisatie begeeft zich in de recyclingbranche. Zij nemen op duurzame en efficiënte manier de recycling op zich. Vanwege hun snelle groei zijn zij op zoek naar een young professional die zich graag wilt ontwikkelen als Mendix Developer. Je komt te werken binnen een IT team van +/- 15 medewerkers. Het huidige ‘vaste’

Bekijk vacature »
Manaus

Manaus

07/08/2008 17:07:00
Quote Anchor link
Beste php'ers,

Ik ga beginnen met het maken van blogsysteempje.
Maar omdat ik mijn oop eens wil testen zal ik dat maken dmv oop.
Hierbij is mijn vraag, wat voor classen ga ik moeten aanmaken?
Ik wil niet dat het gwn allemaal classen zijn maar dat ze ook effectief samen werken zoals dat hoort bij oop.
Iemand tips?

mvg, Manaus
Gewijzigd op 01/01/1970 01:00:00 door Manaus
 
PHP hulp

PHP hulp

21/11/2024 19:16:47
 
Jacco Engel

Jacco Engel

07/08/2008 17:10:00
Quote Anchor link
Beginnen bij het begin?

Begin met het maken van een lijst wat je systeem meot kunnen
 
Michel W

Michel W

07/08/2008 17:15:00
Quote Anchor link
en dan mooie schema's gaan teken in UML :)
 
Citroen Anoniem Graag

Citroen Anoniem Graag

07/08/2008 17:16:00
Quote Anchor link
Begin met pen en papier, schrijf op wat het systeem moet kunnen.

Als je dat hebt gedaan ga je kijken welke objecten er nodig zijn (zie nieuwe tutorial: object geörienteerd denken).

De volgende stap is welke methods (functies) bij welk object horen. En wat de eigenschappen van elke object moeten zijn. (Standaard dingen zoals een pdo object kun je hier voor het overzicht nog even weg laten).

Als het goed is heb je nu een lijstje met alle classes die je moet gebruiken, met de methods en properties. Vaak blijkt dat je een paar functies bent vergeten, voeg die dan direct toe!.
Nu ga je kijken naar de visabilty van de methods en properties (public, protected of private).

Nu kan je beginnen met het uitprogrammeren van de classes en gaan testen.

Als je niet zeker weet of je het goed heb gedaan vraag je hier ff om kritiek over je opzet.

Succes!
Gewijzigd op 01/01/1970 01:00:00 door Citroen Anoniem Graag
 
Manaus

Manaus

07/08/2008 17:20:00
Quote Anchor link
Bedankt voor jullie snelle reacties, ik zal zo meteen beginnen met een lijstje te maken.
Als ik klaar ben met mijn systeempje zal ik zeker hier posten om kritiek en wat beter kan.

Edit:
Ik ben begonnen met men lijstje, zoveel moet de blog niet kunnen natuurlijk.
Hieronder vind je mijn lijstje, is dit een goeie manier?


- een blog maken
-> blog maken
-> blog ophalen
-> blog aanpassen
-> blog verwijderen

- reacties
-> reactie maken
-> reactie opmaken
-> reactie aanpassen (kijken voor de juiste rechten)
-> reactie verwijderen (kijken voor de juiste rechten)
- admin functie
-> blog maken
-> blog verwijderen
-> blog aanpassen
-> inloggen
-> uitloggen

mvg, Manaus
Gewijzigd op 01/01/1970 01:00:00 door Manaus
 
Michel W

Michel W

07/08/2008 18:11:00
Quote Anchor link
manaus:
-> inloggen
-> uitloggen

Misschien nog wat extra dingen:
Wachtwoord genereren (voor zowel opvragen als registreren handig)

Activeren (naja kun je ook nog wachtwoord genereren voor gebruiken om als activatie code te dienen)

Wachtwoord opvragen via email / gebruikersnaam

(her)activeren, stel dat iemand zijn wachtwoord via email/gebruikersnaam opvraagt dat hij/zij een link in de email krijgt met daarin een link die een nieuw wachtwoord genereert en die opstuurt. Dit voorkomt misbruik van die functie. (leuk om mensen mee te "klieren")

Ban/Straf functie? Je zou misschien aan posts een reactie meter kunnen hangen. Is de post leuk/grappig etc. dat andere kunnen stemmen op die reactie. Zo kun je punten weg "punishen" bij ongewenst gedrag

Gewoon een edit profile: misschien dat ze kunnen kiezen uit meerdere templates? Wachtwoord wijzigen, email wijzigen etc.
Gewijzigd op 01/01/1970 01:00:00 door Michel W
 
Douwe

Douwe

07/08/2008 18:13:00
Quote Anchor link
Dreampower;
In- en Uitloggen is voor de admin, dus al die functies die je zegt hoeven niet ;)
Bannen is wel een goed idee.
 
Michel W

Michel W

07/08/2008 18:18:00
Quote Anchor link
douwe m:
-> reactie maken
-> reactie opmaken
-> reactie aanpassen (kijken voor de juiste rechten)
-> reactie verwijderen (kijken voor de juiste rechten)
Ik zou niet willen dat iemand anders reacties zou kunnen maken onder mijn naam ^^

Owja ik ben iemand die soms wat over creatief kan zijn met zijn ideeen ^^
Gewijzigd op 01/01/1970 01:00:00 door Michel W
 
Manaus

Manaus

07/08/2008 19:13:00
Quote Anchor link
voila, ik heb nu een db class gemaakt samen met de admin...
Denken jullie dat ik goed bezig ben of totaal niet?:
Gewijzigd op 01/01/1970 01:00:00 door Manaus
 
Jelmer -

Jelmer -

08/08/2008 11:52:00
Quote Anchor link
Misschien moet je die tutorial van PHPErik nog een keertje doorlezen, en het loont om een keer te kijken naar hoe bijvoorbeeld MySQLi en PDO zijn opgebouwd.

Als je daar naar kijkt zal het je opvallen dat PDO bij PDO::query() niet een pointer meegeeft die je bij andere functies kan gebruiken, maar een object, PDO_Statement, waar je direct je methods op aan kan roepen. De resultaten worden behandeld als een object, als een op zichzelf staand ding. Jij behandeld ze eerder als een notitie die je doorgeeft aan je andere methods. Je doet eigenlijk precies fout wat iedereen die begint met OOP fout doet: je maakt van klassen setjes functies. Je geeft het zelf ook nog eens aan doordat je constant "static" & self gebruikt.


Maar als je nu eerst even de details - hoe je met de database gaat praten - buiten beschouwing laat: Hoe ga je je blog indelen? Voor welk ding maak je een object, en waar komen de methods die de blog-posts ophalen en de reacties erbij zoeken?
 
Jacco Engel

Jacco Engel

08/08/2008 12:18:00
Quote Anchor link
- een blog maken
-> blog maken
-> blog ophalen
-> blog aanpassen
-> blog verwijderen

- admin functie extends blog maken
-> inloggen
-> uitloggen

Denk dat het zo iets handiger is :) classes zijn om dubbel werk te voorkomen
 
Manaus

Manaus

08/08/2008 12:25:00
Quote Anchor link
Ok, ik ben nog wat verder, ik heb database enzo aangepast.
Ben ik nu goed bezig ofniet?

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php

/**
 * @author
 * @copyright 2008
 */


class reactie{
    private $id;
    private $author;
    private $title;
    private $content;
    private $blog;
    private $datum;
    private $ip;
    private $db;
    public function __construct(db $db, $id){
        $this->db = $db;
        $this->id = $id;
    }

    public function load(){
        $query = $this->db->query("SELECT title, content, datum, ip, author, blog, bewerkdatum, bewerkt FROM reacties
                            WHERE id = "
.$this->db->quote($this->db));
        if($this->db->totaal($query) > 0){
            $row = $this->db->fetch($query);
            $this->author     = $row['author'];
            $this->title     = $row['title'];
            $this->content     = $row['content'];
            $this->datum     = $row['datum'];
            $this->ip         = $row['ip'];
            $this->blog        = $row['blog'];
        }
    
        else{
            throw new Exception("Reactie niet gevonden in database!");
        }                
    }

    public function edit($title, $content){
        $query = $this->db->query("UPDATE reacties SET
                        content = "
.$this->db->quote($content).",
                        title = "
.$this->db->quote($title).",
                        bewerkdatum = NOW(),
                        bewerkt = '1'
                        WHERE id = "
.$this->db->quote($this->id)."
                        "
);

    }

    public function delete(){
        $query = $this->db->query("DELETE FROM reacties WHERE id = ".$this->db->quote($id));        
    }

    public function ban(){
        $this->db->query("INSERT INTO ban SET (datum, reden, ip) VALUES
        (NOW(), "
.$this->db->quote($reden).", ".$this->db->quote($this->ip).")
        "
);
    }
}

class reacties{
    private $reacties = array();
    private $db;
    public function __construct(db $db){
        $this->db = $db;
    }

    public function load($id){
        unset($this->reacties);
        $reactie = new reactie($this->db, $id);
        $reactie->load();
        $this->reacties[] = $reactie;
    }

    public function loadmore($blog_id){
        unset($this->reacties);
        $query = $this->db->query("SELECT id FROM reacties WHERE blog = ".$this->db->quote($blog_id));
        while($row = $this->db->fetch($query)){
            $reactie = new reactie($this->db, $row['id']);
            $reactie->load();
            $this->reacties[] = $reactie;
        }
    }

    public function edit($id, $title, $content){
        if(admin::ingelogd){
            $reactie = new reactie($this->db, $id);
            $reactie->edit($title, $content);
        }

        else{
            throw new Exception("Je bent niet ingelogd als admin!");
        }
    }

    public function delete($id){
        if(admin::ingelogd){
            $reactie = new reactie($this->db, $id);
            $reactie->delete();
        }
else{
            throw new Exception("Je bent niet ingelogd als admin!");
        }
    }
    
}


?>


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
<?php

/**
 * @author
 * @copyright 2008
 */


class db{
    private $connected;
    public  $queries = 0;
    public function connect($host, $username, $password, $db){
        if($this->connected == NULL){
            if($connection = mysqli($host, $username, $password, $db)){
                self::$connected = $connection;
            }

            else{
                throw new Exception("Er kon geen database verbinding gemaakt worden!");
            }
        }
    
        else{
            
        }
    }

    public function query($sql){
        if($this->connected == NULL){
            throw new Exception("Er is nog geen database verbinding gemaakt!");
        }
else{
            $query = mysqli_query($this->connected,$sql);
            if($query){
                $this->queries++;
                return $query;
            }

            else{
                throw new Exception(mysqli_error());    
            }
        }
    
    }

    public function fetch($query){
        return mysqli_fetch_assoc($query);
    }

    public function totaal($query){
        return mysqli_num_rows($query);
    }

    public function quote($string){
        return "'".mysqli_real_escape_string($string)."'";
    }
}
    

?>


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
<?php

/**
 * @author
 * @copyright 2008
 */


class admin{
    public static $ingelogd;
    private $username;
    private $password;
    private $db;
    public function __construct(db $db){
        $this->check_ingelogd();
        $this->loadinfo();
        $this->db = $db;
    }

    public function loadinfo(){
        $query = $this->db->query("SELECT password, username FROM instellingen WHERE id = '1'");
        $row = $this->db->fetch($query);
        $this->username = $row['username'];
        $this->password = $row['password'];
        
    }

    public function check_ingelogd(){
        if(isset($_SESSION['ingelogd'])){
            self::$ingelogd = TRUE;
        }

        else{
            self::$ingelogd = FALSE;
        }
    }

    public function login($username, $password){
        if($username == $this->$username && sha1($password) == $this->$password){
            self::$ingelogd = TRUE;
            $_SESSION['ingelogd'] = 1;
        }

        else{
            self::$ingelogd = FALSE;
        }
    }
    
}


?>


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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php

/**
 * @author
 * @copyright 2008
 */


class blog{
    private $id;
    private $title;
    private $content;
    private $datum;
    private $db;
    public function __construct(db $db, $id){
        $this->id = $id;
        $this->db = $db;
    }

    public function load(){
        $query = $this->db->query("SELECT title, content, datum, bewerkt, bewerkdatum
                            FROM blogs
                            WHERE id = "
. $this->db->escape($this->id) ."
                            "
);
        if($this->db->totaal($query) > 0){
            $row = $this->db->fetch($query);
            $this->title = $row['title'];
            $this->content = $row['content'];
            $this->datum = $row['datum'];
        }
    
        else{
            throw new Exception("Blog bestaat niet!");
        }                
        
    }

    public function edit($title, $content){
        $this->db->query("UPDATE blogs
                    SET title = "
.$this->db->escape($title).",
                    content = "
.$this->db->escape($content).",
                    bewerkt = '1',
                    bewerkdatum = NOW()
                    WHERE id = "
.$this->db->escape($this->id)."
                    "
);
        return TRUE;            
    }

    public function delete(){
        $this->db->query("DELETE FROM blogs WHERE id = '".$this->db->escape($this->id)."' LIMIT 0,1");
        return TRUE;
    }
    
    
}

class blogs{
    private $blogs = array();
    private $db;
    public function __construct(db $db){
        $this->db = $db;
    }

    public function load($id){
        unset($this->blogs);
        $blog = new blog($id);
        $blog->load();
        $blogs[] = $blog;
        
    }

    public function load_more($where){
        unset($this->blogs);
        $query = $this->db->query("SELECT id FROM blogs WHERE ".$where);
        while($row = $this->db->fetch($query)){
            $blog = new blog($this->db, $row['id']);
            $blog->load();
            $blogs[] = $blog;
        }
    }

    public function edit($id, $title, $content){
        $blog = new blog($this->db, $id);
        $blog->edit($title, $content);
    }

    public function delete($id, $title, $content){
        $blog = new blog($this->db, $id);
        $blog->delete();
    }

    public function load_reacties($id){
        
    }
}


?>
Gewijzigd op 01/01/1970 01:00:00 door Manaus
 
Jelmer -

Jelmer -

08/08/2008 12:48:00
Quote Anchor link
Het komt al een beetje in de buurt, maar je bent er nog niet helemaal. Vind je het zelf ook niet een beetje vreemd dat je blog::delete & blogs::delete hebt, die beiden hetzelfde doen? En dat je in blog & in blogs queries hebt staan?

Zelf probeer ik altijd een model te maken, een blogpost (jij noemt het een blog, ook goed) en een klasse die die blogs beheert. Ik maak deze dan verantwoordelijk voor het opslaan, ophalen, sorteren, terugvinden en whatever er met die blogs gebeurt, de blog zelf is alleen verantwoordelijk voor zijn eigen inhoud en dat deze klopt en hoeft zich niet druk te maken over opslag en escapen van data.

Voorbeeldje van hoe ik het zou doen:
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php

class Blog {
    
    static public function loadFromArray(array $data) {
        $blog = new self();
        $blog->id = $data['id'];
        $blog->title = $data['title'];
        $blog->content = $data['content'];
        $blog->datum = $data['datum'];
        return $blog;
    }

    
    protected $id;
    
    protected $title;
    
    protected $content;
    
    protected $datum;
    
    public function id() {
        return (int) $this->id;
    }

    
    public function title() {
        return (string) $this->title;
    }

    
    public function content() {
        return (string) $this->content;
    }

    
    public function datum() {
        return new DateTime($this->datum);
    }

    
    
    public function setTitle($title) {
        if(strlen(trim($title)) < 1) {
            throw new Exception('Titel is leeg. blog::$title moet minstens 1 karakter (geen spatie) lang zijn');
        }

        
        $this->title = $title;
    }

    
    public function setContent($content) {
        $this->content = $content;
    }

    
    public function setDatum(DateTime $datum) {
        $this->datum = $datum->format('Y-m-d H:i:s');
    }
    
}


class BlogStorage {
    
    protected $db;
    
    public function __construct(DB $db) {
        $this->db = $db;
    }

    
    public function getRecent($count = 5) {
        $result = $this->db->query(sprintf('SELECT ... FROM blogs ORDER BY datum DESC LIMIT %d', $count));
        
        $blogs = array();
        
        while($blog_data = mysql_fetch_assoc($result)) {
            $blogs[] = Blog::loadFromArray($blog_data);
        }

        
        return $blogs;
    }

    
    public function getBlogByID($id) {
        $result = $this->db->query(sprintf('SELECT ... FROM blogs WHERE id = %d', $id));
        
        return Blog::loadFromArray(mysql_fetch_assoc($result));
    }

    
    public function put(Blog $blog) {
        if($blog->id() !== 0) {
            $this->db->query('UPDATE...')
        }
else {
            $this->db->query('INSERT...');
        }
    }

    
    public function delete($id) {
        $this->db->query('DELETE...');
    }
}

?>


Blogposts ophalen gaat nu zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$db
= new DB(..);
$blog_storage = new BlogStorage($db);
$recent_blogs = $blog_storage->getRecent(10);

foreach($recent_blogs as $blog) {
    echo '<li>' . htmlentities($blog->title()) . '</li>';
}

?>


En een nieuwe post toevoegen ongeveer zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$db
= new DB(..);
$blog_storage = new BlogStorage($db);

$new_blog = new Blog();
$new_blog->setTitle($_POST['title']);
$new_blog->setContent($_POST['content']);
$new_blog->setDatum(new DateTime());
$blog_storage->put($new_blog);
?>


Zie je dat het nu wat logischer allemaal wordt? Je kan een Blog gebruiken om hem op te slaan in de database, maar je zou ook een BlogXMLStorage klasse kunnen maken die de blogs opslaat in XML in plaats van een database. De blog is nu niet meer direct gekoppeld aan de database waardoor je hem voor veel meer doeleinden kan gebruiken.

Het heeft ook wat meer weg van de werkelijke wereld. Je zegt niet tegen je papiertje "sla jezelf op!". Instead stop jij het papiertje in een map of prik je het op je prikbord. Jij blijft in controle, jij bepaald wat er gebeurt. Niet hoe het gebeurt (maakt jouw het uit hoe het mechanisme van een map werkt, of wat de formule van de kurk in je prikbord is) maar wat er gebeurt. Dat is niet aan je papiertje, aan je blog-object, om te weten. Met klassen is het bijna hetzelfde als met mensen. Hoe minder ze weten, hoe beter >:)
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Manaus

Manaus

08/08/2008 13:09:00
Quote Anchor link
Hartelijk bedankt!! Hier kan ik mee verder. Zeer duidelijk trouwens;)
 
- -

- -

13/08/2008 15:20:00
Quote Anchor link
Jelmer schreef op 08.08.2008 12:48:
Met klassen is het bijna hetzelfde als met mensen. Hoe minder ze weten, hoe beter >:)

Dan is het met jou niet zo goed gesteld: jij weet echt veels-te-veel af van OOP, dat wil ik ook!
 



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.