Thread: PHP: OOP en MySQL joins
-
25-07-2007, 17:59 #1
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):
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 = "SELECT * FROM cats c LEFT JOIN forums f ON c.catID = f.catID";
Maar dit lijkt me geen propere code, verre van zelfs! Wie kan me hier wat raad geven ivm hoe ik dit best aanpak?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");
...
}
Alvast bedankt
no votes
-
-
25-07-2007, 19:07 #2Member
- 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
-
25-07-2007, 21:24 #3Member
- 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 alienoPastafarian by choiceno votes
