[OOP] Forum, categorieën class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end Developer

Front-end Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Junior .NET developer

Functie Jij hebt natuurlijk net jouw Bachelor op zak en gaat nu voor het eerst aan de slag bij een werkgever als junior .NET ontwikkelaar. Waarschijnlijk lijkt het jou spannend om ineens aan de slag te gaan bij klanten in de consultancy. Maak je niet druk, jij komt hier terecht in een warm bad en wordt totaal niet in het diepe gegooid. Zodra jij hier begint wordt jij gekoppeld aan een persoonlijke manager met een persoonlijk ontwikkelplan. Jij krijgt een scala aan trainingen, denk aan trainingen ten behoeve van het opdoen van zelf kennis en gedragscompetenties, maar ook trainingen voor

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 »

Software Ontwikkelaar PHP

Functie omschrijving Software Ontwikkelaar PHP gezocht! Wij zijn op zoek naar een ervaren PHP Software Ontwikkelaar om het team van onze opdrachtgever te versterken! De ideale kandidaat zal fungeren als verlengstuk van klanten en complexe technische vraagstukken met enthousiasme benaderen. Naast het werken met de nieuwste technologieën, ben je in staat om aan meerdere projecten tegelijkertijd te werken. Als je deze uitdaging aangaat, werk je nauw samen met front-end developers en draag je bij aan het realiseren van grote veranderingen bij klanten. Het bedrijf zoekt iemand die zichzelf graag uitdaagt en altijd streeft naar het leveren van de beste resultaten.

Bekijk vacature »

Embedded Developer C++

Functie omschrijving Ben jij op zoek naar een leuke uitdaging als Embedded Developer, zoek dan niet verder! Voor een leuke opdrachtgever in omgeving Rotterdam zijn wij op zoek naar een Embedded Developer die graag met Embedded Devices werkt. Je zult verantwoordelijk worden voor het ontwikkelen en onderhouden van diverse producten. Jouw specialisatie ligt op het vlak van software, hardware en back-end. Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke 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

Bekijk vacature »

Lead Front-end developer

Functie Hun huidige applicatie worden ontwikkeld in o.a. React, Redux, TypeScript. Ze werken graag met de nieuwste technieken en tooling en zoeken ook developers die hier proactief op zoek naar gaan. Als senior/lead developer ben je een kartrekker in het team. Naast het meedenken over bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Zo kun je bijvoorbeeld 1 dag in de week met 2 collega’s bezig zijn om samen met hen te kijken naar hun ontwikkeling, doelstellingen en uiteraard de gewenste begeleiding hierin. Hiernaast sta je als

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Dordrecht zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden 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

Bekijk vacature »

OutSystems Developer

Dit ga je doen Het van scratch af aan ontwikkelen van applicaties met OutSystems; Het aanhaken bij diverse projecten binnen de organisatie; Schakelen met de business; Meedenken over de mogelijkheden van het platform binnen de organisatie. Hier ga je werken Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan

Bekijk vacature »

C#.NET-developer - JUNIOR

Functie omschrijving Voor een leuke opdrachtgever in omgeving Brielle zijn wij op zoek naar een junior developer. Werk jij graag met de volgende tools & technieken? C#, .NET, ASP.NET, MVC en SQL? Kijk dan snel of dit iets voor jou is! Als programmeur bij een productiebedrijf zal je voornamelijk nieuwe software schrijven maar ook bestaande software verbeteren. Verder werk je veel samen in back end projecten met leuke collega's. Bedrijfsprofiel Met een team van ruim 130 personen staan ze elke dag weer klaar om IT en Business te combineren door het ontwikkelen van producten op maat. Er zijn 3 teams,

Bekijk vacature »

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

JAVA Programmeur

Bedrijfsomschrijving Functieomschrijving We zoeken per direct enthousiaste software engineers die ons team komen versterken.We werken in DevOps teams met een sterk gevoel voor verantwoordelijkheid. Er wordt nauw samengewerkt met ons Business analyse team (BAT), met onze uitvoerende medewerkers en met de DevOps teams onderling binnen het domein. Het liefst hebben we veel en vaak interactie met onze interne en externe eindgebruikers om zo de juiste dingen te maken. We werken multidisciplinair in een dynamische omgeving. Achtergrond opdracht De Businesseenheid Examens is verantwoordelijk voor de logistiek van de staatsexamens Voortgezet (speciaal) onderwijs, Nederlands als 2e taal en schoolexamens. In het kader

Bekijk vacature »

Lead C++ Developer

