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?
<?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
}
}
?>
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.
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>';
}
}
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.