Archief - PHP: OOP en MySQL joins

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

JensDT

Legacy Member
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:
$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:
$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 ;)

killgore

Legacy Member
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.

dJeez

Legacy Member
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.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan