Likes Likes:  0
Resultaten 1 tot 6 van de 6
Geen
  1. #1
    Frank Mutsaers
    [PHP] newbie:result in een array stoppen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    [PHP] newbie:result in een array stoppen

    Hallo NG,

    Het is mij niet helmaal duidelijk wat een $result van myqsl_query is.

    Wat ik wil is de $result als een array benaderen.

    $result = mysql_query("SELECT * FROM example");

    Wat ik wel overal kan vinden is om dit te dumpen:
    while($row = mysql_fetch_array( $result )) {
    echo $row['naam']." en ".$row['leeftijd']."<br>";
    }

    tot zover snap ik het.

    Maar ik heb een andere array met bijvoorbeeld een paar namen. Nu wil uit de
    $result de gegevens van die namen.

    het lijkt me niet handig om steeds de hele $result door te moeten lopen om
    elke naam te vinden.

    Zoiets als dit (ik weet niet of het werkt)

    $namen = array("jan", "klaas", "betsie");
    foreach($namen as $deze){
    while($row = mysql_fetch_array( $result )) {
    if($row['name'] == $deze){
    echo $row['naam']." en ".$row['leeftijd']."<br>";
    }
    }
    }

    Is er geen speciale functie waarmee ik de $row kan krijgen met de
    betreffende naam?

    $namen = array("jan", "klaas", "betsie");
    foreach($namen as $deze){
    $row = speciale_functie($result, $deze);
    echo $row['naam']." en ".$row['leeftijd']."<br>";
    }

    Of is de aanpak met de while-loop gewoon de manier. Ik heb het gevoel dat
    zo'n while-loop traag is. In dit voorbeeld gaat het om 3 namen, maar waar
    ik het voor ga gebruiken zullen dat er veel meer worden (20-100).


    Alvast bedankt voor jullie opmerkingen.

    Groet,
    Frank



  2. #2
    Daniel Tryba
    [PHP] newbie:result in een array stoppen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] newbie:result in een array stoppen

    Frank Mutsaers <frankmuts@zonnet.invalid> wrote:
    > $result = mysql_query("SELECT * FROM example");

    [knip]
    > Is er geen speciale functie waarmee ik de $row kan krijgen met de
    > betreffende naam?
    >
    > $namen = array("jan", "klaas", "betsie");
    > foreach($namen as $deze){
    > $row = speciale_functie($result, $deze);
    > echo $row['naam']." en ".$row['leeftijd']."<br>";
    > }
    >
    > Of is de aanpak met de while-loop gewoon de manier. Ik heb het gevoel dat
    > zo'n while-loop traag is. In dit voorbeeld gaat het om 3 namen, maar waar
    > ik het voor ga gebruiken zullen dat er veel meer worden (20-100).


    Daar voor is het het handigst om een zinnige SQL query om te stellen:
    select naam,leeftijd from example where naam='jan' or naam='klaas'

    Dan krijg je alleen de rijen waarin je geinteresseerd bent.

  3. #3
    John Bokma
    [PHP] newbie:result in een array stoppen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] newbie:result in een array stoppen

    Frank Mutsaers wrote:

    > Of is de aanpak met de while-loop gewoon de manier. Ik heb het gevoel
    > dat zo'n while-loop traag is. In dit voorbeeld gaat het om 3 namen,
    > maar waar ik het voor ga gebruiken zullen dat er veel meer worden
    > (20-100).


    Dat is een database probleem, uiteraard maak je je select zo dat alleen de
    gewenste resultaten terugkomen. En dus zal de foreach normaal geen extra
    werk moeten verrichten.

    Voor je verder gaat raad ik je aan om je eerst te verdiepen in MySQL en
    database beheer i.h.a. Ik zie te vaak dat mensen in PHP (of andere taal)
    massa's werk verrichten die gewoon in een database gedaan kan (en moet)
    worden.

    De leertijd die je er nu in steekt verdien je vanzelf terug.

    --
    John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
    Website design: http://johnbokma.com/websitedesign/
    Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
    Tevreden opdrachtgevers: http://castleamber.com/testimonials.html



  4. #4
    Frank Mutsaers
    [PHP] newbie:result in een array stoppen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] newbie:result in een array stoppen

    Daniel Tryba wrote:

    > Frank Mutsaers <frankmuts@zonnet.invalid> wrote:
    >> $result = mysql_query("SELECT * FROM example");

    > [knip]
    >> Is er geen speciale functie waarmee ik de $row kan krijgen met de
    >> betreffende naam?
    >>
    >> $namen = array("jan", "klaas", "betsie");
    >> foreach($namen as $deze){
    >> $row = speciale_functie($result, $deze);
    >> echo $row['naam']." en ".$row['leeftijd']."<br>";
    >> }
    >>
    >> Of is de aanpak met de while-loop gewoon de manier. Ik heb het gevoel dat
    >> zo'n while-loop traag is. In dit voorbeeld gaat het om 3 namen, maar waar
    >> ik het voor ga gebruiken zullen dat er veel meer worden (20-100).

    >
    > Daar voor is het het handigst om een zinnige SQL query om te stellen:
    > select naam,leeftijd from example where naam='jan' or naam='klaas'
    >
    > Dan krijg je alleen de rijen waarin je geinteresseerd bent.


    Je hebt gelijk dat ik de query kan aanpassen en zo een $result krijg waar
    alleen de gewenste personen inzitten.
    Maar ik wil daarna een willekeurige rij te voorschijn krijgen.
    Uit de twee reacties begrijp ik ook dat ik mijn vraag niet goed heb
    geformuleerd.
    Ik probeer het opnieuw.

    Als je een query doet krijg je een $result terug.

    $result = mysql_query("SELECT * FROM example");

    Nu zit in de $result de hele database, toch?
    Wat ik nu wil is uit deze $result een specifieke row krijgen.

    Nu dacht ik dat het handig zou zijn om een keer een query te doen op de
    database en dan met de $result verder te werken.
    Stel ik heb een database met 400 adressen, en ik heb een wilkeurige groep
    van 20 mensen nodig, en meteen daarna een andere groep van 10 mensen.

    Wat ik dus kan doen is 30 keer een query uitvoeren, maar is dat geen zonde
    van de processortijd? Ik hoopte dat ik op de een of andere manier het
    volgende kon:

    $result = mysql_query("SELECT * FROM example");
    $gewensterij = haaltevoorschijn($result, 'ID', 4);
    echo $gewensterij['naam']. "is ".$gewensterij['leeftijd']." jaren oud.";

    Nogmaals, misschien wil ik iets helemaal onnodigs, maar het leek mij sneller
    te gaan als ik de gegevens uit $result haal dan dat ik 30 queries doe.
    Of kun je $result niet op die manier benaderen? Eigenlijk is dit mijn vraag,
    hoe moet je tegen zo'n $result aankijken, is het een array of iets anders.
    Of moet ik gewoon 30 keer een query uitvoeren en me geen zorgen maken over
    wat sneller is.

    groet,
    frank



  5. #5
    Daniel Tryba
    [PHP] newbie:result in een array stoppen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] newbie:result in een array stoppen

    Frank Mutsaers <frankmuts@zonnet.invalid> wrote:
    > Nu dacht ik dat het handig zou zijn om een keer een query te doen op de
    > database en dan met de $result verder te werken.
    > Stel ik heb een database met 400 adressen, en ik heb een wilkeurige groep
    > van 20 mensen nodig, en meteen daarna een andere groep van 10 mensen.
    >
    > Wat ik dus kan doen is 30 keer een query uitvoeren,


    30? Het zijn er IMHO maar 2.

    > $result = mysql_query("SELECT * FROM example");
    > $gewensterij = haaltevoorschijn($result, 'ID', 4);
    > echo $gewensterij['naam']. "is ".$gewensterij['leeftijd']." jaren oud.";
    >
    > Nogmaals, misschien wil ik iets helemaal onnodigs, maar het leek mij sneller
    > te gaan als ik de gegevens uit $result haal dan dat ik 30 queries doe.
    > Of kun je $result niet op die manier benaderen? Eigenlijk is dit mijn vraag,
    > hoe moet je tegen zo'n $result aankijken, is het een array of iets anders.


    Iets anders: een resource.

    Wat jij wil kan op zich wel, maar met een beetje pech moet je dus 1 keer
    alle resultaten doorlopen.
    -array met 20 gezochte namen
    -doe de query (select * from example order by random())
    -vraag een row op
    -controleer of de naam in het gezochte array zit
    -ja: sla gegevens op in gewenst array
    -nee: sla gegevens op in random array
    -herhaal totdat gewenste array en random array gevult zijn

    Geheugen gebruik is hierbij minimaal (zeker als je
    mysql_unbuffered_query gebruikt). Zo'n functie moet je zelf schrijven,
    maar gelukkig is dat triviaal

    Maar voor wat je hierboven beschrijft kan je IMHO beter gewoon 2 queries
    doen, 1 voor de 20 specifieke namen en 1 voor 10 random namen die niet
    voldoen aan de 20 specifieke. Voordelen:
    -een database kan sneller zoeken naar de naam (vooral als er een index
    op staat)
    -het bespaard een hele berg data die moet worden uitgewisseld.


  6. #6
    Frank Mutsaers
    [PHP] newbie:result in een array stoppen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] newbie:result in een array stoppen

    Daniel Tryba wrote:

    > Frank Mutsaers <frankmuts@zonnet.invalid> wrote:
    >> Nu dacht ik dat het handig zou zijn om een keer een query te doen op de
    >> database en dan met de $result verder te werken.
    >> Stel ik heb een database met 400 adressen, en ik heb een wilkeurige groep
    >> van 20 mensen nodig, en meteen daarna een andere groep van 10 mensen.
    >>
    >> Wat ik dus kan doen is 30 keer een query uitvoeren,

    >
    > 30? Het zijn er IMHO maar 2.


    Idd kun je het als 2 queries doen, maar omdat uiteindelijk 30 personen wil
    hebben zou ik ook voor elke persoon een query kunnen uitvoeren.

    <snip>

    > Iets anders: een resource.
    >
    > Wat jij wil kan op zich wel, maar met een beetje pech moet je dus 1 keer
    > alle resultaten doorlopen.
    > -array met 20 gezochte namen
    > -doe de query (select * from example order by random())
    > -vraag een row op
    > -controleer of de naam in het gezochte array zit
    > -ja: sla gegevens op in gewenst array
    > -nee: sla gegevens op in random array
    > -herhaal totdat gewenste array en random array gevult zijn


    hier was ik dus bang voor, dit wil ik idd niet gaan doen.

    > Geheugen gebruik is hierbij minimaal (zeker als je
    > mysql_unbuffered_query gebruikt). Zo'n functie moet je zelf schrijven,
    > maar gelukkig is dat triviaal
    >
    > Maar voor wat je hierboven beschrijft kan je IMHO beter gewoon 2 queries
    > doen, 1 voor de 20 specifieke namen en 1 voor 10 random namen die niet
    > voldoen aan de 20 specifieke. Voordelen:
    > -een database kan sneller zoeken naar de naam (vooral als er een index
    > op staat)
    > -het bespaard een hele berg data die moet worden uitgewisseld.


    Het wordt langzaam allemaal duidleijk bij me

    Vervolg vraag, ben niet zo goed met die sql-query.
    Hoe kan ik dan het eenvoudigste de query maken voor die 20 personen.
    Ik heb een lijst met 20 ID's. moet ik dan iets maken als:

    $lijst = array(2,5,12,14,15,16....)
    $result = mysql_query("SELECT * FROM example WHERE ID=".$lijst[0]." OR
    ID=".lijst[1]...);

    Dank alsvast voor je opmerkingen.

    groet
    frank

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics