OOP database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4

Erwin H

Erwin H

17/01/2013 22:40:54
Quote Anchor link
Nicky Monsma op 17/01/2013 22:36:29:
ik geef je een voorbeeld hoe je echt moet parameteren

En dat is de kern van het probleem. Je zegt hier je MOET het zo dan, maar je KAN het ook anders doen. Dit betekent dat je moet weten hoe die class intern werkt om hem te kunnen gebruiken. Het idee van een class is nu juist dat je dat niet hoeft te weten. Dat je die class kan gebruiken en dat de class zelf wel zorgt voor het opvangen van fouten intern. Als een programmeur dus een keer een verkeerde aanroep doet, dan lukt de query niet, maar krijgt hij tenminste geen foutmelding op het scherm.
 
PHP hulp

PHP hulp

26/12/2024 23:38:24
 
Nicky Monsma

Nicky Monsma

17/01/2013 22:43:47
Quote Anchor link
tja als je een goede progammeur bent kan je er gewoon mee overweg het kan ook anders

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$DB
= new Database();

$Qyery = $DB->prepare('SELECT email FROM users WHERE username = ? LIMIT 1');

$Query->bind_param(array('monsma'));

$Result = $Qeury->execute();

$Result->result();
?>


zo moeilijk is het niet?
 
- Raoul -

- Raoul -

17/01/2013 22:44:36
Quote Anchor link
Het is niet moeilijk, maar je class zit gewoon puur slecht in elkaar.
Gewijzigd op 17/01/2013 22:45:39 door - Raoul -
 
Nicky Monsma

Nicky Monsma

17/01/2013 22:45:47
Quote Anchor link
Vertel wat er fout aan is laat jou class is zien ik kan het dan ook wel is beoordelen
 
- Raoul -

- Raoul -

17/01/2013 22:46:49
Quote Anchor link
Al wat fout aan jouw class is werd hierboven al uitgebreid door Erwin uitgelegd aan je.
 
Nicky Monsma

Nicky Monsma

17/01/2013 22:49:30
Quote Anchor link
weetjewat ik praat al niet meer met jullie want jullie weten niet waar je over praat
probeer eens na te denken elke keer als je een reactie plaatst he wat zou een idioot zeggen

en dan plaats je een reactie :) succses met je nozele leven ooit zou je het begrijpen ( als je bijna dood ben )
doei sukkels ik verlaat dit stomme forum jullie zijn prutsers
 
- Raoul -

- Raoul -

17/01/2013 22:51:05
Quote Anchor link
Nicky, Erwin probeert je te helpen door de minpuntjes van je class aan te tonen en waarom jouw class een slecht in elkaar zit. Volgens mij kan hier iemand niet echt tegen kritiek :-))
 
Erwin H

Erwin H

17/01/2013 23:16:58
Quote Anchor link
Nicky Monsma op 17/01/2013 22:43:47:
tja als je een goede progammeur bent kan je er gewoon mee overweg het kan ook anders

zo moeilijk is het niet?

Als je nu eens aandachtig naar mijn posts zou kijken en zou proberen te begrijpen wat ik zeg dan zouden we misschien nog ergens komen. Het gaat er niet om of de class werkt, mijn punt is dat de class fouten niet opvangt. Het idee van een class is dat die op zichzelf een bepaalde functionaliteit kan bieden en compleet kan verzorgen. Jouw class geeft problemen op het moment dat de class verkeerd wordt gebruikt. Ja, dat ligt in eerste instantie aan de programmeur, maar dan nog dient de class op een nette manier fouten af te handelen, zonder het script op te hangen.

Stel even de volgende situatie. Een script wil een pagevisit in de database opslaan voor een verdere statische pagina. Enige DB request is dus dat pagevisit opslaan. De programmeur doet nu alles goed (juiste volgorde), maar de database is om wat voor reden dan ook niet beschikbaar. De call gaat dus fout en het script hangt. Was dat nodig? Nee, de rest van de pagina had gewoon getoond kunnen worden, het zal de gebruiker namelijk worst wezen of die pagevisit wordt opgeslagen of niet. Vind jij dit nu echt een acceptabele situatie?
Gewijzigd op 17/01/2013 23:17:53 door Erwin H
 
