Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[OO PHP] Aantal zoekresultaten uit MySql query

Gooly
2 antwoorden
  • Ik ben onlangs begonnen met OO PHP en nog naar hartelust aan het experimenteren. Zo ben ik nu al even bezig met een class voor MySql handling.
    Het punt waar ik op stuit is het volgende:
    Als ik een zoek query uitvoer, dan wil ik regelmatig ook graag weten hoeveel resultaten er gevonden zijn. Regelmatig, maar dus lang niet altijd. Ik wil dus een manier hebben om het aantal gevonden zoek resultaten terug te krijgen uit een object/class. Volgens mij (met de nadruk op volgens mij) kan een method maar 1 resultaat retourneren. ('return $resultaat1 $resultaat2;' is volgens mij niet mogelijk.)

    Ik zoek dus naar een/de beste manier om behalve het zoek resultaat terug te krijgen uit de class/method, ook het aantal gevonden resultaten te weten te komen. Daarbij heb ik vier manieren verzonnen, elk met hun eigen voor en nadelen. Mijn vraag is simpel: hoe denken de meer ervaren OOP'ers hier over? (En misschien zijn er nog wel meer opties waar ik niet aan heb egdacht.)

    De opties:

    Het resultaat van de query tesamen met het totaal aantal gevonden resultaten opslaan in een assosiatieve array en die retourneren vanuit de class / method
    ($query['result'] en $query['total'])
    Voordeel:
    alles altijd bij de hand.
    Nadeel:
    vaak voor niks het aantal resultaten mee laten nemen.
    De resutaten moeten eerst worden 'uitgepakt' uit de geretouneerde array.

    Twee verschillende methods aanmaken; eentje om het resultaat op te halen, eentje om alleen het aantal resultaten te tellen
    Voordeel:
    Ik laat de class alleen doen wat nodig is.
    Nadeel:
    als ik het totaal aantal wil weten moet ik de query twee keer aanroepen. (1 keer voor de resultaten en 1 keer voor het aantal)

    PHP laten tellen (b.v. m.b.v. een sizeof() op het resultaat)
    Voordeel:
    De class hoeft alleen maar de zoekquery uit te voeren
    Nadeel:
    Het gaat rechtstreeks in tegen de mij ooit geleerde regel: "Laat PHP niet doen wat MySQL kan doen"

    Na het aanroepen van de class, terug in het 'hoofdscript' alsnog een mysql_num_rows uitvoeren op het resultaat
    Voordeel:
    De class hoeft alleen maar de zoekquery uit te voeren
    Nadeel:
    Dan ga ik buiten de class om alsnog met MySQL aan de gang terwijl het de juist de bedoeling was om het allemaal keurig binnen de class te houden.
  • je hebt de voor- en nadelen van al deze methodes al heel goed door, chapeau!

    Volgens mij is de oplossing een resultaat-class te bouwen. Die wordt geretourneerd bij een query. Daarop kan je vervolgens naar hartelust num_rows vragen (zonder dat de query daadwerkelijk opnieuw wordt uitgevoerd) en losse rijen opvragen.

    Als je met mysqli werkt hoef je niet eens een aparte klasse te hebben, wel moet de identifiers naar het resultaat hebben.

    In jouw klasse voor mysql_handling staat dan iets als:
    [code:1:5d1aa0389b]
    public function numRows($result)
    {
    return mysqli_num_rows($result);
    }
    [/code:1:5d1aa0389b]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.