Archief - PHP: na while lus geen acties meer

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.

verdeye

Legacy Member
'k heb een scriptje geschreven om gegevens uit een database te halen ...
nu als ik alles ophaal met men while lus (zie hieronder) voert hij de rest van (html) code niet meer verder uit ... :doh:

PHP:
(code hiervoor wordt natuurlijk uitgevoerd) ...
<?php
 	$gegevens = mysql_query("SELECT * FROM `links` order by `id` DESC")or die(mysql_error()); 
	$aantal = mysql_num_rows($gegevens);
	while ($row=mysql_fetch_array($gegevens)or die(mysql_error()))
   {
        $id= $row['id']; 
        $link=$row['link']; 
        $desc=$row['desc']; 
    	echo "<tr>";
		echo "<td><a href='http://". $link ."' target='_blank' class='links' title='". $desc ."'>". $link ."</a></td>";
		echo "<td class='links_description'>". $desc ."</td>";
		echo "</tr>";
	}
   ?>
...
hierna volgt nog code (wordt niet uitgevoerd)

thx

xml

Legacy Member
Stopt de pagina met laden of blijft de lus gewoon lopen? De "or die()" constructie is volgens mij niet gelding in een If Else.

verdeye

Legacy Member
idd, door men or die statement gaat hij de rest niet meer uitvoeren ...
thx

DarkBone

Legacy Member
Reden waarom 'm stopte:

bij de OR wordt de rechterkant geëvalueerd eens dat de linkerzijde vals is. De die() functie wordt uitgevoerd, en de mysql_error() functie geeft niks terug want er is geen fout.

De rechtekant wordt dus enkel uitgevoerd als de linkerkant vals is, anders is de OR toch onmiddelijk waar.

Spacy2003

Legacy Member
PHP:
while ($row=mysql_fetch_array($gegevens)){
}
Dit is genoeg zo want als hij niets uit de tabel kan halen krijg je toch een error van je query.
En als mysql_fetch_array niets kan ophalen krijg je invalid statement.

Dus die 'or die()' is overbodig :)

Nog even verder uitleggen waarom hij dan iets meer doet.
Wanneer de while niets meer kan ophalen zal hij dus FALSE geven en uw die() in
gang zetten daarom stopt hij maar omdat je geen fout hebt in je query zal hij
ook geen error printen en gewoon niets meer doen.

En even ter info php stopt met parsen na de die() actie en zal dus stoppen
met de code uit te voeren :)

joyraider

Legacy Member
heb ook nog een vraagje...

hoe kun je een IF uitvoeren binnen een WHILE ? is dit mogelijk?

Zero Grav

Legacy Member
while($gb = mysql_fetch_array($query)) {
?>
<td style="background:
<?php
if($gb['naam'] == "joyraider") { echo "black"; }
else { echo "green"; }
?>
">
.........
</td>
<?php
}
?>

zoiets bv joyraider :)

DarkBone

Legacy Member
joyraider zei:
heb ook nog een vraagje...

hoe kun je een IF uitvoeren binnen een WHILE ? is dit mogelijk?

ik denk da ge bedoelt binnen uw conditie van je while?
want anders is uw vraag vrij simpel, zoals hierboven aangetoond :)

joyraider

Legacy Member
hmm lukt dat zo Zero Grav?

want alsk gewoon dit doe:

<?php

while(blabla) {

if(dit=dat) {
echo "hallo";
}

}
?>

dan lukt het namelijk niet bij mij :)

Zero Grav

Legacy Member
err, ge bedoelt toch niet als ge dat letterlijk doet he?
doe eens

<?php
$i = 0;
While($i < 5) {
if($i == 3) { echo "Nu is de variabele 3<br />"; }
else { echo "nu is de variabele nog geen 3 of groter dan 3!<br />"; }
$i++;
}
?>

joyraider

Legacy Member
ok, dit is vreemd... ik kreeg nooit een IF binnen een WHILE, en nu ineens wel :eek:

toch bedankt Zero Grav & db :)

xml

Legacy Member
waarschijnlijk gebruike je slechts één =, bij een vergelijking moeten het er echter twee zijn, dus ==

dit = dat
-> Stopt de waarde "dat" in "dit"

dit == dat
-> Controleert of de waarde in "dit" overeenstemt met de waarde in "dat"

DarkBone

Legacy Member
What XML said ;)

Viel mij ook direct op in uw voorbeeld dat ge maar 1 =-teken gebruikte.

killgore

Legacy Member
DarkBone zei:
ik denk da ge bedoelt binnen uw conditie van je while?
want anders is uw vraag vrij simpel, zoals hierboven aangetoond :)
binnen de condition is dit denk ik enkel te doen met de ? : operator.

DarkBone

Legacy Member
killgore zei:
binnen de condition is dit denk ik enkel te doen met de ? : operator.

Heerlijk die beperking in flexibiliteit van de meeste gangbare programmeertalen :)

servi

Legacy Member
Heerlijk die beperking in flexibiliteit van de meeste gangbare programmeertalen

om echt van flexibiliteit te genieten kunt ge natuurlijk ook altijd in assembler programmeren ;)

Spacy2003

Legacy Member
MOV A, 5FFF
MOV B, 2222
ADD A,B

:)

Hoe flexibel (als je het kan :doh: )

DarkBone

Legacy Member
servi zei:
Heerlijk die beperking in flexibiliteit van de meeste gangbare programmeertalen

om echt van flexibiliteit te genieten kunt ge natuurlijk ook altijd in assembler programmeren ;)

Ik doelde meer op talen die volledig expressie gebaseerd zijn, waar alles een waarde terugkeert. Daar kunt ge rustig if-statements in condities gaan schrijven etc... ookal omdat alles op functies is gebaseerd (functioneel programmeren) en het liefst nog in combinaties met geoptimaliseerde staartrecursie. En niet zoals in de meeste talen waar recursie meestal wordt afgeraden.

killgore

Legacy Member
Spacy2003 zei:
MOV A, 5FFF
MOV B, 2222
ADD A,B

:)

Hoe flexibel (als je het kan :doh: )
dit kunde dus als ge welgeteld 5 minuten naar assembly gekeken hebt :p.

Assembly op zich is totaal niet moeilijk (IMHO), het rottigste is dat je zo low-level programmeert en fouten veel moeilijker te vinden zijn en het schrijven van hoger wiskundige algoritmes vanuit de bais (macht & wortelalgoritmes bv.). Ook zijn het de kleine trucjes die je moet kennen om echt 'goed' assembler te kennen (bv. add a,a i.p.v. mul a,2). (Niet dat ik dus goed assembler ken :p)

@Db: true ;)
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