while-problem

Tags:    php

hej alle ...er det en der venligst kan forklare mig følgende sætning:

while($row1 = mysql_fetch_array($result1, MYSQL_ASSOC))

Jeg ved at en while løkke er opbygget således:

while(betingelse)

Men forstår ikke hvad betingelsen er i mit udtryk





4 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
mysql_fetch_array returnerer et array som svarer til en række i din database. Når der så ikke er flere rækker returnerer mysql_fetch_array false, og det er det der får din while-løkke til at stoppe.

Du kan evt. prøve at køre denne PHP-kode for at se princippet.

Fold kodeboks ind/udPHP kode 


Du vil så bemærke at den ikke sker en skid :).



Hej Anders.

Som Jonas nok beskriver så går den linje ud på at retunere noget data jeg vil her forklare hvad der sker.

eksemple på den database du henter fra:
Fold kodeboks ind/udKode 


først lad os bryde din streng ned i flere bidder, først tager vi funktionen mysql_fetch_array(), denne funktion tager hver linje fra database eks. 001 og 002 hvor efter den giver dig muligheden for at skrive disse informationer ud, når man sætter "MYSQL_ASSOC"
ind i linjen gør man det at man siger at det array den giver skal bruge celle navnet som id. det er her at $row1 kommer ind i billedet, da vi har sat at vores array skal bruge celle navne som array id ville vi kunne skrive flg.

Fold kodeboks ind/udPHP kode 


Dette ville lave to linjer med flg. tekst.
Fold kodeboks ind/udKode 


ved at bruge while på denne måde vil mysql_fetch_array køre igennem alle linjerne i databasen og skrive dem ud som vist oven for. håber dette hjælper dig.

Med Venlig Hilsen
Mark S. Johansen



Indlæg senest redigeret d. 05.06.2009 00:38 af Bruger #4302
Eftersom ingen har sagt dette endnu så kaster PHP automatisk værdier til værdier af den type den forventer.

while($row1 = mysql_fetch_array($result1, MYSQL_ASSOC))

$row1 = mysql_fetch_array($result1, MYSQL_ASSOC)
Først henter php et array baseret på den række fra resourcen $result1 som resourcens interne peger peger på og rykker denne peger til næste række i resourcen, hvis den ikke peger på nogen returneres false, det hentede array tildeles $row1.

Da du har skrevet MYSQL_ASSOC bruges navne på de felter der var i din select som key i det returneret array "SELECT feltnavne FROM tabeller" hvis feltnavne var * svarer det til alle felterne/kolonnerne fra de tabeler der er nævnt i selecten. mysql_fetch_array med MYSQL_ASSOC er det samme som mysql_fetch_assoc


While løkke givet false stopper så når der ikke er flere rækker stopper løkken.

While løkke givet et ikke tomt array bliver af php kastet til en true boolean værdi, så hvis $row1 er et array bliver while løkkens krop afviklet.

http://dk2.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting



Som jeg forstår har du en resultat i din mysql database så vis "$row1" Er det samme som det skal der ske noget, vis det ikke er så ved jeg det ikke :) Men "$row1" kan være alt mugligt :) Jeg tror det er et af de der felter man skriver i xD



t