Meerdere keren mysql_fetch_row
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
$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
}
}
?>
$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
Gewijzigd op 01/01/1970 01:00:00 door Erik van Maanen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?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
}
}
?>
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
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
// 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;
}
}
?>
// 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;
}
}
?>
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.
want wat je nu doet is echt niet nodig.
Mvg,
Erik
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?
// 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>';
?>
// 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>';
?>
Gewijzigd op 01/01/1970 01:00:00 door Erik van Maanen
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.
$res = mysql_query($sql);
vlak voor elke while zetten........
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
geeft een gesorteerd resultaat
Bedankt mensen, ik heb weer wat ideeën gekregen. Ik ga morgen de boel testen.