BlogSysteempje maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer

Dit ga je doen Tot jouw takenpakket behoort onder andere: Webapplicaties ontwerpen, bouwen, testen en implementeren in .NET/C#.; Ontwikkelen, implementeren en beheren van maatwerkapplicaties; Onderhouden en beheren van standaardpakketten; Onderzoeken en beoordelen van nieuwe technieken. Hier ga je werken Als .NET ontwikkelaar kom je te werken bij een grote semioverheidsinstelling in Nijmegen. De organisatie staat garant voor het leveren van onderwijs en les- en onderzoeksmateriaal voor duizenden betrokkenen. De organisatie wil bijdragen aan een gezonde, vrije wereld met gelijke kansen voor iedereen. Binnen de teams hangt een open en collegiale cultuur met veel aandacht voor een prettige en sociale werksfeer.

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

.NET Developer

Dit ga je doen (Door)Ontwikkelen van het applicatielandschap; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het applicatielandschap; Sparren met de business. Hier ga je werken De organisatie is werkzaam in de financiële dienstverlening met meer dan 200 medewerkers en meer dan 250.000 eindgebruikers is het een van de grotere binnen haar branche. Je komt te werken in een team waarmee je verantwoordelijk bent voor het ontwikkelen en onderhouden van de financiële applicaties binnen de organisatie, denk hierbij aan het bouwen en onderhouden van portalen. Als .net developer ga jij het development team ondersteunen met de transitie naar

Bekijk vacature »

PHP Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij op zoek naar een nieuwe uitdaging? Lees dan snel verder! Voor een organisatie in de regio Utrecht die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in

Bekijk vacature »

Node.js developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Front-end Developer Magento 2/Wordpress

Voor het aantrekkelijk houden en steeds vernieuwen van de huidige websites en webshops en het meedenken in de marketing zijn wij per direct op zoek naar een ervaren Front-end developer met gedegen kennis van Magento 2 (webshops) en Wordpress (websites). Wat bieden wij jou Mooi salaris! Meteen op contract bij de opdrachtgever! Gezellig, Kempisch bedrijf! 35 uur per week! Auto van de zaak! Wie ben jij Van een front-end developer verwachten wij: Een afgeronde Bachelor ICT opleiding met profiel ICT & Media Design. Dat je in het bezit bent van een Magento 2 professional front-end developer certificaat; Je hebt ruime

Bekijk vacature »

Junior/medior Back end developer PHP, Laravel

Functie Jij als ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor veel van je tijd je bezig houden met het ontwikkelen van maatwerk features en applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. Jij als full stack developer zult dus

Bekijk vacature »

Low Code Ontwikkelaar

In het kort Als Low Code Developer werk je aan projecten bij en voor onze klanten, waarbij je voor het ontwikkelen van de oplossingen een technisch low-code platform gebruikt. Samen met het team streef je naar de beste oplossing en bepalen jullie de juiste aanpak. Je rol is divers en je bent van begin tot eind betrokken bij de ontwikkeling zowel de back-end en de front-end van de applicatie. Naast de ontwikkeling en oplevering, breng je ook advies uit aan de klant waarom bepaalde keuzes worden gemaakt. Je bent dan ook communicatief sterk en kunt je keuzes goed (inhoudelijk) onderbouwen.

Bekijk vacature »

Applicatie Ontwikkelaar

Bedrijfsomschrijving DUO verzorgt als uitvoeringsorganisatie, zijnde onderdeel van het Ministerie van Onderwijs, Cultuur en Wetenschap de uitvoering van complexe wet- en regelgeving en heeft een uitgebreid dienstenpakket. DUO financiert en informeert onderwijsdeelnemers en onderwijsinstellingen. Voor verdere informatie zie www.duo.nl Functieomschrijving Wie zoeken we? Jij bent een enthousiaste, flexibele OPS’er die het leuk vindt om het bestaande examenlandschap te vernieuwen. Je bent leergierig en hebt interesse in cloud- en containertechnieken zoals OpenShift, Docker en Helm. Je gaat een uitdaging niet uit de weg en wil je nieuw opgedane kennis graag delen met de collega’s binnen en buiten het team. Doordat de

Bekijk vacature »

PHP Laravel developer

Functie omschrijving Weet jij alles van Laravel en krijg je energie van het ontwikkelen van software hiermee? Laat snel wat van je horen want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch. Jouw taken zullen bestaan uit: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Documentatie schrijven over applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein softwarebedrijf. Er werken ongeveer 15 medewerkers, verdeeld in meerdere teams, zoals back-end en front-end development, projectmanagement

Bekijk vacature »

Senior PHP Developer

As a Senior PHP Developer at Coolblue, you ensure that our webshops work as optimal as possible and you choach other colleagues on the hard and soft skills. How do I become a Senior PHP Developer at Coolblue? As a PHP Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you are not averse to a little TypeScript or other technologies that might be used. Would you also like to become a PHP Developer at Coolblue? Read below if the

Bekijk vacature »

.NET Developer C# VB

Samengevat: Deze werkgever is actief in software voor het matchen van vraag en aanbod van gebruikte auto-onderdelen. Ben jij een .NET Developer? Heb je ervaring met het ontwikkelen (REST) en integreren van webservices? Vaste baan: C# .NET Developer C# VB HBO €2.600 - €6.200 Wij ontwikkelen software om vraag en aanbod van onderdelen van personenauto's bij elkaar te brengen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. De branche van dit bedrijf is Automotive. Functie: Voor de vacature als .NET Developer Dordrecht HBO ga je

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 »

PHP back-end developer gezocht!

Functie Werk je liever zonder druk en keiharde deadlines maar met de focus op kwaliteit? Dan kom je hier op de juiste plek terecht! In Het team bestaat momenteel uit 12 developers, hiernaast werken er collega’s van front-end, UX maar ook marketing/sales en support. In iedere sprint ontwikkel je samen functionaliteiten met als uitdaging om de klanten de beste gebruikerservaring te bieden. Ze bieden een werkplek waar je jezelf kunt blijven ontwikkelen, en mee te werken aan zowel bestaande als nieuwe mogelijkheden. Eisen • HBO werk- en denkniveau (ze kijken niet naar een papiertje) • Je denkt graag mee over

Bekijk vacature »

Traineeship Front-end developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

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

09/05/2024 07:59:15
 
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.