De rol van Lead C++ Developer Als Lead C++ developer bij KUBUS word je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de desktop applicaties van BIMcollab, ons platform voor 3D model-validatie en issue-management bedoeld om de kwaliteit van 3D design-modellen voor gebouwen te verbeteren. Betere 3D modellen leiden tot betere gebouwen, dus zo draag je bij aan verduurzaming van de gebouwde omgeving met slimmer gebruik van materialen, minder verspilling en energie-efficiënte gebouwen. Een goede gebruikerservaring staat bij ons hoog in het vaandel; we gaan in onze ontwikkeling voor innovatie en kwaliteit. In je rol als

Bekijk vacature »

Back-end ontwikkelaar

Functie omschrijving Wil jij meebouwen aan diverse databasesystemen in een klein bedrijf met een platte organisatie? In een team van ruim 10 ontwikkelaars wordt er aan diverse ICT oplossingen gewerkt. Jouw taken hierbij zullen bestaan uit: Het onderhouden en door-ontwikkelen van bestaande databases. Denk hierbij aan schema verbeteringen en performance-tuning. Bij nieuwe ontwikkelingen ga jij ook bezig met het bouwen van het databaseschema. Omdat je in een klein team werkt zal je ook de C# routine verder uitbouwen en ontwikkelen. Ook kan je meedraaien in algemene refactory-, ontwikkel- of testwerkzaamheden. Je zal voornamelijk gebruik maken van de volgende technieken: .NET

Bekijk vacature »

Java Full Stack Developer

Java Full Stack developer What makes Cognizant a unique place to work? The combination of rapid growth and an international and innovative environment! This is creating a lot of opportunities for people like YOU — people with an entrepreneurial spirit who want to make a difference in this world. At Cognizant, together with your colleagues from all around the world, you will collaborate on creating solutions for the world's leading companies and help them become more flexible, more innovative and successful. And this is your chance to be part of the success story: we are looking for a (Senior) Java

Bekijk vacature »

.Net ontwikkelaars voor de zorgsector

Bedrijfsomschrijving Voor onze klant in de omgeving van Zwolle zijn wij op zoek naar een ervaren .Net ontwikkelaar, bij voorkeur met ervaring binnen de belangrijkste sector van Nederland, namelijk: de zorgsector. Deze internationale organisatie ontwikkelt software voor de zorgsector. Er werken zo'n 25 medewerkers hard aan een oplossing die gebruikt wordt door heel Nederland. Er heerst een informele sfeer waarbij er altijd ruimte is voor een grapje. Je collega's zijn stuk voor stuk sterke ontwikkelaars vanuit verschillende achtergronden en met verschillende leeftijden. Je komt hier terecht in een organisatie die zich hard inzet om de zorgsector te verbeteren. De mogelijkheden

Bekijk vacature »
Milo S

Milo S

26/04/2011 15:11:30
Quote Anchor link
Beste,

Ik begin net in OOP, maar heb wel al aardig wat PHP ervaring. Nu wil ik alleen OOP gaan schrijven. Ik ben begonnen met een class genaamd categorie, nu vroeg ik me af of dit wel oke is.

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
<?php
class forumCategorie {
    
    public $id;    
    public $parent_id;
    
    
    function
__construct( $host, $user, $pass, $datb ) {
        /*
        MySQL verbinding maken
        */

    }
    
    # Categorie ophalen
    function getCategorie() {
        
    }

    
    # Sub-categorie ophalen
    function getSubcategorie() {
    }

    
    # Laatste topic ophalen
    function getLastTopic() {
    }

    
    # Aantal topic ophalen
    function countTopic() {
    }

    
    # Posts ophalen
    function counPost() {
    }
}

?>


Ik hoor graag, tips, opmerkingen en andere vormen van opbouwende kritiek...
Gewijzigd op 26/04/2011 15:17:00 door Milo S
 
PHP hulp

PHP hulp

26/12/2024 16:27:47
 
Arjan -

Arjan -

26/04/2011 15:37:49
Quote Anchor link
Het lijkt mij niet handig om je verbinding naar de database op te zetten in de class "forumcategorie". Je kan hier beter een aparte class voor gebruiken (bijvoorbeeld PDO) en deze resource meegeven aan je constructor van de betreffende class.

Dus bijvoorbeeld (simplistisch):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
protected $_db;

public function __construct(PDO $db) {

$this->_db = $db;

}

Ik weet niet hoe je de categorieën in de database hebt opgezet, maar is het niet handiger om alle categorieën in één keer op te halen? Dus bijvoorbeeld werken met parent_id in de database en hiervoor alleen een functie "getCategorie" gebruiken? Hiermee kan je ook direct het laatste bericht ophalen (bijvoorbeeld via een subquery). Overigens haal je nu Engelse en Nederlandse benamingen door elkaar. Is niet erg, maar misschien op termijn niet handig.

