Oneindige While loop van uit de DB
Vandaag ging ik verder met programmeren, en toen deed een while(); loop het opeens niet meer.
Ik haal 3records op uit de DB (Alles wat er in die tabel staat). En dan weergeeft hij de eerste record oneindig weer. En dan crashed mijn browser.
Ik snap er werkelijk waar niks van, ik heb een goede error afhandeling voor mijn query en code.
Mijn query:
Quote:
$getLangQuery = "SELECT name FROM languages ORDER BY languages_id ASC";
$getLangQuery = mysql_query($getLangQuery);
if(!$getLangQuery) {
echo 'Couldn\'t retrieve the languages';
} else {
$getLangQuery = mysql_query($getLangQuery);
if(!$getLangQuery) {
echo 'Couldn\'t retrieve the languages';
} else {
Mijn while loop:
Quote:
$getLangFetch = mysql_fetch_assoc($getLangQuery);
while($getLangFetch) {
echo "<option value='".$getLangFetch['name']."'>".$getLangFetch['name']."</option>";
}
while($getLangFetch) {
echo "<option value='".$getLangFetch['name']."'>".$getLangFetch['name']."</option>";
}
Als iemand mijn probleem kent. Zou ik het graag weten!
Verder heb ik u hopelijk genoeg info gegeven.
Met vriendelijke groeten,
Marijn
Niet:
$getLangFetch = mysql_fetch_assoc($getLangQuery);
while($getLangFetch) {
Maar:
while($getLangFetch = mysql_fetch_assoc($getLangQuery)) {
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$getLangFetch = mysql_fetch_assoc($getLangQuery);
while($getLangFetch) {
echo "<option value='".$getLangFetch['name']."'>".$getLangFetch['name']."</option>";
}
?>
$getLangFetch = mysql_fetch_assoc($getLangQuery);
while($getLangFetch) {
echo "<option value='".$getLangFetch['name']."'>".$getLangFetch['name']."</option>";
}
?>
Dit is het probleem. Omdat je fetcht voor de while loop en er verder niets meer mee doet, blijft variabele $getLangFetch oneindig lang hetzelfde. Ofwel binnen de while loop nog een keer fetchen, ofwel de toewijzing aan $getLangFetch binnen je while loop conditie zetten:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$getLangFetch = mysql_fetch_assoc($getLangQuery);
while($getLangFetch) {
echo "<option value='".$getLangFetch['name']."'>".$getLangFetch['name']."</option>";
$getLangFetch = mysql_fetch_assoc($getLangQuery);
}
//of
while($getLangFetch = mysql_fetch_assoc($getLangQuery)) {
echo "<option value='".$getLangFetch['name']."'>".$getLangFetch['name']."</option>";
}
?>
$getLangFetch = mysql_fetch_assoc($getLangQuery);
while($getLangFetch) {
echo "<option value='".$getLangFetch['name']."'>".$getLangFetch['name']."</option>";
$getLangFetch = mysql_fetch_assoc($getLangQuery);
}
//of
while($getLangFetch = mysql_fetch_assoc($getLangQuery)) {
echo "<option value='".$getLangFetch['name']."'>".$getLangFetch['name']."</option>";
}
?>
Ik dacht zelf dat mijn manier netter was omdat Zend er een warning voor geeft, dus ik dacht dit was netter. En ik had dit gister ochtend gemaakt, en savonds (voor dat ik naar huis ging) nog aan gepast. Maar niet meer getest.
- Marijn