login  Naam:   Wachtwoord: 
Registreer je!
 Forum

QUERY naar ARRAY (Opgelost)

Offline Danet - 30/11/2011 16:30
Avatar van DanetLid Plaatscode: 141419

Wil ik alle 'verblijf_naam'-en krijgen als uitvoer. Deze krijg ik dan ook met deze query 
Nu zou ik door middel van een while elke rij kunnen opnemen (mysql_result(query,intTeller))
Maar dit lijkt me niet de ideale manier, want volgens mij gaat dan die query telkens opnieuw uitgevoerd worden, klopt dit?

Alvast bedankt voor diegene die me een betere manier kan geven 'mysql_fetch_array()' had ik ook al gevonden, maar dat lijkt me enkel voor ene hele rij in een array te steken

6 antwoorden

Gesponsorde links
Offline Ontani - 30/11/2011 16:43 (laatste wijziging 30/11/2011 16:44)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Je kan kiezen:

  1. $res = mysql_query("SELECT DISTINCT verblijf_naam FROM verblijfplaatsen");
  2. while ($obj = mysql_fetch_object($res)) {
  3. echo $obj->verblijf_naam."<br />";
  4. }


of

  1. $res = mysql_query("SELECT DISTINCT verblijf_naam FROM verblijfplaatsen");
  2. while ($obj = mysql_fetch_array($res)) {
  3. echo $obj[0]."<br />";
  4. }


of

  1. $res = mysql_query("SELECT DISTINCT verblijf_naam FROM verblijfplaatsen");
  2. while ($obj = mysql_fetch_assoc($res)) {
  3. echo $obj['verblijf_naam']."<br />";
  4. }


In elk van de gevallen zal de query maar 1x uitgevoerd worden. Daarna doorloop je de resultaten in de while.
Bedankt door: Danet
Offline WouterJ - 30/11/2011 17:06
Avatar van WouterJ HTML gevorderde Waarbij mysql_fetch_assoc in dit geval het handigst is. Dan ziet je array er zo uit:
  1. [kolomNaam1] => 'cel value1',
  2. [kolomNaam2] => 'cel value2',
  3. [...] => ...
  4. )


Bij mysql_fetch_array ziet het er zo uit (zoals je ziet onnodig herhalen):
  1. [kolomNaam1] => 'cel value1',
  2. [0] => 'cel value1',
  3. [kolomNaam2] => 'cel value2',
  4. [1] => 'cel value2'
  5. )


En een object is in php helaas geen array... (dus zou ik niet vaak gebruiken)
Offline Danet - 30/11/2011 17:07
Avatar van Danet Lid Blijft hij loopen tot het laatste stukje gegeven?
Ik vind het raar dat je die $obj[0 hier] niet met een teller naar omhoog moet laten gaan?

Dit heb ik momenteel al, geeft je wrs weer een gedacht over waar ik naartoe wil 
Plaatscode: 141420

Offline Filip - 30/11/2011 17:36 (laatste wijziging 30/11/2011 17:37)
Avatar van Filip IRC guru Die moet niet omhoog gaan aangezien die key altijd 0 is. Je krijgt elke row aangeboden bij het begin van de while, maar het field zal altijd op key 0 blijven zitten of key 1 voor het volgende field en zo veder..

Probeer het maar eens uit met een var_dump in de while te zetten ofzo. Dan zie je ineens je volledige array.

Om je code te 'verbeteren':


  1. while ($obj = mysql_fetch_array($qVerblijfplaatslijst))
  2. {
  3. echo '<option value="'.$obj[0].'">'.$obj[0].'</option>';
  4. }


@Waldio, het zal niet onnodig herhalen. while is geen foreach he.. Je herhaalt de loop met de array van de volgende rij indien die er is. Niet met de waardes.
Bedankt door: Danet
Offline Danet - 30/11/2011 18:13
Avatar van Danet Lid
Filip schreef:
Die moet niet omhoog gaan aangezien die key altijd 0 is. Je krijgt elke row aangeboden bij het begin van de while, maar het field zal altijd op key 0 blijven zitten of key 1 voor het volgende field en zo veder..

Probeer het maar eens uit met een var_dump in de while te zetten ofzo. Dan zie je ineens je volledige array.

Om je code te 'verbeteren':


[..code..]

@Waldio, het zal niet onnodig herhalen. while is geen foreach he.. Je herhaalt de loop met de array van de volgende rij indien die er is. Niet met de waardes.


THAT WORKS, thx man ! ;)
Voor ik dit topic als opgelost zet, zou je me even de logica kunnen uitleggen?
de logica achter "$obj = mysql_fetch_array($qVerblijfplaatslijst))" en dat die $obj[0] zo blijft werken, thxxx, vind het belangrijk om te weten wat ik doe 
Offline Filip - 30/11/2011 18:17 (laatste wijziging 30/11/2011 18:19)
Avatar van Filip IRC guru Zoals ik al zei....

De while doet niet hetzelfde als de waardes in een var duwen en dan een foreach er over gooien.

De while gaat 1 rij ophalen, die in $obj steken, de code uitvoeren, volgende rij ophalen en in $obj steken, en weer code uitvoeren.

Dus de structuur van je array in dit geval veranderd niet. Als de structuur niet veranderd, veranderd de waarde van de key dus ook niet.

Doe gewoon een var_dump in je while, en je zal direct merken wat er bedoeld word.

En eigenlijk hoort de oplossing hier bij Ontani te staan, was zijn code voorstel  
Bedankt door: Danet
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.231s