1. #1

    Registered
    13/11/05
    Posts
    4
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0

    PHP: OOP en MySQL joins

    Hoi,

    Om mijn programmeerkunsten te onderhouden ben ik nu bezig een eenvoudig forum te schrijven in PHP (5) & MySQL. Nu ben ik echter op het volgende probleem gestoten: de eenvoudigste manier om alle categorieën en forums op te halen is met deze query (noot: alle veld- en tabelnamen zijn louter illustratief, moest ik hier m'n code precies copy/pasten zal er veel tussen staan dat niet terzake doet):

    PHP Code:
    $query "SELECT * FROM cats c LEFT JOIN forums f ON c.catID = f.catID"
    En dan zit je dus met het geweldige probleem dat je mysql_fetch_object met een gegeven class niet kan gebruiken. Stel dat je een class "Category" en een class "Forum" hebt, dan is de enige manier die ik tot nu toe bedacht heb om én je categorieën als object, en je forums als object uit deze query te halen, fetch_object 2x aan te roepen op dezelfde result resource (en dus de result pointer tussendoor telkens terug te plaatsen dmv. mysql_data_seek). Zo dus:

    PHP Code:
    $query "....";
    $res mysql_query($query);
    $i=0;
    while (
    $cat mysql_fetch_object($res"Category"))
    {
       
    mysql_data_seek($res$i++);
       
    $forum mysql_fetch_object($res"Forum");
       ...

    Maar dit lijkt me geen propere code, verre van zelfs! Wie kan me hier wat raad geven ivm hoe ik dit best aanpak?

    Alvast bedankt
    no votes  

  2. #2

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Een container/tussen klasse schrijven?
    Fact is dat je het niet zo proper gaat krijgen anyway. Databases zijn gemaakt om grote hoeveelheden data op te slaan, niet direct om OO-gerangschikte data op te slaan. OO-databases zijn in ontwikkeling maar zijn nog steeds niet echt op een punt van nuttigheid gekomen.

    Ik gebruik die fetch_object zelfs nooit gezien ik alles onmiddellijk in tables steekt. Het gebeurt maar zelden dat ik men mysql-data rechtstreeks in een klasse nodig heb.
    no votes  

  3. #3
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    Als je proper OO wil werken van en naar relationele databases toe doe je dat best via Object Relational Mapping. Een goed project wat dat betreft voor PHP is Propel.
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in