Selectie box filteren
Voor het eerst hier.
Voor school wil ik een filter maken op een site. Je kiest uit een selectbox het vak, bijvoorbeeld bio uit bio, nat, sch (resp id=1,2,3). Ik haal deze uit een mysql_tabel (tabel=vak).
Dat lukt nog wel.
Maar nu wil ik dat ik het vak_id koppel aan de proeven (uit tabel=proeven). Zoals bijvoorbeeld de proefnaam "valsnelheid" dat van natuurkunde(met id=2) is, wordt getoond en al de andere natuurkunde proeven natuurlijk (uit een mysql database). Dus de bio en sch worden er uitgehaald.
Ik weet dat je dat alleen kan doen als je submit gebruikt, maar hoe doe je dat zonder dat je de informatie verliest na het submitten?
(is mijn vraag zo duidelijk genoeg omschreven?)
M.v.g,
Jeroen
Toevoeging op 23/01/2011 23:25:11:
sorry nog even een aanvulling,
Het gaat er om dat het in dezelfde pagina gemaakt kan
worden (bijv overzicht.php)dus niet steeds door naar een andere pagina en
zonder gebruik te maken van javascript.
Gaat dit via div of zo?
mvg jeroen
Je moet kiezen. Ofwel heel erg gebruiksvriendelijk, met javascript; ofwel telkens met submit knop
Blijkt dat als je wat wilt, met een database je toch javascript nodig hebt?
Ik kan me daar wel weer in verdiepen, maar dat kost tijd. Liever doe ik het via php, of toch maar beter het via javascript te doen?
mvg jeroen
Ik zou gewoon PHP gebruiken. Wat is er erg aan dat een pagina opnieuw geladen wordt?
Uiteraard mysql connectie gegevens aanpassen.
Controleer of de velden de zelfde namen hebben ...
eventueel (vrij waarschijnlijk) moet je de SQL strings aanpassen.
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
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
<?php
// database openen en connecteren en zo...
$link = mysql_connect('localhost', 'root', 'paswoord');
mysql_select_db('phphulp', $link);
$vak_options = '<option value="0">--- KIES EEN VAK ---</option>';
$sql_vak = "SELECT id, naam FROM vak ORDER by naam";
$res_vak = mysql_query($sql_vak);
while ($row = mysql_fetch_assoc($res_vak) ) {
// onthouden welke option gekozen was
$selected = '';
if ( (!empty($_POST['vak'])) && $_POST['vak'] == $row['id']) {
$selected = ' selected="selected"';
}
$vak_options .= '<option'. $selected .' value="'. $row['id'] .'">'. $row['naam'] .'</option>' .PHP_EOL ;
}
$proeven_options = '<option value="0">--- KIES EERST EEN VAK ---</option>';
if (!empty($_POST['vak'])) {
// Gegevens helen van de tabl proeven
$proeven_options = '<option value="0">--- KIES EEN PROEF ---</option>';
$sql_proeven = "SELECT id, titel, beschrijving FROM proeven WHERE vak_id = ". (int) $_POST['vak'] ." ORDER by titel";
$res_proeven = mysql_query($sql_proeven);
while ($row = mysql_fetch_assoc($res_proeven) ) {
// onthouden welke option gekozen was
$selected = '';
if ( (!empty($_POST['proef'])) && $_POST['proef'] == $row['id']) {
$selected = ' selected="selected"';
}
$proeven_options .= '<option'. $selected .' value="'. $row['id'] .'">'. $row['titel'] .'</option>' .PHP_EOL ;
}
}
echo '
<form action="" method="post">
<select name="vak">
'. $vak_options .'
</select>
<select name="proef">
'. $proeven_options .'
</select>
<input type="submit" value="GO"/>
</form>
';
?>
// database openen en connecteren en zo...
$link = mysql_connect('localhost', 'root', 'paswoord');
mysql_select_db('phphulp', $link);
$vak_options = '<option value="0">--- KIES EEN VAK ---</option>';
$sql_vak = "SELECT id, naam FROM vak ORDER by naam";
$res_vak = mysql_query($sql_vak);
while ($row = mysql_fetch_assoc($res_vak) ) {
// onthouden welke option gekozen was
$selected = '';
if ( (!empty($_POST['vak'])) && $_POST['vak'] == $row['id']) {
$selected = ' selected="selected"';
}
$vak_options .= '<option'. $selected .' value="'. $row['id'] .'">'. $row['naam'] .'</option>' .PHP_EOL ;
}
$proeven_options = '<option value="0">--- KIES EERST EEN VAK ---</option>';
if (!empty($_POST['vak'])) {
// Gegevens helen van de tabl proeven
$proeven_options = '<option value="0">--- KIES EEN PROEF ---</option>';
$sql_proeven = "SELECT id, titel, beschrijving FROM proeven WHERE vak_id = ". (int) $_POST['vak'] ." ORDER by titel";
$res_proeven = mysql_query($sql_proeven);
while ($row = mysql_fetch_assoc($res_proeven) ) {
// onthouden welke option gekozen was
$selected = '';
if ( (!empty($_POST['proef'])) && $_POST['proef'] == $row['id']) {
$selected = ' selected="selected"';
}
$proeven_options .= '<option'. $selected .' value="'. $row['id'] .'">'. $row['titel'] .'</option>' .PHP_EOL ;
}
}
echo '
<form action="" method="post">
<select name="vak">
'. $vak_options .'
</select>
<select name="proef">
'. $proeven_options .'
</select>
<input type="submit" value="GO"/>
</form>
';
?>
EDIT:
Kwestie dat je weet waarmee ik getest heb.
SQL dump:
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
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
CREATE TABLE proeven (
id int(11) NOT NULL AUTO_INCREMENT,
titel varchar(255) NOT NULL,
vak_id int(11) NOT NULL,
beschrijving text NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO proeven (id, titel, vak_id, beschrijving) VALUES
(1, 'valversnelling', 1, 'Een kanonbal samen met een knikker van de toren van Pisa laten vallen'),
(2, 'lichtbreking', 1, '...'),
(3, 'statische elektriciteit', 1, '...'),
(4, 'dissectie kikker', 2, '...'),
(5, 'DNA uit ajuin halen', 2, '...'),
(6, 'platonische lichamen', 3, '...'),
(7, 'kansberekening', 3, '...');
-- --------------------------------------------------------
CREATE TABLE vak (
id int(11) NOT NULL AUTO_INCREMENT,
naam varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO vak (id, naam) VALUES
(1, 'Fysica'),
(2, 'Biologie'),
(3, 'Wiskunde');
id int(11) NOT NULL AUTO_INCREMENT,
titel varchar(255) NOT NULL,
vak_id int(11) NOT NULL,
beschrijving text NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO proeven (id, titel, vak_id, beschrijving) VALUES
(1, 'valversnelling', 1, 'Een kanonbal samen met een knikker van de toren van Pisa laten vallen'),
(2, 'lichtbreking', 1, '...'),
(3, 'statische elektriciteit', 1, '...'),
(4, 'dissectie kikker', 2, '...'),
(5, 'DNA uit ajuin halen', 2, '...'),
(6, 'platonische lichamen', 3, '...'),
(7, 'kansberekening', 3, '...');
-- --------------------------------------------------------
CREATE TABLE vak (
id int(11) NOT NULL AUTO_INCREMENT,
naam varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO vak (id, naam) VALUES
(1, 'Fysica'),
(2, 'Biologie'),
(3, 'Wiskunde');
Gewijzigd op 26/01/2011 16:31:15 door Kris Peeters