En wat wil je met "public $id" en "public $parent_id" precies bereiken?
Gewijzigd op 26/04/2011 15:42:11 door Arjan -
 
Milo S

Milo S

26/04/2011 16:15:10
Quote Anchor link
Beste Arjan,

Bedankt voor de snelle reactie. Ik heb eens gekeken, en rond gezocht op internet, en bedacht me dat ik niet eens een speciale class zou aanmaken voor me database. Ik heb er tenslotte maar 1, en maak 1 keer connectie en hou het voor gezien.

Ik heb zoals jij daar aangeeft me categorieen. Dus met een parent_id. Nu dacht ik dat het zo meteen de bedoeling was met OOP dat je dat allemaal spreid, het leek mij namelijk een op zich staand iets.

Ik ben tot nu toe hier:
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
<?php
class forumCategorie
{
    protected $db;
    
    # Constructor, word dus automatisch uitgevoerd.
    function __construct( $db )
    {

        $db = new PDO( 'mysql:host='.$db['host'].'; dbname='.$db['dbname'], $db['user'], $db['pass'] );
    }

    
    # Categorie ophalen
    function getCategorie( $id )
    {        
    }

    
    # Laatste topic ophalen
    function getLastTopic( $id )
    {
    }

    
    # Aantal topic ophalen
    function countTopic( $id )
    {
    }

    
    # Posts ophalen
    function countPost( $id, $top_id )
    {
    }
}

?>


Ik dacht dat je in je class de variabelen mee moest geven die je weer in je functies moet gebruiken, dit blijkt dus niet.
 
Arjan -

Arjan -

26/04/2011 16:24:15
Quote Anchor link
Quote:
Bedankt voor de snelle reactie. Ik heb eens gekeken, en rond gezocht op internet, en bedacht me dat ik niet eens een speciale class zou aanmaken voor me database. Ik heb er tenslotte maar 1, en maak 1 keer connectie en hou het voor gezien.


PDO is al een class die je kan gebruiken in je overige classes. PDO heeft super veel voordelen (prepared statements, etc.), dus ik raad je aan om dit te gebruiken.

Quote:
Ik dacht dat je in je class de variabelen mee moest geven die je weer in je functies moet gebruiken...


Dit is ook de juiste manier, maar ik doelde meer op de functie van die twee variabelen (maar die gebruik je dus voor het opvragen van de subcategorieën?).

Maar wanneer jij alle categorieën wilt ophalen, dan kan je net zo goed gelijk de subcategorieën ophalen. Hierdoor hoef je niet voor elke categorie een aparte query te maken voor je subcategorieën. Dit scheelt veel meer tijd en resources dan dat je alles wilt scheiden omdat het overzichtelijker is.

En in jouw revisie maak je nog steeds een database connectie aan in je constructor.

Je kan het beter zo 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
<?php

class ForumCategorie {

    protected $_db;

    public function __construct(PDO $db) {

        $this->_db = $db;

    }

}


$db = // pdo connectie / Dit kan je in een apart sql bestand zetten die je op elke pagina include

$ForumCategorie = new ForumCategorie($db);

$AndereClass = new AndereClass($db); // Niet gedefinieerd maar dienend als voorbeeld

?>


