BlogSysteempje maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior .NET developer

Functie Als Senior .NET ontwikkelaar ga jij aan de slag in ons Research & development team. Ons team bestaat uit 17 collega’s! Wij zijn momenteel druk bezig met het opzetten van een geheel nieuwe architectuur voor een nieuw product. Hierbij maken wij o.a. gebruik van VS2022 en .NET 6.0. Jouw functie is dan ook voornamelijk backend georiënteerd bij ons. Aangezien wij meetapparatuur ontwikkelen voor de chemische industrie is het ook erg belangrijk om kwalitatief hoogwaardige software te ontwikkelen voor de besturing hiervan. Verder ben jij verantwoordelijk voor het designen, implementeren en testen van nieuwe features. Ook zorg jij voor toekomstbestendige

Bekijk vacature »

.NET developer

Functie As a .NET developer you work together in a multidisciplinary development team with 1-2 Senior .NET developers, two front-end developers, Data Scientists and one UX designer. As a team you work on developing a Cloud based application and making this application more stable. Unit testing will also become very important in your new position. Together with the Senior .NET developer you will be responsible for developing the API. You work with a lot of data and occasionally there will also be data issues and some queries will have to be run. This means that you will work a lot

Bekijk vacature »

Back end developer Digital agency

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 20 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

.NET Developer

Functie omschrijving .NET developer met ervaring gezocht! Voor een softwarebedrijf in de regio Veenendaal zijn wij op zoek naar een .NET developer met een aantal jaar ervaring. Jij bent zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Verder ben je bezig met nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en productspecialisten om zo mooie producten te creëren. Bedrijfsprofiel De organisatie waar je voor gaat werken is een snelgroeiende softwareleverancier en allround dienstverlener. Deze organisatie heeft zowel klanten die

Bekijk vacature »

C# developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als C# Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the Year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

.NET developer

Functie Als developer heb jij de keuze om aan te sluiten bij het team (13 developers) die op locatie projectmatig bij klanten werkt. Wanneer jij liever intern bij de werkgever werkt is er ook alle ruimte voor jou in het interne team (8 developers) van dit bedrijf. Je werkt samen aan verschillende projecten bij of voor de klant. Het project wordt aangeleverd door sales aan de project manager. Die maakt samen met de Resourcer een planning en op basis daarvan wordt uit het development team een “projectgroep” opgesteld. Hoeveel en welke projecten jij wilt oppakken gebeurt geheel in samenspraak met

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden je MBO of HBO ICT in ontvangst mogen nemen? Of ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een uitdagende werkgever in de regio van Tilburg zijn wij op zoek naar een ambitieuze back-end programmeur met affiniteit met MS Acess. Samen met een enthousiast team ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL, Maar affiniteit met MS Acess is nog belangrijker. Je bent sociaal naar klanten en flexibel ingesteld. Je denkt altijd in kansen en gaat graag de uitdaging aan. Verder

Bekijk vacature »

PHP Developer (junior functie)

Functie omschrijving Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed leesbaar is. Je maakt voor bedrijven op maat

Bekijk vacature »

Software Ontwikkelaar .NET te Zaandam

Bedrijfsomschrijving Je komt hier terecht bij een door-en-door softwarebedrijf, waarbinnen meerdere SaaS pakketten worden ontwikkelt voor diverse sectoren. Hierbij kun je denken aan bijvoorbeeld de logistieke en medische branche. Deze organisatie kenmerkt zich door de hoge mate van complexiteit in de applicaties, wat betekent dat jij je hier niet zal gaan vervelen. Integendeel: Jij gaat hier elke dag ontzettend veel leren en je in razend tempo ontwikkelen als C# .Net Developer met focus op back-end. Het team bestaat uit ongeveer 20 personen personen, waarvan het grootste deel zich richt op software development. De sfeer is informeel en professioneel. De producten

Bekijk vacature »

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

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 »

Starter/junior PHP developer

Functie Momenteel zijn ze op zoek naar een junior PHP developer om het team te versterken. Als back-end developer bouw je de enterprise software die hun bedrijf helpt bij haar primaire processen. Afhankelijk van de omvang van het project werk je in een klein team aan een project. Ze hebben dagelijkse stand-ups en elke twee weken een scrumsessie, begeleid door de Scrum Master, waar je je ideeën kunt presenteren en samen met de Product Owner kunt werken aan het beste product. Ze vertrouwen enorm op hun eigen bedrijfssoftware. Dit geeft hun een groot voordeel ten opzichte van hun concurrentie. Zo

Bekijk vacature »

Senior Applicatie ontwikkelaar Java

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving We verwachten van je,

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

26/04/2024 22:19:58
 
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.