BlogSysteempje maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C#.NET Developer

Functieomschrijving We are looking for a dutch native speaker In deze uitdagende functie ga je werken als onderdeel van het development team, in de functie van C#.NET Developer, Je gaat maatwerk software bouwen voor diverse klanten. Ook optimaliseer je bestaande software en bouw je API koppelingen. Je bent vooral met back-end development bezig. Je krijgt veel vrijheid in deze functie en je krijgt de kans om mee te denken in bedrijfsprocessen. Deels thuiswerken is geen enkel probleem! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van

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 »

Traineeship IT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

Laravel developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

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

Dit ga je doen Development d.m.v. XQuery, JSON/XML en REST API's; Ontwikkelen aan een tof en complex zorgplatform; Koppelingen maken met de NoSQL database; Testen en documenteren van de ontwikkelde functionaliteiten; Samenwerking met andere front- en back-end ontwikkelaars. Hier ga je werken Voor een vooruitstrevende organisatie binnen de zorg in Den Haag zijn wij opzoek naar een Back-end Developer die ervaring heeft met o.a.XQuery en Vue.JS of daarin graag zou willen ontwikkelen. Je zal ontwikkelen aan een tof en complex zorgplatform en koppelingen maken met de NoSQL database. Ook het testen en documenteren van de ontwikkelde functionaliteiten behoort tot jouw

Bekijk vacature »

Senior Node.js developer Digital Agency

Functie Door de groei van de organisatie zijn ze op zoek naar een Tech Lead. Als tech lead ben jij verantwoordelijk Als Back end Node.js developer kom je terecht in een van de 8 multidisciplinaire teams in het projectenhuis. Afhankelijk van jouw interesses, wensen en capaciteiten word je bij projecten en onderwerpen naar keuze betrokken. Als ervaren ontwikkelaar zul jij vaak leiding nemen in de projecten en in het team een aanvoerder zijn van technische discussies. Uiteindelijk wil jij natuurlijk de klantwensen zo goed mogelijk vertalen naar robuuste code. De projecten kunnen varieren van langlopende- tot kleinschalige trajecten. Voorheen werkte

Bekijk vacature »

.NET developer

Functie As a .NET developer you start in a driven and diverse development team. Your team consists of 16 IT professionals, including 7 software engineers. Because your new employer is internationally active, there are also international IT professionals working in the IT department. As a result, the official language is English. As a team you are responsible for a new Cloud Native product. This product runs entirely in Azure with a Progress Database and various Azure Functions. In addition, this product has a JS front-end, a REST API system and a layer in C # .NET. The idea is therefore

Bekijk vacature »

Senior Front end developer Automotive Angular

Functie Als Senior Front end developer kom je te werken in een team van 11 developers. 9 van de 11 focussen zich op back end, welke is geschreven in Java, en 2 op de front end waarbij er gebruik wordt gemaakt van Typescript en Angular. De focus in deze rol ligt op 2 aspecten; doorontwikkeling van de eigen tooling en gebruik van de tooling t.b.v. klantprojecten. Momenteel zijn ze in de afrondende fase van een project waarbij ze het gehele verkoopproces van nieuwe auto’s anders ingeregeld hebben voor een grote dealer in Nederland. Waarbij Auto’s normaliter pas verkocht werden in

Bekijk vacature »

Full-stack developer

Als Full-stack developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Samen met je SCRUM team werk je aan zowel de front- als de back-end. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein genoeg om als individuele ontwikkelaar invloed uit te kunnen oefenen en echt het verschil te kunnen maken. Ons ontwikkelteam bestaat uit ruim 40 ontwikkelaars, testers, scrum

Bekijk vacature »

Back-end PHP Software Developer - Juniorfunctie

Functieomschrijving Wij zijn op zoek naar een PHP Software Developer om ons team te versterken en mee te werken aan de ontwikkeling van eigen IOT-oplossingen. In deze functie ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor het uitlezen en managen van sensoren in machines. Je werkt nauw samen met een team van ontwikkelaars en engineers om de beste software-oplossingen te creëren. Jouw werkzaamheden zien er als volgt uit: Je bent in deze rol verantwoordelijk voor het ontwerpen, ontwikkelen en onderhouden van webapplicaties en softwaretoepassingen voor in-house ontwikkelde IOT oplossingen. Je werkt aan complexe databases en back-end

Bekijk vacature »

C# .NET developer voor innovatieve applicaties gez

Bedrijfsomschrijving Deze werkgever houdt zich al ruim 20 jaar bezig met het ontwikkelen van innovatieve software en dat willen ze graag nog lang doorzetten. En dat merk je ook als je als .NET developer hier aan de slag gaat. De applicaties worden continu doorontwikkeld met altijd als uitgangspunt dat zowel de kwaliteit als het gebruikersgemak van hoog niveau is. Het bedrijf telt inmiddels ruim 25 medewerkers waarvan meer dan de helft op de development afdeling werken. Meer weten over deze werkgever? Mail naar [email protected] of bel 0657578548 Functieomschrijving Je komt te werken in een Scrum team met andere .NET developers

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »

Embedded Software Developer Games

Functie omschrijving Heb jij affiniteit met hardware en wil jij kleuren binnen een Qt framework? Spreek jij de talen C en of C ++? Dan ben ik wellicht opzoek naar jou! Voor een super gave opdrachtgever in omgeving Delft is er namelijk plek voor een nieuwe kracht! Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke game industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen en buitenland? Je zult in een team, samen met vier ontwikkelaars, de mooiste

Bekijk vacature »

Oracle Apex developer

Bedrijfsomschrijving My client is a technology company based in Den Bosch, the Netherlands. They specialize in providing innovative software solutions to clients, and they are currently looking for an experienced Oracle Apex developer to join the IT team. Functieomschrijving As an Oracle Apex developer, you will be responsible for designing, developing, and maintaining web-based applications using Oracle Apex. You will work closely with project managers, business analysts, and other developers to ensure that clients' needs are met and that the software solutions are of the highest quality. Responsibilities: Design, develop, and maintain Oracle Apex applications. Work with project managers and

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

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