Een andere mogelijkheid is het gebruik maken van het Singleton patroon (http://nl.wikipedia.org/wiki/Singleton_(informatica)).
Gewijzigd op 26/04/2011 16:34:09 door Arjan -
 
Milo S

Milo S

26/04/2011 17:04:20
Quote Anchor link
Aaah nu snap ik wat je bedoel met die PDO verbinding. Ik maak dan een config bestandje aan met bijvoorbeeld:

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
<?php
$db
= array (
            'host' => '',
            'datb' => '',
            'user' => '',
            'pass' => ''
            );

try
{
    $db = new PDO('mysql:host='.$db['host'].';dbname='.$db['datb'], $db['user'], $db['pass']);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

catch(PDOException $e)
{

    echo 'Er is een fout opgetreden bij het maken van connectie met de database.';
}

?>


en mijn forum_cat.class.php heeft dit:
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
<?php
class ForumCategorie
{
    public $cat_id;
    public $top_id;
    protected $_db;
    
    # Constructor, word dus automatisch uitgevoerd.
    public function __construct(PDO $db)
    {

        $this->_db = $db;
    }

    
    # Categorie ophalen
    function getCategorie( )
    {        
    }

    
    # Laatste topic ophalen
    function getLastTopic( $cat_id )
    {
    }

    
    # Aantal topic ophalen
    function countTopic( $cat_id )
    {
    }

    
    # Posts ophalen
    function countPost( $cat_id, $top_id )
    {
    }
}

?>
Gewijzigd op 26/04/2011 17:10:06 door Milo S
 
Arjan -

Arjan -

26/04/2011 17:08:53
Quote Anchor link
Wat betreft de database connectie is dat inderdaad de manier die ik bedoel (er zijn vele manieren dus een bepaalde manier is niet per definitie de beste manier).

En dan kan je dus in alle functies binnen je class een query opzetten middels bijvoorbeeld: $sql = $this->_db->prepare("");
Gewijzigd op 26/04/2011 17:10:29 door Arjan -
 
Milo S

Milo S

26/04/2011 17:13:15
Quote Anchor link
Dan ga ik vanuit dit opzetje verder werken, en een index pagina van een forum bouwen. Mag je nu eigenlijk wel gewoon queries uitvoeren enzo in je functies, uiteraard PDO...
 
Arjan -

Arjan -

26/04/2011 17:22:43
Quote Anchor link
Van mij wel :) (anders heb je ook niets aan de database resource binnen je class). Alle database data opvragen buiten je class lijkt mij wat lastig. Sommigen beweren dat de schaalbaarheid wordt verkleind door binnen je class queries uit te voeren, maar wanneer je de database benamingen universeel en database schaalbaar houdt dan is er mijn inziens niets aan de hand.

Extra data / velden ophalen vanuit de database (zoals de subcategorieën binnen de hoofdcategorieën) die je later niet nodig hebt is geen wereldramp, aangezien je hierdoor veel minder (onnodige) functies hoeft te gebruiken en wellicht ook (afhankelijk van het systeem) minder afzonderlijke queries nodig hebt.

Trouwens, de countpost functie kan je ook wel integreren in de getCategorie functie. Stel je hebt 20 categorieën, dan zal je dus afzonderlijk 20 keer de functie countpost en bijbehorende query moeten uitvoeren om het aantal posts te verkrijgen.

Voor de categorieën lijkt mij het mooist om een multidimensionale array te retourneren, waarin de categorieën, subcategorieën en de bijbehorende gegevens (aantal posts) zijn opgenomen. Zodoende kan je eenvoudig loopen door de gegevens.
Gewijzigd op 26/04/2011 17:25:59 door Arjan -
 
Niels K

Niels K

26/04/2011 17:40:48
Quote Anchor link
Topic's en categorieën.. Moeten dat geen aparte klasses zijn? :)
Gewijzigd op 26/04/2011 17:41:07 door Niels K
 
Arjan -

Arjan -

26/04/2011 18:03:59
Quote Anchor link
Ja.
Gewijzigd op 26/04/2011 21:20:10 door Arjan -
 
Milo S

Milo S

26/04/2011 18:15:11
Quote Anchor link
@ Niels;
Zoals je ziet haal ik niet een heel topic op, maar alleen de laatste. Topic's zelf worden inderdaad een andere klasse... Niet goed?
 
Arjan -

Arjan -

26/04/2011 20:17:54
Quote Anchor link
Offtopic: Ik dacht dat jij (Milo) vroeg of een topic in een aparte class moet :). Jullie avatars lijken op het eerste oog zo op elkaar.

Ontopic: De laatste topic opvragen behoort tot de categorieën, dus dat kan best in de ForumCategorie class.
Gewijzigd op 26/04/2011 20:18:50 door Arjan -
 
Jaron T

Jaron T

26/04/2011 21:11:49
Quote Anchor link
Arjan - op 26/04/2011 18:03:59:
Ja, eventueel kan je de topic class extenden naar de categorie class (class ForumTopic extends ForumCategorie), aangezien een topic altijd in een categorie valt.


Nee, niet extenden.. welke eigenschappen heeft een topic die een categorie ook heeft?

wanneer wel?

Class User;
Class Supplier Extends User;
class Manager Extends User;
// etc
 
Pieter Jansen

Pieter Jansen

26/04/2011 21:19:17
Quote Anchor link
De categorie? Maar je hebt wel gelijk hoor, harr.
Gewijzigd op 26/04/2011 21:23:17 door Pieter Jansen
 
Milo S

Milo S

