while werkt niet
ik probeer met mijn script 2x gegevens uit de db te halen.
Dit doe ik met while en dan moet hij daar een dropbox van maken en de 2e keer ook.
Dit werkt de 1e x prima, maar bij de 2e while laat hij geen waardes zien, waar ze wel zijn.
Mag je niet 2x while doen in een script?
Hier is mijn php code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$getcat = "SELECT * FROM catogorie";
$getsubcat = "SELECT * FROM subcat";
$resultaatcat = mysql_query($getcat) or die (mysql_error());
$resultaatsubcat = mysql_query($getsubcat) or die (mysql_error());
while ($rowaddp = mysql_fetch_array($resultaatcat)) {
$catnaam = $rowaddp['cat'];
$catid = $rowaddp['catid'];
echo '<option value="'.$rowaddp[catid].'">'.$rowaddp[cat].'</option>';
}
?>
$getcat = "SELECT * FROM catogorie";
$getsubcat = "SELECT * FROM subcat";
$resultaatcat = mysql_query($getcat) or die (mysql_error());
$resultaatsubcat = mysql_query($getsubcat) or die (mysql_error());
while ($rowaddp = mysql_fetch_array($resultaatcat)) {
$catnaam = $rowaddp['cat'];
$catid = $rowaddp['catid'];
echo '<option value="'.$rowaddp[catid].'">'.$rowaddp[cat].'</option>';
}
?>
</select>
<select name="psubcat">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
while ($rowaddp = mysql_fetch_array($resultaatsubcat)) {
$catnaam = $rowaddp['cat'];
$catid = $rowaddp['catid'];
echo '<option value="bla">bla</option>';
//echo '<option value="'.$rowaddp[catid].'">'.$rowaddp[cat].'</option>';
}
?>
while ($rowaddp = mysql_fetch_array($resultaatsubcat)) {
$catnaam = $rowaddp['cat'];
$catid = $rowaddp['catid'];
echo '<option value="bla">bla</option>';
//echo '<option value="'.$rowaddp[catid].'">'.$rowaddp[cat].'</option>';
}
?>
</select>
Een while in een while zou prima moeten werken. Ik zie wel dat je de var $rowaddp overschrijft?
Die staat bij je 2e while nog aan het einde.
Als je dan eerst mysql_data_seek($resultaatsubcat,0); doet komt die weer aan het begin te staan en werkt je 2e while zoals je het wilt hebben.
Wat je kunt doen: query nogmaals uitvoeren, en weer overheen lopen.
Mooier: Haal het op, zet het in een php array. loop erover heen. reset de pointer naar 0. loop er nogmaals overheen (ik weet niet of je reset op een mysql result kan doen..)
**EDIT** Meneer hierboven weet wel hoe je hem reset :)
Gewijzigd op 01/01/1970 01:00:00 door Thijs Damen
GI ACE schreef op 04.02.2010 15:43:
Een while in een while zou prima moeten werken. Ik zie wel dat je de var $rowaddp overschrijft?
En je catid en catnaam
Gewijzigd op 01/01/1970 01:00:00 door - Jim -
Een array-key zet je tussen quotes.
$rowaddp[catid] moet zijn $rowaddp['catid']
SanThe schreef op 04.02.2010 15:51:
De while()'s staan zo te zien los van elkaar, dus ik zie niet waarom dit niet zou werken.
Een array-key zet je tussen quotes.
$rowaddp[catid] moet zijn $rowaddp['catid']
Een array-key zet je tussen quotes.
$rowaddp[catid] moet zijn $rowaddp['catid']
Omdat de internal array pointer bij de eerste loop aan het eind komt te staan?
Thijs Damen schreef op 04.02.2010 16:26:
Omdat de internal array pointer bij de eerste loop aan het eind komt te staan?
Als je goed kijkt zie je dat het verschillende loops zijn met een fetch op verschillende results.
Ik weet niet precies wat het was,maar het werkt nu.
Heb gewoon het script opnieuw geschreven en toen werkte het ineens wel.
Maargoed hier het script dat nu werkt voor het geval je het wilt weten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
$getcat = "SELECT * FROM catogorie";
$getsubcat = "SELECT * FROM subcat";
$resultaatcat = mysql_query($getcat) or die (mysql_error());
$resultaatsubcat = mysql_query($getsubcat) or die (mysql_error());
while ($rowaddp = mysql_fetch_array($resultaatcat)) {
echo '<option value="'.$rowaddp[catid].'">'.$rowaddp[cat].'</option>';
}
mysql_data_seek($resultaatcat,0);
?>
$getcat = "SELECT * FROM catogorie";
$getsubcat = "SELECT * FROM subcat";
$resultaatcat = mysql_query($getcat) or die (mysql_error());
$resultaatsubcat = mysql_query($getsubcat) or die (mysql_error());
while ($rowaddp = mysql_fetch_array($resultaatcat)) {
echo '<option value="'.$rowaddp[catid].'">'.$rowaddp[cat].'</option>';
}
mysql_data_seek($resultaatcat,0);
?>
</select>
<select name="pcat">
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
while ($rowaddp = mysql_fetch_array($resultaatsubcat)) {
echo '<option value="'.$rowaddp['subcatid'].'">'.$rowaddp['subcat'].'</option>';
}
mysql_data_seek($resultaatcat,0);
?>
while ($rowaddp = mysql_fetch_array($resultaatsubcat)) {
echo '<option value="'.$rowaddp['subcatid'].'">'.$rowaddp['subcat'].'</option>';
}
mysql_data_seek($resultaatcat,0);
?>
</select>
Toch fijn te horen dat het werkt
Jim schreef op 04.02.2010 18:24:
in het 2e geval is mysql_data_seek (naar 0) niet nodig, mits je dezelfde resultset nogmaals wilt gebruiken.
Toch fijn te horen dat het werkt
Toch fijn te horen dat het werkt
Die eerste moet ook weg kunnen.
Voor de eerste select wordt er een loop gebruikt om door de resultset te gaan. Als de loop afgerond is staat de pointer/iterator nog op het laatste record.
Als je dan nogmaals door dezelfde resultset heen wilt 'loopen' moet je eerst die pointer op het beginpunt van de resultset zetten.
SanThe schreef op 04.02.2010 16:32:
Als je goed kijkt zie je dat het verschillende loops zijn met een fetch op verschillende results.
Thijs Damen schreef op 04.02.2010 16:26:
Omdat de internal array pointer bij de eerste loop aan het eind komt te staan?
Als je goed kijkt zie je dat het verschillende loops zijn met een fetch op verschillende results.
Dat houdt dus in dat de pointer niet resultset afhankelijk zou zijn...
Dus die tweede staat nog op nul.
Even kijken of dit een bug is in mysql