Radio buttons moeten zoekresultaten sorteren
Ik heb een aantal dingen geprobeerd en dacht eerst dat ik $result moest sorteren, maar uiteindelijk leek het me beter om dat als de ene radio button geselecteerd staat dat die de query gewoon aanpast (bijv: order by achternaam asc).
De stukken code hieronder is denk ik alles wat van belang is. Ik heb geprobeerd de query te veranderen met een if statement. Maar hij doet het niet. Hoe fix ik dit? Of doe ik het helemaal fout, en moet ik een andere aanpak gebruiken? Hulp wordt gewaardeerd.
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
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="zoek"><br>
<select size="1" name="dropdown">
<option value="" selected>Zoek binnen categorie...</option>
<option value="studentnummer">Studentnummer</option>
<option value="voornaam">Voornaam</option>
<option value="achternaam">Achternaam</option>
<option value="geboortedatum">Geboortedatum</option>
<option value="slb">Studieloopbaanbegeleider</option>
</select>
<input type="submit" name="verstuur" value="zoek">
<br>Sorteer zoekresultaten op:
<input type="radio" name="sorteren" value="studentnummeroptie" /> studentnummer
<input type="radio" name="sorteren" value="achternaamoptie" /> achternaam
</form>
$sorteren = empty($_POST['sorteren'])? die ("ERROR: Selecteer manier van sorteren") : mysql_escape_string($_POST['sorteren']);
[b]
if ($sorteren=="achternaamoptie"){
$query = "SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY studentnummer ASC" or die (mysql_error());}
else{
$query = "SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY achternaam ASC" or die (mysql_error());}[/b]
<input type="text" name="zoek"><br>
<select size="1" name="dropdown">
<option value="" selected>Zoek binnen categorie...</option>
<option value="studentnummer">Studentnummer</option>
<option value="voornaam">Voornaam</option>
<option value="achternaam">Achternaam</option>
<option value="geboortedatum">Geboortedatum</option>
<option value="slb">Studieloopbaanbegeleider</option>
</select>
<input type="submit" name="verstuur" value="zoek">
<br>Sorteer zoekresultaten op:
<input type="radio" name="sorteren" value="studentnummeroptie" /> studentnummer
<input type="radio" name="sorteren" value="achternaamoptie" /> achternaam
</form>
$sorteren = empty($_POST['sorteren'])? die ("ERROR: Selecteer manier van sorteren") : mysql_escape_string($_POST['sorteren']);
[b]
if ($sorteren=="achternaamoptie"){
$query = "SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY studentnummer ASC" or die (mysql_error());}
else{
$query = "SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY achternaam ASC" or die (mysql_error());}[/b]
Gewijzigd op 04/06/2011 20:59:20 door Tobias Boekwijt
zet je code even tussen [code] en [/code] tags en haal die help aub uit je titel. De meesten die een topic openen hebben hulp nodig dus dat is zinloos
Vincent Huisman op 04/06/2011 20:57:38:
zet je code even tussen [code] en [/code] tags en haal die help aub uit je titel. De meesten die een topic openen hebben hulp nodig dus dat is zinloos
excuses.
$query = mysql_query("SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY studentnummer ASC");}
En haal alsjeblieft alle 'die' uit je script. zie hier voor een goede foutafhandeling
Gewijzigd op 04/06/2011 21:05:32 door Tobias Tobias
Tobias Tobias op 04/06/2011 21:05:00:
Er wordt helemaal geen query uitgevoerd, je zegt alleen dat $query een string is, en als dat niet klopt, moet mysql een foutmelding geven...
$query = mysql_query("SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY studentnummer ASC");}
En haal alsjeblieft alle 'die' uit je script. zie hier voor een goede foutafhandeling
$query = mysql_query("SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY studentnummer ASC");}
En haal alsjeblieft alle 'die' uit je script. zie hier voor een goede foutafhandeling
ik krijg geen foutmelding hij sorteert alleen op de eerste query, dit stuk code staat er overigens nog onder.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$result = mysql_query($query) or die (mysql_error());
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$studentnummer=mysql_result($result,$i,"studentnummer");
$voornaam=mysql_result($result,$i,"voornaam");
$achternaam=mysql_result($result,$i,"achternaam");
$geboortedatum=mysql_result($result,$i,"geboortedatum");
$slb=mysql_result($result,$i,"slb");
echo "Studentnummer: $studentnummer<br>";
echo "Voornaam: $voornaam<br>";
echo "Achternaam: $achternaam<br>";
echo "Geboortedatum: $geboortedatum<br>";
echo "Studieloopbaanbegeleider: $slb<br><br>";
$i++;
}
}
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$studentnummer=mysql_result($result,$i,"studentnummer");
$voornaam=mysql_result($result,$i,"voornaam");
$achternaam=mysql_result($result,$i,"achternaam");
$geboortedatum=mysql_result($result,$i,"geboortedatum");
$slb=mysql_result($result,$i,"slb");
echo "Studentnummer: $studentnummer<br>";
echo "Voornaam: $voornaam<br>";
echo "Achternaam: $achternaam<br>";
echo "Geboortedatum: $geboortedatum<br>";
echo "Studieloopbaanbegeleider: $slb<br><br>";
$i++;
}
}
Gewijzigd op 04/06/2011 21:08:38 door Tobias Boekwijt
Gewijzigd op 04/06/2011 21:10:49 door Tobias Tobias
Tobias Tobias op 04/06/2011 21:08:27:
en daarmee wil je zeggen? ;-)
dat ik een noob ben die te snel op reageren klikt. ;-)
Gewijzigd op 04/06/2011 21:10:19 door Tobias Boekwijt
ik heb de post aangepast
Tobias Tobias op 04/06/2011 21:08:27:
echo de $sorteren eens, kijken of daar wel een waarde inzet. De manier waarop je hem nu vult is voor mij onbekend (maar ben dan ook geen professional...)
bedankt voor de tip. ik zal nu maar even mijn complete code voorleggen. de echo geeft "Notice: Undefined variable: sorteren in E:\Studentpackage\WOS Portable\www\opdracht4.php on line 117" dus hij geeft inderdaad niks door. is er iets mis met de radio buttons zelf? post-methode zou toch genoeg moeten zijn?
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Opdracht 4</title>
<style type="text/css">
h4 {text-decoration:bold;}
table, th, td {border: 1px solid black;}
</style>
</head>
<body>
<?php
$conn = mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db('hogeschool', $conn) or die(mysql_error());
printOpdracht4();
?>
<?php
function printOpdracht4(){
//Query
$qry="SELECT * FROM student";
$result=mysql_query($qry);
echo "<table>";
echo "<tr><td><h4>Studentnummer";
echo "<td><h4>Voornaam";
echo "<td><h4>Achternaam";
echo "<td><h4>Geboortedatum";
echo "<td><h4>Studieloopbaanbegeleider";
// De resultaten opslaan als variabelen
while ($row=mysql_fetch_array($result)) {
$stdnmr = $row['studentnummer'];
$vnaam = $row['voornaam'];
$anaam = $row['achternaam'];
$gbdatum = $row['geboortedatum'];
$slb = $row['slb'];
echo "<tr><td>$stdnmr";
echo "<td>$vnaam";
echo "<td>$anaam";
echo "<td>$gbdatum";
echo "<td>$slb";}
}
echo "</table>";
?>
<br>
<?php
// Formulier niet verstuurd
error_reporting(E_ALL);
if (!isset($_POST['verstuur'])) {
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="zoek"><br>
<select size="1" name="dropdown">
<option value="" selected>Zoek binnen categorie...</option>
<option value="studentnummer">Studentnummer</option>
<option value="voornaam">Voornaam</option>
<option value="achternaam">Achternaam</option>
<option value="geboortedatum">Geboortedatum</option>
<option value="slb">Studieloopbaanbegeleider</option>
</select>
<input type="submit" name="verstuur" value="zoek">
<br>Sorteer zoekresultaten op:
<input type="radio" name="sorteren" value="studentnummeroptie" /> studentnummer
<input type="radio" name="sorteren" value="achternaamoptie" /> achternaam
</form>
<?php
}
else {
// Formulier wel verstuurd
// Server toegang en variabelen
$db = "hogeschool";
$zoek = empty($_POST['zoek'])? die ("ERROR: Vul zoekcriteria in") : mysql_escape_string($_POST['zoek']);
$dropdown = empty($_POST['dropdown'])? die ("ERROR: Selecteer categorie") : mysql_escape_string($_POST['dropdown']);
$sorteren = empty($_POST['sorteren'])? die ("ERROR: Selecteer manier van sorteren") : mysql_escape_string($_POST['sorteren']);
// Open verbinding
$connect = mysql_connect("localhost", "root") or die(mysql_error());
// Selecteer database
mysql_select_db($db) or die ("Unable to connect to database");
// Maak query
if ($sorteren="achternaamoptie"){
$query = "SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY studentnummer ASC" or die (mysql_error());}
else{
$query = "SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY achternaam ASC" or die (mysql_error());}
$result = mysql_query($query) or die (mysql_error());
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$studentnummer=mysql_result($result,$i,"studentnummer");
$voornaam=mysql_result($result,$i,"voornaam");
$achternaam=mysql_result($result,$i,"achternaam");
$geboortedatum=mysql_result($result,$i,"geboortedatum");
$slb=mysql_result($result,$i,"slb");
echo "Studentnummer: $studentnummer<br>";
echo "Voornaam: $voornaam<br>";
echo "Achternaam: $achternaam<br>";
echo "Geboortedatum: $geboortedatum<br>";
echo "Studieloopbaanbegeleider: $slb<br><br>";
$i++;
}
}
echo $sorteren;
?>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Opdracht 4</title>
<style type="text/css">
h4 {text-decoration:bold;}
table, th, td {border: 1px solid black;}
</style>
</head>
<body>
<?php
$conn = mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db('hogeschool', $conn) or die(mysql_error());
printOpdracht4();
?>
<?php
function printOpdracht4(){
//Query
$qry="SELECT * FROM student";
$result=mysql_query($qry);
echo "<table>";
echo "<tr><td><h4>Studentnummer";
echo "<td><h4>Voornaam";
echo "<td><h4>Achternaam";
echo "<td><h4>Geboortedatum";
echo "<td><h4>Studieloopbaanbegeleider";
// De resultaten opslaan als variabelen
while ($row=mysql_fetch_array($result)) {
$stdnmr = $row['studentnummer'];
$vnaam = $row['voornaam'];
$anaam = $row['achternaam'];
$gbdatum = $row['geboortedatum'];
$slb = $row['slb'];
echo "<tr><td>$stdnmr";
echo "<td>$vnaam";
echo "<td>$anaam";
echo "<td>$gbdatum";
echo "<td>$slb";}
}
echo "</table>";
?>
<br>
<?php
// Formulier niet verstuurd
error_reporting(E_ALL);
if (!isset($_POST['verstuur'])) {
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="zoek"><br>
<select size="1" name="dropdown">
<option value="" selected>Zoek binnen categorie...</option>
<option value="studentnummer">Studentnummer</option>
<option value="voornaam">Voornaam</option>
<option value="achternaam">Achternaam</option>
<option value="geboortedatum">Geboortedatum</option>
<option value="slb">Studieloopbaanbegeleider</option>
</select>
<input type="submit" name="verstuur" value="zoek">
<br>Sorteer zoekresultaten op:
<input type="radio" name="sorteren" value="studentnummeroptie" /> studentnummer
<input type="radio" name="sorteren" value="achternaamoptie" /> achternaam
</form>
<?php
}
else {
// Formulier wel verstuurd
// Server toegang en variabelen
$db = "hogeschool";
$zoek = empty($_POST['zoek'])? die ("ERROR: Vul zoekcriteria in") : mysql_escape_string($_POST['zoek']);
$dropdown = empty($_POST['dropdown'])? die ("ERROR: Selecteer categorie") : mysql_escape_string($_POST['dropdown']);
$sorteren = empty($_POST['sorteren'])? die ("ERROR: Selecteer manier van sorteren") : mysql_escape_string($_POST['sorteren']);
// Open verbinding
$connect = mysql_connect("localhost", "root") or die(mysql_error());
// Selecteer database
mysql_select_db($db) or die ("Unable to connect to database");
// Maak query
if ($sorteren="achternaamoptie"){
$query = "SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY studentnummer ASC" or die (mysql_error());}
else{
$query = "SELECT * FROM student WHERE $dropdown LIKE '%$zoek%' ORDER BY achternaam ASC" or die (mysql_error());}
$result = mysql_query($query) or die (mysql_error());
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$studentnummer=mysql_result($result,$i,"studentnummer");
$voornaam=mysql_result($result,$i,"voornaam");
$achternaam=mysql_result($result,$i,"achternaam");
$geboortedatum=mysql_result($result,$i,"geboortedatum");
$slb=mysql_result($result,$i,"slb");
echo "Studentnummer: $studentnummer<br>";
echo "Voornaam: $voornaam<br>";
echo "Achternaam: $achternaam<br>";
echo "Geboortedatum: $geboortedatum<br>";
echo "Studieloopbaanbegeleider: $slb<br><br>";
$i++;
}
}
echo $sorteren;
?>
</body>
</html>
Wel zie ik op regel 92 maar 1 = in de if, dit moeten er 2 zijn
Ps. alle <tr>, <td> en <h4> moeten ook nog afgesloten worden, maar dat heeft niets met je probleem te maken
Gewijzigd op 04/06/2011 21:20:12 door Tobias Tobias
Tobias Tobias op 04/06/2011 21:19:16:
Ik kan er zo 123 niet uithalen wat er mis gaat met $sorteren, zeker niet als $zoek en $dropdown wel goed gaan
Wel zie ik op regel 92 maar 1 = in de if, dit moeten er 2 zijn
Ps. alle <tr>, <td> en <h4> moeten ook nog afgesloten worden, maar dat heeft niets met je probleem te maken
Wel zie ik op regel 92 maar 1 = in de if, dit moeten er 2 zijn
Ps. alle <tr>, <td> en <h4> moeten ook nog afgesloten worden, maar dat heeft niets met je probleem te maken
mmm... als ik nou dit doe:
zou dat werken?
Toevoeging op 04/06/2011 21:43:24:
het is opgelost. weet je nog dat ik zei dat maar alleen de bovenste query het deed?
ik heb "student." voor "achternaam" en "studentnummer" in de querys geplakt. echt dat het zo simpel was..
Gewijzigd op 04/06/2011 21:24:39 door Tobias Boekwijt
Tobias Tobias op 04/06/2011 21:19:16:
Wel zie ik op regel 92 maar 1 = in de if, dit moeten er 2 zijn
- SanThe - op 04/06/2011 21:55:22:
Tobias Tobias op 04/06/2011 21:19:16:
Wel zie ik op regel 92 maar 1 = in de if, dit moeten er 2 zijn
ook aangepast.
[/topic]