sql php: query werkt niet
mijn zoek query wil niet werken iemand suggesties om deze te verbeteren.
je moet zowel op een veld kunnen zoeken als op alle
Mvg ralph
<!-- zoeken -->
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?
// errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
// sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
// functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
if($_SERVER['REQUEST_METHOD'] == "POST")
{
// de query | bij input: let op sql-injectie -> mysql_real_escape_string()
$sql_search_horse = "SELECT *
FROM Paarden
WHERE vader='".mysql_real_escape_string($_POST['vader'])."'
OR geslacht='".$_POST['geslacht']."'
OR geboortejaar='".$_POST['leeftijd']."'
OR niveau='".$_POST['niveau']."'
OR verkoopPrijs >='".$_POST['prijs']."'
OR name='".$_POST['name']."'
";
// Check of query is gelukt
if (($sql_search_horse = mysql_query($sql_search_horse)) === false)
{
// als de query fout is -> foutafhandeling
echo showSQLError($sql_search_horse,mysql_error(),'Fout met het ophalen van de paarden.');
}
elseif (mysql_num_rows($sql_search_horse) == 0)
{
// De query is gelukt en we hebben net gekeken met _num_rows of er een rij is:
// -> Als er geen rij is echoën we hier:
echo 'Er is geen paard wat voldoet aan de zoekeisen.';
}
else
{
// Hier is er wel een rij dus ->
echo '
<div id="zoek_results">
<table>
<tr>
<th>Naam:</th>
<th>Geboortejaar:</th>
<th>Hoogte:</th>
<th>Niveau:</th>
<th>Vader:</th>
<th>Vader v.d. merrie:</th>
<th>Verkoopprijs:</th>
<th>meer info:</th>
</tr>
';
//we kunnen onze naam uit de database halen d.m.v. mysql_fetch_assoc
while($zoek_result= mysql_fetch_assoc($sql_search_horse))
{
echo'
<tr>
<td class="center">'.$zoek_result['name'].'</td>
<td class="center">'.$zoek_result['geboortejaar'].'</td>
<td class="center">'.$zoek_result['hoogte'].'</td>
<td class="center">'.$zoek_result['niveau'].'</td>
<td class="center">'.$zoek_result['vader'].'</td>
<td class="center">'.$zoek_result['vaderMerrie'].'</td>
<td class="center">'.$zoek_result['verkoopPrijs'].'</td>
<td class="center"><a href="?page=page1.1.php">x</a>
</tr>
';
}
echo'
</table>
</div>
';
}
}
else
{
echo'
<div id="zoeken">
<form action="" method="POST">
<table>
<tr>
<td>Naam:</td>
<td><input type="text" class="input" name="name"></td>
</tr>
<tr>
<td>Vader:</td>
<td><input type="text" class="input" name="vader"></td>
</tr>
<tr>
<td>Geslacht:</td>
<td><input type="text" class="input" name="geslacht"></td>
</tr>
<tr>
<td>Geboorte jaar</td>
<td><input type="text" class="input" name="leeftijd"></td>
</tr>
<tr>
<td>Niveau:</td>
<td><input type="text" class="input" name="niveau"></td>
</tr>
<tr>
<td>Max. prijs:</td>
<td><input type="text" class="input" name="prijs"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="button" value="Zoeken"></td>
</tr>
</table>
<form>
</div>
';
}
// errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
// sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
// functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
if($_SERVER['REQUEST_METHOD'] == "POST")
{
// de query | bij input: let op sql-injectie -> mysql_real_escape_string()
$sql_search_horse = "SELECT *
FROM Paarden
WHERE vader='".mysql_real_escape_string($_POST['vader'])."'
OR geslacht='".$_POST['geslacht']."'
OR geboortejaar='".$_POST['leeftijd']."'
OR niveau='".$_POST['niveau']."'
OR verkoopPrijs >='".$_POST['prijs']."'
OR name='".$_POST['name']."'
";
// Check of query is gelukt
if (($sql_search_horse = mysql_query($sql_search_horse)) === false)
{
// als de query fout is -> foutafhandeling
echo showSQLError($sql_search_horse,mysql_error(),'Fout met het ophalen van de paarden.');
}
elseif (mysql_num_rows($sql_search_horse) == 0)
{
// De query is gelukt en we hebben net gekeken met _num_rows of er een rij is:
// -> Als er geen rij is echoën we hier:
echo 'Er is geen paard wat voldoet aan de zoekeisen.';
}
else
{
// Hier is er wel een rij dus ->
echo '
<div id="zoek_results">
<table>
<tr>
<th>Naam:</th>
<th>Geboortejaar:</th>
<th>Hoogte:</th>
<th>Niveau:</th>
<th>Vader:</th>
<th>Vader v.d. merrie:</th>
<th>Verkoopprijs:</th>
<th>meer info:</th>
</tr>
';
//we kunnen onze naam uit de database halen d.m.v. mysql_fetch_assoc
while($zoek_result= mysql_fetch_assoc($sql_search_horse))
{
echo'
<tr>
<td class="center">'.$zoek_result['name'].'</td>
<td class="center">'.$zoek_result['geboortejaar'].'</td>
<td class="center">'.$zoek_result['hoogte'].'</td>
<td class="center">'.$zoek_result['niveau'].'</td>
<td class="center">'.$zoek_result['vader'].'</td>
<td class="center">'.$zoek_result['vaderMerrie'].'</td>
<td class="center">'.$zoek_result['verkoopPrijs'].'</td>
<td class="center"><a href="?page=page1.1.php">x</a>
</tr>
';
}
echo'
</table>
</div>
';
}
}
else
{
echo'
<div id="zoeken">
<form action="" method="POST">
<table>
<tr>
<td>Naam:</td>
<td><input type="text" class="input" name="name"></td>
</tr>
<tr>
<td>Vader:</td>
<td><input type="text" class="input" name="vader"></td>
</tr>
<tr>
<td>Geslacht:</td>
<td><input type="text" class="input" name="geslacht"></td>
</tr>
<tr>
<td>Geboorte jaar</td>
<td><input type="text" class="input" name="leeftijd"></td>
</tr>
<tr>
<td>Niveau:</td>
<td><input type="text" class="input" name="niveau"></td>
</tr>
<tr>
<td>Max. prijs:</td>
<td><input type="text" class="input" name="prijs"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="button" value="Zoeken"></td>
</tr>
</table>
<form>
</div>
';
}
Gewijzigd op 28/03/2012 11:06:10 door Ralph van der Tang
Wat krijg je te zien? Krijg je errors? "je moet zowel op een veld kunnen zoeken als op alle" die snap ik niet? Je kan ook gebruik maken van LIKE voor een zoekfunctie.
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE geslacht=''
OR WHERE leeftijd=''
OR WHERE niveau=''
OR ' at line 4
Toevoeging op 28/03/2012 10:33:34:
like kende ik nog niet zal er is naar gaan kijken op w3
misschien even alle WHERE weghalen achter de OR ??
heb nog een vraagje
waarom krijg ik nu mijn hele database te zijn met deze query ?
script bovenin aan gepast
groet ralph
Gewijzigd op 28/03/2012 11:06:48 door ralph van der Tang