26/04/2011 22:05:01
Quote Anchor link
Ik heb dan nu alle queries gemaakt, en zal morgen kijken hoe dat met PDO allemaal werkt. Bedankt voor de hulp, ik zal deze dagen nog wel meer om hulp vragen. Het tis nu nog redelijk hocus spocus.

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
<?php
class ForumCategorie
{
    public $id;
    public $top_id;
    protected $_db;
    
    # Constructor, word dus automatisch uitgevoerd.
    public function __construct( PDO $db )
    {

        $this->_db = $db;
    }

    
    # Categorie ophalen
    function getCategorie( )
    {

        $sql =
        "
        SELECT
            cat.title    AS cat,
                
            subCat.id    AS subCatID,
            subCat.title AS subCat,
            subCat.description
        FROM
            forum AS cat
        INNER JOIN
            forum AS subCat
        ON
            cat.id = subCat.parent_id
        GROUP BY
            subCat.id
        ORDER BY
            cat.id,
            subCat.title
        "
;    
    
    }

    
    # Laatste topic ophalen
    function getLastTopic( $id )
    {

        # Query
        $sql =
        "
        SELECT
            MAX( fu.username )                                   AS lastUser,
            COUNT(fp.id)                                         AS posts,
            DATE_FORMAT( MAX( fp.dateTime ), '%d %M %Y, %H:%i' ) AS lastPostDate
        FROM
            forum_post   AS fp
        LEFT JOIN
            user         AS fu
        ON
            fp.user_id = fu.id
        WHERE
            fp.cat_id = '"
.$id."'
        "
;
    }

    
    # Posts ophalen
    function countPost( $id, $top_id )
    {

        $sql =
        "
        SELECT
            ft.id,
            COUNT(ft.id) AS topics
        FROM
            forum_topic  AS ft
        WHERE
            ft.cat_id = '"
.$id."'
        "
;
    }
}

?>


Uiteraard nog mysql_real_escape_string, maar weet niet hoe dat bij PDO zit, zijn daar andere functies voor enzovoorts...
 
Arjan -

Arjan -

26/04/2011 22:15:04
Quote Anchor link
Met PDO gebruik je doorgaans prepared statements, kortweg komt het er op neer dat je het volgende doet:

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

$veldwaarde
= 'een waarde';

$sql = $db->prepare("

SELECT id FROM tabel WHERE veld = :veldwaarde

"
);

$sql->bindParam(':veldwaarde', $veldwaarde);

if($sql->execute()) {

$data = $sql->fetchAll(PDO::FETCH_ASSOC);

}


?>


Dus je bind een variabele aan een constante (beginnend met een dubbele punt) in je query. Hierdoor hoef je mysql_real_escape_string niet meer te gebruiken, aangezien de prepared statements (bindParam en bindValue) dit al voor je doen. Zo stop je altijd veilig de data in je database!

Hiermee kan je ook dit soort constructies gebruiken (simplistisch weergegeven):

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

$sql
= $db->prepare("

INSERT INTO tabel (veldnaam) VALUES (:veldwaarde)

"
);

$sql->bindParam(':veldwaarde', $veldwaarde, PDO::PARAM_INT);

for($i = 0; $i<10; $++) {

$veldwaarde = $i;

$sql->execute();

}


?>


Hierboven zal dus 0 t/m 9 in verschillende records worden toegevoegd in de database.

De bindParam zorgt ervoor dat een referentie wordt aangemaakt, waarbij de waarde veranderbaar is voor, in dit geval, de variabele $veldwaarde. Dus je kan de waarde van $veldwaarde elke keer veranderen, waarna je execute() uitvoert. Dit kan handig zijn als je bepaalde verschillende bewerkingen op alle records moet uitvoeren. Of, zoals in dit geval, meerdere records wil toevoegen met verschillende waarden.

Dit is de beste (Nederlandse) tutorial over PDO: http://www.phptuts.nl/view/27/
Gewijzigd op 26/04/2011 22:27:04 door Arjan -
 
Niels K

Niels K

27/04/2011 21:16:44
Quote Anchor link
Daarnaast public variabeles zomin mogelijk gebruiken.. (Alternatief: Protected, private). Daarnaast hebben zijn functies nu altijd public... Benoemd ze dus even apart altijd ;) Dat is voor een andere programmeur ook makkelijker lezen..

Je zou ook eens kunnen kijken naar een ORM. Overigens SQL injection is eventueel mogelijk nu.. Maar ik weet dat je daar (normaliter) rekening mee houdt..

Heb je al nagedacht over user login / registratie ? Waar ga je de gebruiker(s) in opslaan? Ook database of iets anders? (Ldap bijvoorbeeld ;p)

Succes
 



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.