ORDER BY veranderen met een link
Bvd
Code (php)
1
2
3
4
2
3
4
<?php
$sortorder = (isset ($_GET['sortorder'])) ? ($_GET['sortorder']) : ('naam');
$query = "SELECT auteur, datum, naam FROM table ORDER BY $sortorder";
?>
$sortorder = (isset ($_GET['sortorder'])) ? ($_GET['sortorder']) : ('naam');
$query = "SELECT auteur, datum, naam FROM table ORDER BY $sortorder";
?>
Oh ik heb nog één vraagje (mijn status newbie verklaart het al): Hoe kan ik de order ascending maken als de order bv. al op dat sortorder staat?
bv. je hebt auteur aangeklikt en de lijst staat descending gesorteerd op auteur, klik je nog een keer op auteur dan staat hij ascending gesorteerd.
Ik heb al wat geprobeerd met elseif ($_GET['sortorder']) = nouja dat wou allemaal niet echt werken
Gewijzigd op 01/01/1970 01:00:00 door Richard
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
<?php
$query = "SELECT auteur, datum, naam FROM table";
switch($_GET['order']){
case 1:
$query .= " ORDER BY auteur";
break;
case 2:
$query .= " ORDER BY datum";
break;
default:
$query .= " ORDER BY naam";
}
if(isset($_GET['type']) && $_GET['type'] == 'ASC'){
$type = 'DESC';
}else{
$type = 'ASC';
}
$query .= ' '.$type;
?>
$query = "SELECT auteur, datum, naam FROM table";
switch($_GET['order']){
case 1:
$query .= " ORDER BY auteur";
break;
case 2:
$query .= " ORDER BY datum";
break;
default:
$query .= " ORDER BY naam";
}
if(isset($_GET['type']) && $_GET['type'] == 'ASC'){
$type = 'DESC';
}else{
$type = 'ASC';
}
$query .= ' '.$type;
?>
en je link wordt dan bijvoorbeeld:
pagina.php?order=1&type=$type
Gewijzigd op 01/01/1970 01:00:00 door Bo az
Gewijzigd op 01/01/1970 01:00:00 door Bo az
Het werkt perfect!
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
74
75
76
77
78
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
74
75
76
77
78
<?php
$db_name = 'boekendb';
$tb_name = 'boeken';
echo "<br><strong><center>Door op de titel van de kolommen te klikken wordt de sorteervolgorde gewijzigd.</center></strong><br><br>";
display_table('boekendb','boeken');
function display_table ($db_name, $tb_name) {
# haal de namen en het aantal velden op
$fields = mysql_list_fields ($db_name, $tb_name);
$columns = mysql_num_fields ($fields);
# als er op een kolomkop geklikt is, is de naam van die kolom
# beschikbaar via $_GET
if (isset ($_GET['order_by'])) {
$order_by = $_GET['order_by'];
}
else {
$order_by = 'id';
}
if (isset ($_GET['order_type']) && !isset ($_GET['action'])) {
$order_type = $_GET['order_type'];
if ($order_type == 'ASC') {
$order_type = 'DESC';
}
else {
$order_type = 'ASC';
}
}
else {
$order_type = 'ASC';
}
echo '<div id="table3">';
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">';
//echo '<table border=1>';
echo '<tr>';
//echo '<th>edit</th>';
//echo '<th>delete</th>';
# de titelrij van de tabel in elkaar zetten
# zorgen dat de kolomkoppen aanklikbaar zijn
for ($i = 1; $i < $columns-1; $i++) {
echo "\n";
echo '<th>';
$fieldname = mysql_field_name ($fields, $i) ;
echo "<a href=\"?order_by=$fieldname&order_type=$order_type\">$fieldname</a>";
echo '</th>';
}
$sql = "SELECT *
FROM $tb_name
ORDER BY $order_by $order_type";
$res = mysql_query ($sql) or die (mysql_error ());
while ($row = mysql_fetch_array ($res)) {
echo "\n";
echo '<tr>';
# via deze links kun je de pagina uitbreiden met een delete of een edit-mogelijkheid
//echo "<td><a href=\"?action=edit&id=$row[id]&order_by=$order_by\">edit</a></td>";
//echo "<td><a href=\"?action=delete&id=$row[id]&order_by=$order_by\">delete</a></td>";
for ($i = 1; $i < $columns-1; $i++) {
echo '<td>';
echo $row[$i];
echo '</td>';
}
echo '</tr>';
}
echo '</tr>';
echo '</table1>';
echo '</div>';
}
?>
$db_name = 'boekendb';
$tb_name = 'boeken';
echo "<br><strong><center>Door op de titel van de kolommen te klikken wordt de sorteervolgorde gewijzigd.</center></strong><br><br>";
display_table('boekendb','boeken');
function display_table ($db_name, $tb_name) {
# haal de namen en het aantal velden op
$fields = mysql_list_fields ($db_name, $tb_name);
$columns = mysql_num_fields ($fields);
# als er op een kolomkop geklikt is, is de naam van die kolom
# beschikbaar via $_GET
if (isset ($_GET['order_by'])) {
$order_by = $_GET['order_by'];
}
else {
$order_by = 'id';
}
if (isset ($_GET['order_type']) && !isset ($_GET['action'])) {
$order_type = $_GET['order_type'];
if ($order_type == 'ASC') {
$order_type = 'DESC';
}
else {
$order_type = 'ASC';
}
}
else {
$order_type = 'ASC';
}
echo '<div id="table3">';
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">';
//echo '<table border=1>';
echo '<tr>';
//echo '<th>edit</th>';
//echo '<th>delete</th>';
# de titelrij van de tabel in elkaar zetten
# zorgen dat de kolomkoppen aanklikbaar zijn
for ($i = 1; $i < $columns-1; $i++) {
echo "\n";
echo '<th>';
$fieldname = mysql_field_name ($fields, $i) ;
echo "<a href=\"?order_by=$fieldname&order_type=$order_type\">$fieldname</a>";
echo '</th>';
}
$sql = "SELECT *
FROM $tb_name
ORDER BY $order_by $order_type";
$res = mysql_query ($sql) or die (mysql_error ());
while ($row = mysql_fetch_array ($res)) {
echo "\n";
echo '<tr>';
# via deze links kun je de pagina uitbreiden met een delete of een edit-mogelijkheid
//echo "<td><a href=\"?action=edit&id=$row[id]&order_by=$order_by\">edit</a></td>";
//echo "<td><a href=\"?action=delete&id=$row[id]&order_by=$order_by\">delete</a></td>";
for ($i = 1; $i < $columns-1; $i++) {
echo '<td>';
echo $row[$i];
echo '</td>';
}
echo '</tr>';
}
echo '</tr>';
echo '</table1>';
echo '</div>';
}
?>