Loops in PhP
Ik ben bezig met php pagina te maken met resultaten die vanuit de database gehaald worden. Echter kom ik er niet helemaal uit
Tabel informatie bevat 5 regels, alleen wanneer de eerste while in de if == 3 komt stopt hij met de eerste while.
In table informatie zitten 5 records
in table bestuur zitten 3 records
Output is nu:
Informatie: 3 records
Bestuur: 3 records
Hij gaat dus niet verder met record 4 van informatie
wie o wie weet wat mijn probleem is.
Als ik de 2e while uitzet gaat het wel goed, alleen heb ik dan mijn database results niet :(
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
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
<?php
$sSQL = 'SELECT * FROM `informatie` order by positie';
$rsSQL = mysql_query($sSQL);
while ($aInfo = mysql_fetch_array($rsSQL))
{
echo '<div class="border">
<h4 rel="item-'.$aInfo['positie'].'">' . $aInfo['positie'] . '. ' . $aInfo['onderwerp'] . '</h4>
<div>';
if ($aInfo['positie'] == 3)
{ echo ' <table width="100%">
<tr> <td> <b>Functie </b> </ul></td> <td><b> Naam </b></td> <td><b>E-mail</b></td> </tr>';
$sSQL = 'SELECT * FROM `bestuur` WHERE `functie` in (\'Bestuurslid\', \'Voorzitter\')';
$rsSQL = mysql_query($sSQL);
while ($aUser = mysql_fetch_array($rsSQL))
{
echo '<tr><td>' . $aUser['functie'] . '</td> <td>' . $aUser['Voorletters'] . ' ' . $aUser['Achternaam'] . '</td>' . '<td>' . $aUser['email'] . '</td> </tr>';
}
echo ' </table>';
}
else
{
echo '<p> ' . nl2br($aInfo['text']) . ' </p>';
}
echo '</div>
</div>';
}
?>
$sSQL = 'SELECT * FROM `informatie` order by positie';
$rsSQL = mysql_query($sSQL);
while ($aInfo = mysql_fetch_array($rsSQL))
{
echo '<div class="border">
<h4 rel="item-'.$aInfo['positie'].'">' . $aInfo['positie'] . '. ' . $aInfo['onderwerp'] . '</h4>
<div>';
if ($aInfo['positie'] == 3)
{ echo ' <table width="100%">
<tr> <td> <b>Functie </b> </ul></td> <td><b> Naam </b></td> <td><b>E-mail</b></td> </tr>';
$sSQL = 'SELECT * FROM `bestuur` WHERE `functie` in (\'Bestuurslid\', \'Voorzitter\')';
$rsSQL = mysql_query($sSQL);
while ($aUser = mysql_fetch_array($rsSQL))
{
echo '<tr><td>' . $aUser['functie'] . '</td> <td>' . $aUser['Voorletters'] . ' ' . $aUser['Achternaam'] . '</td>' . '<td>' . $aUser['email'] . '</td> </tr>';
}
echo ' </table>';
}
else
{
echo '<p> ' . nl2br($aInfo['text']) . ' </p>';
}
echo '</div>
</div>';
}
?>
Binnen de mainloop definieer je $rsSQL opnieuw. Dit zorgt voor je problemen.
Het is inmiddels opgelost.
Zo is dat beter.
Code (php)
1
2
3
2
3
<?php
$sSQL = "SELECT * FROM bestuur WHERE functie in ('Bestuurslid', 'Voorzitter')";
?>
$sSQL = "SELECT * FROM bestuur WHERE functie in ('Bestuurslid', 'Voorzitter')";
?>
Ik denk dat je in de war bent met php quotes. Even een voorbeeldje zoals het dan zou moeten.
Gewijzigd op 31/01/2015 14:49:05 door Bart V B
Daarnaast: als je nieuwe code aan het schrijven bent, gebruik dan mysqli, de mysql_-functies zijn stiekem al 10 jaar verouderd en gaan "binnenkort" definitief verdwijnen.
Daarnaast: is HTML toegestaan in je uitvoer? Anders kun je deze beter ontdoen van haar speciale betekenis met een functie als htmlspecialchars(). Stel dat iemand voor de gein '</div></div>' in je $ainfo['text'] zet, bam - paginastructuur om zeep.
EDIT: op de edit van Bart :). Als je variabelen in je query gebruikt, moet je deze ook escapen met de daarvoor bestemde _real_escape_string() functie.
Gewijzigd op 31/01/2015 14:56:26 door Thomas van den Heuvel