Ik heb het volgende script.

<?

$sql = //query hier
$res = mysql_query($sql);

while ($aRow = mysql_fetch_row($res))
{
if (geldt voorwaarde 1)
{
Doe dingen bij voorwaarde 1
}
}

while ($aRow = mysql_fetch_row($res))
{
if (geldt voorwaarde 2)
{
Doe dingen bij voorwaarde 2
}
}

while ($aRow = mysql_fetch_row($res))
{
if (geldt voorwaarde 3)
{
Doe dingen bij voorwaarde 3
}
}

?>

Ik wil dat hij het result 3 keer afgaat en bepaalde dingen doet aan de hand van de voorwaarden. Bij de eerste gaat alles goed, maar bij de tweede en derde doet hij niets. Op de één of andere manier lijkt aan de while niet voldaan bij de 2 en 3e.

Wie kan me uitleggen wat hier mis gaat en hoe ik het kan fixen?

edit: tikfoutje
<?PHP
while ($aRow = mysql_fetch_row($res))
{
if (geldt voorwaarde 1)
{
// er is altijd maar 1 waarde waar dus je kan het ook met elseif doen
} elseif(voorwaarde 2) {
// doe voorwaarde 2
} elseif(voorwaarde 3) {
// doe voorwaarde 3
}
}
?>
Zodra je een meerdere keren dezelfde code inklopt, weet je vrijwel zeker dat het niet de meest handige code is, enkele uitzonderingen daar gelaten.

<?

// Run sql
$sql = //query hier
$res = mysql_query($sql);

while ($aRow = mysql_fetch_row($res))
{
switch($var){
case: geldt voorwaarde 1
Doe dingen bij voorwaarde 1
break;
case: geldt voorwaarde 2
Doe dingen bij voorwaarde 2
break;
case: geldt voorwaarde 3
Doe dingen bij voorwaarde 3
break;
default:
Doe default
break;
}
}
?>
Bedankt voor de snelle reactie.

Ik heb naar die mogelijkheid zitten kijken, maar dit werkt bij mij helaas niet.

Mijn resultaat bestaat uit verschillende rijen, ik wil dat hij eerst alle rijen die aan voorwaarde 1 voldoen op het scherm zet, dan degeen die aan voorwaarde 2 voldoen enzovoort. Daarom leek het me het handigst om het result 3 keer af te gaan.
kan je nu eens goed uitleggen wat je bedoeld?
want wat je nu doet is echt niet nodig.

Mvg,

Erik
Het volledige script:

Query haalt uit de database een aantal rijen die elk over een ander schoolvak gaan en ik wil ze graag gesorteerd per vakgebied onder elkaar in een tabel hebben. De afkorting van het vak is elke keer in $aRow[0] te vinden.

<?

// Run sql
$sql = //query

$res = mysql_query($sql);

// begin table
echo '<table>';

// Voeg communicatie in
while ($aRow = mysql_fetch_row($res))
{
if (substr_count(strtolower($aRow[0]), 'du')==1 || substr_count(strtolower($aRow[0]), 'en')==1 || substr_count(strtolower($aRow[0]), 'fa')==1 || substr_count(strtolower($aRow[0]), 'gr')==1 || substr_count(strtolower($aRow[0]), 'la')==1 || substr_count(strtolower($aRow[0]), 'ne')==1) // is het een communicatie-vak?
{
echo '<tr>';
echo '<td valign="top">'.$aRow[0].'</td>'; // shortname
echo '<td valign="top">'.$aRow[1].'</td>'; // section-inhoud
echo '</tr>';
}
}

// Voeg maatschappij in
while ($aRow = mysql_fetch_row($res))
{
if (substr_count(strtolower($aRow[0]), 'ak')==1 || substr_count(strtolower($aRow[0]), 'ec')==1 || substr_count(strtolower($aRow[0]), 'gs')==1 || substr_count(strtolower($aRow[0]), 'ma')==1) // is het een maatschappij-vak?
{
echo '<tr>';
echo '<td valign="top">'.$aRow[0].'</td>'; // shortname
echo '<td valign="top">'.$aRow[1].'</td>'; // section-inhoud
echo '</tr>';
}
}

// Voeg natuur in
while ($aRow = mysql_fetch_row($res))
{
if (substr_count(strtolower($aRow[0]), 'anw')==1 || substr_count(strtolower($aRow[0]), 'bi')==1 || substr_count(strtolower($aRow[0]), 'na')==1 || substr_count(strtolower($aRow[0]), 'sk')==1 || substr_count(strtolower($aRow[0]), 'wi')==1) // is het een natuur-vak?
{
echo '<tr>';
echo '<td valign="top">'.$aRow[0].'</td>'; // shortname
echo '<td valign="top">'.$aRow[1].'</td>'; // section-inhoud
echo '</tr>';
}
}

// Voeg crea in
while ($aRow = mysql_fetch_row($res))
{
if (substr_count(strtolower($aRow[0]), 'ckv')==1 || substr_count(strtolower($aRow[0]), 'dr')==1 || substr_count(strtolower($aRow[0]), 'ha')==1 || substr_count(strtolower($aRow[0]), 'kcv')==1 || substr_count(strtolower($aRow[0]), 'mu')==1 || substr_count(strtolower($aRow[0]), 'tn')==1 || substr_count(strtolower($aRow[0]), 'te')==1 || substr_count(strtolower($aRow[0]), 'tx')==1) // is het een crea-vak?
{
echo '<tr>';
echo '<td valign="top">'.$aRow[0].'</td>'; // shortname
echo '<td valign="top">'.$aRow[1].'</td>'; // section-inhoud
echo '</tr>';
}
}

// end table
echo '</table>';

?>
Het is dus eigenlijk een handmatige manier van sorteren. Dan kun je beter de array sorteren of liever nog al sorteren door een goede query. Maar dus één keer de fetch_row doorlopen en een nieuwe array maken, en die dan echo-en.
Als het niet anders kan, kun je
$res = mysql_query($sql);
vlak voor elke while zetten........
edit: sorry fout gelezen.
$sql="jousql ORDER BY 'schoolvak'

geeft een gesorteerd resultaat
Bedankt mensen, ik heb weer wat ideeën gekregen. Ik ga morgen de boel testen.

Reageren