Wouter J

Wouter J

17/01/2013 23:19:50
Quote Anchor link
Offtopic:
Mijn tip: Laat trollen lekker praten en help de TS verder, op gegeven moment verdwijnt ie wel.
 
Lord Gaga

Lord Gaga

18/01/2013 09:02:40
Quote Anchor link
Heeft iemand ook een voorbeeld van een database class dat aangeeft hoe het dan wel moet?
 
Wouter J

Wouter J

18/01/2013 11:33:40
Quote Anchor link
Kijk eens naar Doctrine DBAL. DBAL staat voor DataBase Abstraction Layer en is naar mijn mening een hele mooie, maar wel erg uitgebreide, implementatie van een Database class. In gebruik:
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
// ...

// insert

$dbal->insert('users', array(
    'name'     => 'Wouter',
    'password' => 'foo',
    // ...
));

// select
$user = $dbal->fetchAssoc('SELECT name FROM users WHERE id = ?', array(2));
echo $user['name']; // bijv. 'Wouter'

// delete

$dbal->delete('users', array(
    'id' => 2,
));
 
Lord Gaga

Lord Gaga

18/01/2013 12:32:42
Quote Anchor link
Hmm, ziet er best handig uit.
Ik heb echter een vraagje over de delete query, als ik 2 dingen opgeef in de array, bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
'id' => 2,
'name' = > 'test'


Wordt dat dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
DELETE FROM users WHERE ID = 2 AND name = 'test'


of:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
DELETE FROM users WHERE ID = 2 OR name = 'test'
 
Erwin H

Erwin H

18/01/2013 13:02:42
Quote Anchor link
Dat bepaal je zelf:

Eerst goed lezen.... Je had het niet over die select...
Gewijzigd op 18/01/2013 13:03:30 door Erwin H
 
Lord Gaga

Lord Gaga

18/01/2013 16:39:07
Quote Anchor link
Erwin H op 18/01/2013 13:02:42:
Dat bepaal je zelf:

Eerst goed lezen.... Je had het niet over die select...


Volgens mij begrijp je me niet helemaal. :P
Als je dit doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$dbal->delete('users', array(
    'id' => 2
));


komt dat op hetzelfde neer als:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
DELETE FROM users WHERE id = 2


(Toch?) Maar als je nu dit doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$dbal->delete('users', array(
    'id' => 2,
    'username' => 'test'
));


Wat gebeurd er dan? Worden dan alle rijen verwijderd die het id 2 hebben EN username test, of alle rijen met het id 2 OF username test?
 
Wouter J

Wouter J

18/01/2013 16:47:29
Quote Anchor link
Je bedoelt wat jij zou moeten doen of wat Doctrine DBAL doet? Voor dat laatste: in de source code zie je dat er AND gebruikt wordt.
 
Erwin H

Erwin H

18/01/2013 17:25:27
Quote Anchor link
Lord Gaga op 18/01/2013 16:39:07:
Erwin H op 18/01/2013 13:02:42:
Dat bepaal je zelf:

Eerst goed lezen.... Je had het niet over die select...


Volgens mij begrijp je me niet helemaal. :P

Klopt, die opmerking was ook aan mezelf gericht, omdat ik reageerde voor ik echt doorhad wat je nu eigenlijk vroeg...
 
Lord Gaga

Lord Gaga

18/01/2013 18:41:17
Quote Anchor link
Erwin H op 18/01/2013 17:25:27:
Lord Gaga op 18/01/2013 16:39:07:
Erwin H op 18/01/2013 13:02:42:
Dat bepaal je zelf:

Eerst goed lezen.... Je had het niet over die select...


Volgens mij begrijp je me niet helemaal. :P

Klopt, die opmerking was ook aan mezelf gericht, omdat ik reageerde voor ik echt doorhad wat je nu eigenlijk vroeg...



O, ik dacht dat je bedoeld dat ik het niet goed gelezen had, haha. :P

@Wouter:
En hoe moet ik die delete query dan gebruiken als ik OR wil gebruiken in plaats van AND, moet er daar dan weer een nieuwe function binnen die class worden aangemaakt?
 

Pagina: « vorige 1 2 3 4



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.