database in class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen VD

Jeroen VD

27/03/2012 13:51:47
Quote Anchor link
ik heb een vraagje: kan je een database bewerking uitvoeren vanuit een class? ik ben nu een beetje begonnen met classes, is wel heel mooi, maar hoe los ik het op als ik iets uit een database wil ophalen, in die class? is dat uberhaupt wel mogelijk
 
PHP hulp

PHP hulp

24/11/2024 14:13:51
 
- Ariën  -
Beheerder

- Ariën -

27/03/2012 13:55:43
Quote Anchor link
Ja, het ligt eraan, om wat voor database het gaat?

De connectie zou je mooi in de constructor uit kunnen voeren?
 
Jeroen VD

Jeroen VD

27/03/2012 13:58:36
Quote Anchor link
PDO - mysql. je zou dan een pdo object kunnen instantieren in de gewonen procedurele code, en dan dat object meegeven als connectie in de constructor. had ik bedacht.

alleen dan het daadwerkelijk uitvoeren van queries, hoe doe ik dat dan in een class? (zowel SELECT als UPDATE)
 
- Ariën  -
Beheerder

- Ariën -

27/03/2012 14:01:59
Quote Anchor link
PDO is al een class op zich, dus waarom wou je dat nog in een eigen class willen bouwen? je kan als het goed is PDO zelfs nog extenden als je wilt, wat mij logischer lijkt, als je er wat meer uit wilt halen.
 
Jeroen VD

Jeroen VD

27/03/2012 14:06:45
Quote Anchor link
maar ik moet toch de connectiegegevens doorgeven? ik wil PDO niet uitbouwen ofzo, maar alleen in een class data kunnen ophalen, of veranderen. dus dan heb ik de methods van PDO nodig, en de connectiegegevens. en om dat dan te kunnen bouwen, zal ik een PDO class moeten instantieren?
 
- Ariën  -
Beheerder

- Ariën -

27/03/2012 14:19:48
Quote Anchor link
Ah zo, ik dacht dat je een eigen database-class op zich wou maken.
 
Jeroen VD

Jeroen VD

27/03/2012 14:23:12
Quote Anchor link
zou zo'n regel dan kunnen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$this
->_results = $db->query("SELECT * FROM table");
?>
 
Kris Peeters

Kris Peeters

27/03/2012 14:31:18
Quote Anchor link
Je kan een pdo object meegeven aan de class.


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

class My_class {
  private $pdo;
...
  function
__construct($pdo) {
    $this->pdo = $pdo;
  }
}

?>


Dan kan je binnen die class doen wat je zelf voorstelt
 
Jeroen VD

Jeroen VD

27/03/2012 14:35:39
Quote Anchor link
en hoe voer ik dan een query uit? zoals ik hierboven beschreef? ben nog een beetje nieuw met OOP....
 
Kris Peeters

Kris Peeters

27/03/2012 14:41:18
Quote Anchor link
Ja, inderdaad zoals je zelf toonde.

Alleen ... of het resultaat in een $this-> variabele moet, hangt dan weeral af van de context.

Geef zelf eens een concreet voorbeeld van wat je wil bereiken. Toch altijd duidelijker dan te discussiëren in het ijle ...
 
Jeroen VD

Jeroen VD

27/03/2012 14:52:15
Quote Anchor link
niet zo raar, gewoon wat ophalen in de constructor
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$my_object
= new My_class($db);

class My_class {
  private $pdo;
  private $result;
  function
__construct($pdo) {
    $this->pdo = $pdo;
    $this->result = $pdo->query('SELECT * FROM atable');
  }
}

?>

maar hoe fetch ik dat dan?
Gewijzigd op 27/03/2012 14:52:33 door Jeroen VD
 
Niek Ha

Niek Ha

27/03/2012 15:03:40
Quote Anchor link
Probeer eerst anders eens een tutorial te volgen over pdo, zo krijg je ook meer inzicht in OO Programmeren etc. Nu kan je wel voor elke functie die je wilt gaan uitvoeren een post maken op het forum, maar als je het eerst leert gebruiken zal je er zelf ook meer van snappen.
Succes.
 
Jeroen VD

Jeroen VD

27/03/2012 15:40:54
Quote Anchor link
bedankt, was er zelf helemaal niet op gekomen om een tutorial te volgen, wat stom van mij! heb je nog meer van die zeer nuttige tips voor mij?
 
Ozzie PHP

Ozzie PHP

27/03/2012 15:44:49
 
Jeroen VD

Jeroen VD

27/03/2012 15:46:59
Quote Anchor link
had ik al gehad ozzie, was meer een sarcastische reactie, maar toch bedankt ;)

Toevoeging op 27/03/2012 15:47:37:

het is gewoon dat ik nog niet zo bekend ben met de OO syntax
 
Wouter J

Wouter J

27/03/2012 16:23:36
Quote Anchor link
Beter is werken met DataMappers, mooi voorbeeldje: http://www.phphulp.nl/php/forum/topic/oop-in-combinatie-met-database/81754/#580025

De rest van dat topic is waarschijnlijk ook wel interessant om door te lezen.
 
Jeroen VD

Jeroen VD

27/03/2012 16:27:43
Quote Anchor link
kijk daar heb ik wat aan, bedankt!

Toevoeging op 27/03/2012 18:44:04:

deze code uit pim's datamapper, zie ik nu goed dat je methods kunt chainen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$sql
  = 'SELECT * FROM X WHERE id = ?';
$stmt = $this->db->prepare($sql);
$data = $stmt->execute(array($id))->fetch();
return $this->populate($data);
?>
 



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.