if statement krijg ik niet goed
Ik zit hier al geruime tijd te prutsen en krijg het maar niet voor elkaar. Ik heb 1 database met 2 tabellen. Nu moet ik afhankelijk van de vraag of uit tabel 1 (Met de klassen B4a, B4b en B4c) of uit tabel 2 (met het personeel) de gegevens halen.
De gegevens opvragen uit tabel 2 lukt wel. Maar als ik de gegevens uit tabel 1 opvraag komt naast tabel 1 ook altijd de gegevens van tabel 2 mee. Ik krijgen deze tabel 2 niet weg. Ik krijg het niet voor elkaar een goede if etc in elkaar te zetten. Wie heeft tips?
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
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
<?php
function formulier () {
?>
Van welke klas wil je gegevens opvragen?<br>Let op: je kunt meerdere klassen tegelijkertijd selecteren!
<form method="post" action="<?php echo $_SERVER["SCRIPT_NAME"]; ?>">
<select multiple name="klas[]" id="mbt klas" class="inputsmall" size="9">
<optgroup label= "VMBO-basis">
<option value="B4a">B4a</option>
<option value="B4b">B4b</option>
<option value="B4c">B4c</option>
<optgroup label= "Personeel">
<option value="alle_personeel">Alle personeel</option>
</select>
<br><input type="submit" value="vraag op" class="inputsmall"/>
</form>
<?php
global $mysql, $mysqltabel_1;
global $mysql, $mysqltabel_2;
if (!empty($_POST['klas']) || ($_POST['klas'] != 'alle_personeel')) { // haakje No 1
$klas=$_POST['klas'];
if ($klas){ // haakje No 2
foreach ($klas as $t){ // haakje No 3
$deel_gegevens_lln = mysql_query("SELECT roepnaam,tussenv,achternaam,tekst_jrbk FROM $mysqltabel_1 WHERE klas='$t' ORDER BY achternaam ASC",$mysql) or die("query 1 op de database is mislukt");
if (!empty($deel_gegevens_lln)) { // haakje No 4
while (list( $roepnaam, $tussenv, $achternaam, $tekst_jrbk) = mysql_fetch_row($deel_gegevens_lln)) { // haakje No 5
echo "<br><b>$roepnaam</b> <b>$tussenv</b> <b>$achternaam</b> <br />$tekst_jrbk<br />";
} // haakje No 5A
} // haakje No 4A
} // haakje No 3A
} // haakje No 2A
if (!empty($_POST['klas']) || ($_POST['klas'] == 'alle_personeel')) {// haakje No 10
echo "effe testen No x<br>";
$deel_gegevens_personeel = mysql_query("SELECT naam, tekst_pers_lid FROM $mysqltabel_2 ORDER BY naam ASC",$mysql) or die("query 2 op de database is mislukt");
while(list( $naam, $tekst_pers_lid) = mysql_fetch_row($deel_gegevens_personeel)) {
echo "<b>$naam</b><br>$tekst_pers_lid<br />";
}
} // haakje No 10A
} // haakje No 1A
}// einde functie
formulier();
@mysql_close($mysql);
?>
function formulier () {
?>
Van welke klas wil je gegevens opvragen?<br>Let op: je kunt meerdere klassen tegelijkertijd selecteren!
<form method="post" action="<?php echo $_SERVER["SCRIPT_NAME"]; ?>">
<select multiple name="klas[]" id="mbt klas" class="inputsmall" size="9">
<optgroup label= "VMBO-basis">
<option value="B4a">B4a</option>
<option value="B4b">B4b</option>
<option value="B4c">B4c</option>
<optgroup label= "Personeel">
<option value="alle_personeel">Alle personeel</option>
</select>
<br><input type="submit" value="vraag op" class="inputsmall"/>
</form>
<?php
global $mysql, $mysqltabel_1;
global $mysql, $mysqltabel_2;
if (!empty($_POST['klas']) || ($_POST['klas'] != 'alle_personeel')) { // haakje No 1
$klas=$_POST['klas'];
if ($klas){ // haakje No 2
foreach ($klas as $t){ // haakje No 3
$deel_gegevens_lln = mysql_query("SELECT roepnaam,tussenv,achternaam,tekst_jrbk FROM $mysqltabel_1 WHERE klas='$t' ORDER BY achternaam ASC",$mysql) or die("query 1 op de database is mislukt");
if (!empty($deel_gegevens_lln)) { // haakje No 4
while (list( $roepnaam, $tussenv, $achternaam, $tekst_jrbk) = mysql_fetch_row($deel_gegevens_lln)) { // haakje No 5
echo "<br><b>$roepnaam</b> <b>$tussenv</b> <b>$achternaam</b> <br />$tekst_jrbk<br />";
} // haakje No 5A
} // haakje No 4A
} // haakje No 3A
} // haakje No 2A
if (!empty($_POST['klas']) || ($_POST['klas'] == 'alle_personeel')) {// haakje No 10
echo "effe testen No x<br>";
$deel_gegevens_personeel = mysql_query("SELECT naam, tekst_pers_lid FROM $mysqltabel_2 ORDER BY naam ASC",$mysql) or die("query 2 op de database is mislukt");
while(list( $naam, $tekst_pers_lid) = mysql_fetch_row($deel_gegevens_personeel)) {
echo "<b>$naam</b><br>$tekst_pers_lid<br />";
}
} // haakje No 10A
} // haakje No 1A
}// einde functie
formulier();
@mysql_close($mysql);
?>
Gewijzigd op 01/01/1970 01:00:00 door Cmug
Alvast een tip: lees eens een tut over code formatting. Je code is, zoals hij nu is, amper te debuggen.
1) Je hebt een select multiple. Het is dus mogelijk dat de user alle opties selecteert, dus zowel de klasnummers, als de gegevens van het personeel. Is dat wat je wilt? Of wil je OF-OF?
2) Je declareert een globale variabele ($mysql) twee keer. Waarom?
3) De syntax <optgroup label= "Personeel"> is fout. Er hoort geen spatie achter het = teken te staan.
4)
Code (php)
Eerst kijk je of $_POST['klas'] niet empty is. Vervolgens kopieer je de waarde in een andere variabele ($klas), waarom? En waarom daarna nog die if?
Ik heb de $mysql 2 keer gebruikt omdat ik gegevens uit 2 verschillende tabellen moet halen (uit dezelfde database). In No 1 zitten alle leerlingen en No 2 het personeel.
De spatie is inderdaad fout, deze is nu weg gehaald.
Wat betreft die if , inderdaad raar, Was knip en plak uit ander deel van mijn een van mijn php pagina. En als het elders goed werkt denk je te snel dat het ook goed is. Dit is inderdaad onzin en kan zo weg.
Nog een tijdje zitten experimenteren. Maar krijg niet goed. Uiteindelijk maar makkelijk gedaan.(is kinder bedtijd) Een knop bijgemaakt en de _POST was nu heel makkelijk te koppelen. Werk nu prima, wat layout ietjes minder dan 1e keuze maar goed mee te leven.
Oja en in de tussentijd de Tut netjes scripten eens gelezen. Weer wat wijzen geworden.