sorteren m.b.v. dropdownmenu
In mijn applicatie zou ik graag gegevens uit een tabel willen kunnen sorteren m.v.b. een dropdownmenu. Ik heb wel wat gelezen over arrays maar mijn vraag is hoe ik dit het beste kan doen. kan dat niet met een if statement bijvoorbeeld?
Want "hoe ik dit het beste kan doen" is wel heel erg vaag...
<option value="project leader">Project leader</option>
<option value="Brand">Brand</option>
<option value="Kind of product">Kind of product</option>
Dit is mijn dropdown menu en dan wil ik op alfabetische volgorde sorteren.
Dat moet dus meteen gebeuren als ik iets kies uit dit menu. Ik weet wel dat het volgende een sql statement is om dat te doen:
ALTER TABLE `proposal` ORDER BY `projectleader` maar hoe geef ik dit aan in php?
Iemand ergens een voorbeeld waarbij de code toegelicht wordt?
Of misschien een simpelere manier om te sorteren?
Gewijzigd op 01/01/1970 01:00:00 door karel
Waarom wil je sorteren met behulp van een select box?
Omdat ik gegevens uit m'n database naar het scherm schrijf van projectgegevens waarbij men vervolgens nog de details ervan kan bekijken, daarmee bedoel ik de overige gegevens die bij een project horen. Als er enkele honderden records in staan is het handig om ze te sorteren en dit lijkt me voor de gebruikers de meest makkelijke manier
karel schreef op 27.12.2006 10:40:
Of misschien een simpelere manier om te sorteren?
De meest gebruikte manier om een tabel te sorteren, is dat je hyperlinks maakt van de kolomkoppen. Als iemand op zo'n kolomkop klikt, wordt er gesorteerd op die kolom.
Als je het helemaal mooi wilt doen onthoud je zelfs de sorteervolgorden. Als iemand de eerste keer op een kolomkop klikt, sorteer je oplopend. Wordt er nogmaals op dezelfde kolomkop geklikt, dan sorteer je aflopend.
karel schreef op 27.12.2006 10:56:
Omdat ik gegevens uit m'n database naar het scherm schrijf van projectgegevens waarbij men vervolgens nog de details ervan kan bekijken, daarmee bedoel ik de overige gegevens die bij een project horen. Als er enkele honderden records in staan is het handig om ze te sorteren en dit lijkt me voor de gebruikers de meest makkelijke manier
Dus als ik je goed begrijp laat je in eerste instantie maar een paar velden zien in een lange lijst. Als de gebruiker de details van een project wil zien, kan hij doorklikken naar een pagina waarop alle details van 1 project te zien zijn.
Dan is het niet alleen handig om de tabel te sorteren, dan moet je ook een paginerings-script hebben, zodat je (bijvoorbeeld) twintig rijen per pagina kunt laten zien.
Verder zou ik toch kiezen voor aanklikbare kolomkoppen. Welke velden wil je precies laten zien op je overzichtspagina?
Edit:
Ik zie het al, het staat in je tweede post.
Ik zie het al, het staat in je tweede post.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
edit:
Bedankt voor de reacties trouwens, ik ga het op die manier uit proberen te zoeken
Gewijzigd op 01/01/1970 01:00:00 door karel
Ik zal je nog helpen met een opzetje, momentje.
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
63
64
65
66
67
68
69
70
71
72
73
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
63
64
65
66
67
68
69
70
71
72
73
<?php
require 'db_config.php';
function get_items ($sort_by, $sort_order) {
$sql = "
SELECT datum1, getal1, tekst1
FROM voorbeelden
ORDER BY " . $sort_by . " " . $sort_order;
if (!$res = mysql_query ($sql)) {
echo '<pre>';
echo htmlentities ($sql);
trigger_error (mysql_errno () . ': ' . mysql_error ());
echo '</pre>';
}
else {
if ($sort_order == 'ASC') {
$sort_order = 'DESC';
}
else {
$sort_order = 'ASC';
}
echo '<table>';
echo '<tr>';
echo '<th><a href="?sort_by=datum1&sort_order='.$sort_order.'">datum1</a></th>';
echo '<th><a href="?sort_by=getal1&sort_order='.$sort_order.'">getal1</a></th>';
echo '<th><a href="?sort_by=tekst1&sort_order='.$sort_order.'">tekst1</a></th>';
echo '</tr>';
while ($row = mysql_fetch_assoc ($res)) {
echo '<tr>';
echo '<td>'.$row['datum1'].'</td>';
echo '<td>'.$row['getal1'].'</td>';
echo '<td>'.$row['tekst1'].'</td>';
echo '</tr>';
}
echo '</table>';
}
}
$sort_by = (isset ($_GET['sort_by'])) ? ($_GET['sort_by']) : ('datum1');
$sort_by_toegestaan = array ('datum1', 'getal1', 'tekst1');
if (!in_array ($sort_by, $sort_by_toegestaan)) {
$sort_by = 'datum1';
}
$sort_order = (isset ($_GET['sort_order'])) ? ($_GET['sort_order']) : ('ASC');
$sort_order_toegestaan = array ('ASC', 'DESC');
if (!in_array ($sort_order, $sort_order_toegestaan)) {
$sort_order = 'ASC';
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>sorteervoorbeeld</title>
<style type="text/css">
table {
border: 1px solid black;
}
td {
border: 1px solid #999;
padding: 3px;
}
</style>
</head>
<body>
<?php
get_items ($sort_by, $sort_order);
?>
</body>
</html>
require 'db_config.php';
function get_items ($sort_by, $sort_order) {
$sql = "
SELECT datum1, getal1, tekst1
FROM voorbeelden
ORDER BY " . $sort_by . " " . $sort_order;
if (!$res = mysql_query ($sql)) {
echo '<pre>';
echo htmlentities ($sql);
trigger_error (mysql_errno () . ': ' . mysql_error ());
echo '</pre>';
}
else {
if ($sort_order == 'ASC') {
$sort_order = 'DESC';
}
else {
$sort_order = 'ASC';
}
echo '<table>';
echo '<tr>';
echo '<th><a href="?sort_by=datum1&sort_order='.$sort_order.'">datum1</a></th>';
echo '<th><a href="?sort_by=getal1&sort_order='.$sort_order.'">getal1</a></th>';
echo '<th><a href="?sort_by=tekst1&sort_order='.$sort_order.'">tekst1</a></th>';
echo '</tr>';
while ($row = mysql_fetch_assoc ($res)) {
echo '<tr>';
echo '<td>'.$row['datum1'].'</td>';
echo '<td>'.$row['getal1'].'</td>';
echo '<td>'.$row['tekst1'].'</td>';
echo '</tr>';
}
echo '</table>';
}
}
$sort_by = (isset ($_GET['sort_by'])) ? ($_GET['sort_by']) : ('datum1');
$sort_by_toegestaan = array ('datum1', 'getal1', 'tekst1');
if (!in_array ($sort_by, $sort_by_toegestaan)) {
$sort_by = 'datum1';
}
$sort_order = (isset ($_GET['sort_order'])) ? ($_GET['sort_order']) : ('ASC');
$sort_order_toegestaan = array ('ASC', 'DESC');
if (!in_array ($sort_order, $sort_order_toegestaan)) {
$sort_order = 'ASC';
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>sorteervoorbeeld</title>
<style type="text/css">
table {
border: 1px solid black;
}
td {
border: 1px solid #999;
padding: 3px;
}
</style>
</head>
<body>
<?php
get_items ($sort_by, $sort_order);
?>
</body>
</html>
super, ik ga ermee aan de slag
Oké. Vergeet niet de veldnamen en de tabelnaam aan te passen ;-)
Het sorteren werkt nu, ik ga dit zometeen even toepassen in m'n interface want heb het voorbeeld even overgenomen. Bedankt!
Graag gedaan :-)