In databas zoeken.
voorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
blabla
<form id="Zoeken" name="Zoeken" method="post" action="zoekendatabase?zoek">
<label for="Zoeken">Zoeken</label>
<input type="text" name="Zoeken" id="Zoeken" />
</form>
blabla
<hr />
show=&result
?>
blabla
<form id="Zoeken" name="Zoeken" method="post" action="zoekendatabase?zoek">
<label for="Zoeken">Zoeken</label>
<input type="text" name="Zoeken" id="Zoeken" />
</form>
blabla
<hr />
show=&result
?>
Weet dit is een gamel voorbeeld maar hoop dat jullie misschien weten waar ik een databasezoekscript.
- Like search?
Kortom geeef eens wat meer informatie als je wilt?
Het zoeken in een database is eigenlijk niet meer dan het opstellen van de juiste query die je door de database wilt laten uitvoeren. Daar zul je dus moeten beginnen en dan komt het formulier dat je wilt gebruiken later wel...
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$sql = ' SELECT * FROM `members` LIKE `$trefwoord");
';
?>
<!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>Untitled Document</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<label for="Zoeken">Zoeken</label>:
<input name="Zoeken" type="text" id="Zoeken" value="<?php echo $trefwoord; ?>" size="28" />
<input type="submit" name="Verzend" id="Verzend" value="Verzend" />
<?php
$sql = ' SELECT * FROM `members` LIKE `$trefwoord");
';
?>
</form>
</body>
</html>
$sql = ' SELECT * FROM `members` LIKE `$trefwoord");
';
?>
<!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>Untitled Document</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<label for="Zoeken">Zoeken</label>:
<input name="Zoeken" type="text" id="Zoeken" value="<?php echo $trefwoord; ?>" size="28" />
<input type="submit" name="Verzend" id="Verzend" value="Verzend" />
<?php
$sql = ' SELECT * FROM `members` LIKE `$trefwoord");
';
?>
</form>
</body>
</html>
Gebruik [code][/code] tags voor het overzichtelijk weergeven van code. Zie ook de FAQ.[/modedit]
Gewijzigd op 23/01/2011 15:58:36 door Joren de Wit
Backticks horen niet in een select
en variabelen buiten de quotes halen
Ik raad aan om een while() loop te gebruiken, en een mysql_fetch_assoc().
Lijkt me dat je gewoon bovengenoemde nog nodig hebt.
resultaat.php:
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
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
<?
//-- natuurlijk moet er eerst een connectie met de database worden gemaakt:
if (!@mysql_select_db("databasenaam", @mysql_connect("localhost", "database-user", "database-pass")))
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
}
//-- $HTTP_POST_VARS[zoekterm] is de naam van het zoekveld in het formulier wat we
//-- hebben gemaakt in het vorige 'hoofdstuk'. Dit is dus de SQL code:
$sql = "SELECT gebruikersnaam FROM members WHERE gebruikersnaam LIKE '%$HTTP_POST_VARS[zoekterm]%'";
$sql2 = "SELECT ipadres FROM members WHERE ipadres LIKE '%$HTTP_POST_VARS[zoekterm]%'";
//-- voer de SQL code uit en zet dit in een variabele zodat we zometeen kunnen
//-- kijken of er een resultaat is
$res = mysql_query($sql);
//-- bekijk nu of er een resultaat is, of het zoekwoord dus gevonden is of niet
if (mysql_num_rows($res) >= 1)
{
//-- er is een resultaat gevonden, toon de resultaten via een while () loop
while ($row = mysql_fetch_array($res))
{
echo "<p>Resultaat gebruikersnaam: <b>$row[gebruikersnaam]</b><br>";
echo "Resultaat gebruikersnaam: <b>$row[$sql2]</b></p>";
}
echo "<a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
//-- als er geen resultaat is gevonden, dus als het zoekwoord niet gevonden is:
else
{
echo "<p>Er is niets gevonden op jou zoekterm:<b> $HTTP_POST_VARS[zoekterm]</b></p>";
echo "<p><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
}
?>
[code/]
Zoek.php:
<?
echo "<HTML>\n
<HEAD><TITLE>Zoeken</TITLE></HEAD>
<BODY>
<p><b>Zoek in de database:</b></p>
<p>
<FORM METHOD=\"POST\" ACTION=\"resultaat.php\">
Zoekterm:<br>
<input type=\"text\" name=\"zoekterm\" size=\"30\"><br>
<input type=\"submit\" name=\"submit\" value=\"Zoeken\">
</p>
</BODY>
</HTML>";
?>
<?
echo "<HTML>\n
<HEAD><TITLE>Zoeken</TITLE></HEAD>
<BODY>
<p><b>Zoek in de database:</b></p>
<p>
<FORM METHOD=\"POST\" ACTION=\"resultaat.php\">
Zoekterm:<br>
<input type=\"text\" name=\"zoekterm\" size=\"30\"><br>
<input type=\"submit\" name=\"submit\" value=\"Zoeken\">
</p>
</BODY>
</HTML>";
?>
//-- natuurlijk moet er eerst een connectie met de database worden gemaakt:
if (!@mysql_select_db("databasenaam", @mysql_connect("localhost", "database-user", "database-pass")))
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
}
//-- $HTTP_POST_VARS[zoekterm] is de naam van het zoekveld in het formulier wat we
//-- hebben gemaakt in het vorige 'hoofdstuk'. Dit is dus de SQL code:
$sql = "SELECT gebruikersnaam FROM members WHERE gebruikersnaam LIKE '%$HTTP_POST_VARS[zoekterm]%'";
$sql2 = "SELECT ipadres FROM members WHERE ipadres LIKE '%$HTTP_POST_VARS[zoekterm]%'";
//-- voer de SQL code uit en zet dit in een variabele zodat we zometeen kunnen
//-- kijken of er een resultaat is
$res = mysql_query($sql);
//-- bekijk nu of er een resultaat is, of het zoekwoord dus gevonden is of niet
if (mysql_num_rows($res) >= 1)
{
//-- er is een resultaat gevonden, toon de resultaten via een while () loop
while ($row = mysql_fetch_array($res))
{
echo "<p>Resultaat gebruikersnaam: <b>$row[gebruikersnaam]</b><br>";
echo "Resultaat gebruikersnaam: <b>$row[$sql2]</b></p>";
}
echo "<a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
//-- als er geen resultaat is gevonden, dus als het zoekwoord niet gevonden is:
else
{
echo "<p>Er is niets gevonden op jou zoekterm:<b> $HTTP_POST_VARS[zoekterm]</b></p>";
echo "<p><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
}
?>
[code/]
Zoek.php:
<?
echo "<HTML>\n
<HEAD><TITLE>Zoeken</TITLE></HEAD>
<BODY>
<p><b>Zoek in de database:</b></p>
<p>
<FORM METHOD=\"POST\" ACTION=\"resultaat.php\">
Zoekterm:<br>
<input type=\"text\" name=\"zoekterm\" size=\"30\"><br>
<input type=\"submit\" name=\"submit\" value=\"Zoeken\">
</p>
</BODY>
</HTML>";
?>
<?
echo "<HTML>\n
<HEAD><TITLE>Zoeken</TITLE></HEAD>
<BODY>
<p><b>Zoek in de database:</b></p>
<p>
<FORM METHOD=\"POST\" ACTION=\"resultaat.php\">
Zoekterm:<br>
<input type=\"text\" name=\"zoekterm\" size=\"30\"><br>
<input type=\"submit\" name=\"submit\" value=\"Zoeken\">
</p>
</BODY>
</HTML>";
?>
Thee boris op 25/01/2011 16:09:21:
De zoek functie en gebruikersnaam ipadres werkt niet :(
Wat gebeurt er dan? Gaat de server roken, zie je een typisch Blauw Scherm in WIndows, wordt je internetverbinding spontaan verbroken?
Wat werkt er niet? Wees eens wat duidelijker a.u.b.?
Over je script....
Gooi maar weg:
- Foutafhandeling ontbreekt.
- $HTTP_POST_VARS[zoekterm] is verouderd. Zeer verouderd.
- Variabelen staan buiten quotes, dat hoort niet
- exit() wordt te onpas gebruikt
- SQL-injection is ook hier een feest. Ik heb je hier pas nog voor gewaarschuwd en het bewijs nog geleverd.
- Waarom gemixde upper en lowercase in je HTML?
Waarom ga je niet zelf wat in elkaar proberen te maken i.p.v. oude rotzooi op te vissen?
En wat is een databas?
Gewijzigd op 25/01/2011 16:22:53 door - Ariën -
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
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
<?php
// De variabelen die je naar eigen belangen moet invullen
$db_user = '1'; // Gebruiker voor MySQL
$db_pass = '2'; // Wachtwoord voor MySQL
$db_host = '3'; // Host voor MySQL; standaard localhost
$db_db = '4'; // Database
$tabel = '5'; // De tabel waarin gezocht moet worden
$eerste = 'gebruikersnaam'; // De 1e rij in je tabel waain hij moet zoeken
$tweede = 'ipadres'; // De 2e rij in je tabel waain hij moet zoeken
// Met onze database connecten
mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
mysql_select_db($db_db) or trigger_error(mysql_error());
// Onze functie voor het afkorten. Later meer.
function afkorten($var, $lengte) {
if (strlen($var) > $lengte) {
$var = substr($var, 0, $lengte-3)."...";
}
return $var;
}
// Als er een id is in de url de volledige tekst laten zien
if(isset($_GET['id']) and !empty($_GET['id']) and is_numeric($_GET['id'])){
// Resultaten ophalen
$result = mysql_query("SELECT * FROM ".$tabel." WHERE id=" . mysql_real_escape_string( $_GET['id'] ) . "");
// Checken of het tekst id wel bestaat
if (mysql_num_rows($result) >= 1) {
// De resultaten even in een $_ROW['']; stoppen
$row = mysql_fetch_assoc($result);
// Resultaten tonen
echo $row[''.$eerste.''];
echo '<br /><br />';
echo $row[''.$tweede.''];
echo $row[''.$derde.''];
echo $row[''.$vierde.''];
}
else { // Als het tekst id niet bestaat:
echo 'Dit id bestaat niet!';
}
}
// Als er een zoekterm in de url staat en niet leeg is...
else if(isset($_GET['zoekterm']) and !empty($_GET['zoekterm'])){
if($_GET['waar'] == $eerste) // En de waar is 'titel'..
{
$sqlquery = "SELECT * FROM ".$tabel." WHERE ".$eerste." LIKE '%" . mysql_real_escape_string( $_GET['zoekterm'] ) . "%'"; // De goede query uitvoeren
$results = mysql_query($sqlquery) or die(mysql_error());; // De goede resultaten ophalen
// Als er resultaten zijn:
if (mysql_num_rows($results) >= 1) {
while($row = mysql_fetch_assoc($results)) {
echo '<a href="?id='.$row['id'].'">'.$row[''.$eerste.''].'</a><br />'; // De titel als linkje met daarna de afgekorte tekst
$tekst = $row[''.$tweede.''];
echo afkorten($tekst,25); // Onze functie aan roepen. De 25 staat voor 25 tekens
echo "<br /><br />"; // En dan ook maar een paar entertjes
}
}
else { // Als er geen resultaten zijn:
echo "Er zijn geen resultaten";
}
}
else if($_GET['waar'] == $tweede) // Of de waar is 'tekst'...
{
$sqlquery = "SELECT * FROM ".$tabel." WHERE ".$tweede." LIKE '%" . mysql_real_escape_string( $_GET['zoekterm'] ) . "%'"; // Een andere query uitvoeren
$results = mysql_query($sqlquery) or die(mysql_error());; // De goede resultaten ophalen
// Als er resultaten zijn:
if (mysql_num_rows($results) >= 1) {
while($row = mysql_fetch_assoc($results)) {
echo '<a href="?id='.$row['id'].'">'.$row[''.$eerste.''].'</a><br />'; // De titel als linkje met daarna de afgekorte tekst
$tekst = $row[''.$tweede.''];
echo afkorten($tekst,25); // Onze functie aan roepen. De 25 staat voor 25 tekens
echo "<br /><br />"; // En dan ook maar een paar entertjes
}
}
else { // Als er geen resultaten zijn:
echo "Er zijn geen resultaten";
}
}
else if($_GET['waar'] == 'overal') // En als de waar 'overal' is
{
$sqlquery = "SELECT * FROM ".$tabel." WHERE ".$eerste." LIKE '%" . mysql_real_escape_string( $_GET['zoekterm'] ) . "%' OR ".$tweede."
LIKE '%" . mysql_real_escape_string( $_GET['zoekterm'] ) . "%'"; // Weer een andere query uitvoeren
$results = mysql_query($sqlquery) or die(mysql_error());; // De goede resultaten ophalen
// Als er resultaten zijn:
if (mysql_num_rows($results) >= 1) {
while($row = mysql_fetch_assoc($results)) {
echo '<a href="?id='.$row['id'].'">'.$row[''.$eerste.''].'</a><br />'; // De titel als linkje met daarna de afgekorte tekst
echo afkorten($row[''.$tweede.''],25); // Onze functie aan roepen. De 25 staat voor 25 tekens
echo "<br /><br />"; // En dan ook maar een paar entertjes
}
}
else { // Als er geen resultaten zijn:
echo "Er zijn geen resultaten";
}
} else {
echo 'Hier kan ik niet in zoeken!';
}
}
else { // Als er niks bruikbaars in de url staat:
// Ons zoekformuliertje laten zien
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="GET">
<input type="text" name="zoekterm"><br />
<select name="waar">
<option>overal
<option>'.$eerste.'
<option>'.$tweede.'
</select><br />
<input type="submit" value="Zoek">
</form>';
}
?>
[code/]
// De variabelen die je naar eigen belangen moet invullen
$db_user = '1'; // Gebruiker voor MySQL
$db_pass = '2'; // Wachtwoord voor MySQL
$db_host = '3'; // Host voor MySQL; standaard localhost
$db_db = '4'; // Database
$tabel = '5'; // De tabel waarin gezocht moet worden
$eerste = 'gebruikersnaam'; // De 1e rij in je tabel waain hij moet zoeken
$tweede = 'ipadres'; // De 2e rij in je tabel waain hij moet zoeken
// Met onze database connecten
mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
mysql_select_db($db_db) or trigger_error(mysql_error());
// Onze functie voor het afkorten. Later meer.
function afkorten($var, $lengte) {
if (strlen($var) > $lengte) {
$var = substr($var, 0, $lengte-3)."...";
}
return $var;
}
// Als er een id is in de url de volledige tekst laten zien
if(isset($_GET['id']) and !empty($_GET['id']) and is_numeric($_GET['id'])){
// Resultaten ophalen
$result = mysql_query("SELECT * FROM ".$tabel." WHERE id=" . mysql_real_escape_string( $_GET['id'] ) . "");
// Checken of het tekst id wel bestaat
if (mysql_num_rows($result) >= 1) {
// De resultaten even in een $_ROW['']; stoppen
$row = mysql_fetch_assoc($result);
// Resultaten tonen
echo $row[''.$eerste.''];
echo '<br /><br />';
echo $row[''.$tweede.''];
echo $row[''.$derde.''];
echo $row[''.$vierde.''];
}
else { // Als het tekst id niet bestaat:
echo 'Dit id bestaat niet!';
}
}
// Als er een zoekterm in de url staat en niet leeg is...
else if(isset($_GET['zoekterm']) and !empty($_GET['zoekterm'])){
if($_GET['waar'] == $eerste) // En de waar is 'titel'..
{
$sqlquery = "SELECT * FROM ".$tabel." WHERE ".$eerste." LIKE '%" . mysql_real_escape_string( $_GET['zoekterm'] ) . "%'"; // De goede query uitvoeren
$results = mysql_query($sqlquery) or die(mysql_error());; // De goede resultaten ophalen
// Als er resultaten zijn:
if (mysql_num_rows($results) >= 1) {
while($row = mysql_fetch_assoc($results)) {
echo '<a href="?id='.$row['id'].'">'.$row[''.$eerste.''].'</a><br />'; // De titel als linkje met daarna de afgekorte tekst
$tekst = $row[''.$tweede.''];
echo afkorten($tekst,25); // Onze functie aan roepen. De 25 staat voor 25 tekens
echo "<br /><br />"; // En dan ook maar een paar entertjes
}
}
else { // Als er geen resultaten zijn:
echo "Er zijn geen resultaten";
}
}
else if($_GET['waar'] == $tweede) // Of de waar is 'tekst'...
{
$sqlquery = "SELECT * FROM ".$tabel." WHERE ".$tweede." LIKE '%" . mysql_real_escape_string( $_GET['zoekterm'] ) . "%'"; // Een andere query uitvoeren
$results = mysql_query($sqlquery) or die(mysql_error());; // De goede resultaten ophalen
// Als er resultaten zijn:
if (mysql_num_rows($results) >= 1) {
while($row = mysql_fetch_assoc($results)) {
echo '<a href="?id='.$row['id'].'">'.$row[''.$eerste.''].'</a><br />'; // De titel als linkje met daarna de afgekorte tekst
$tekst = $row[''.$tweede.''];
echo afkorten($tekst,25); // Onze functie aan roepen. De 25 staat voor 25 tekens
echo "<br /><br />"; // En dan ook maar een paar entertjes
}
}
else { // Als er geen resultaten zijn:
echo "Er zijn geen resultaten";
}
}
else if($_GET['waar'] == 'overal') // En als de waar 'overal' is
{
$sqlquery = "SELECT * FROM ".$tabel." WHERE ".$eerste." LIKE '%" . mysql_real_escape_string( $_GET['zoekterm'] ) . "%' OR ".$tweede."
LIKE '%" . mysql_real_escape_string( $_GET['zoekterm'] ) . "%'"; // Weer een andere query uitvoeren
$results = mysql_query($sqlquery) or die(mysql_error());; // De goede resultaten ophalen
// Als er resultaten zijn:
if (mysql_num_rows($results) >= 1) {
while($row = mysql_fetch_assoc($results)) {
echo '<a href="?id='.$row['id'].'">'.$row[''.$eerste.''].'</a><br />'; // De titel als linkje met daarna de afgekorte tekst
echo afkorten($row[''.$tweede.''],25); // Onze functie aan roepen. De 25 staat voor 25 tekens
echo "<br /><br />"; // En dan ook maar een paar entertjes
}
}
else { // Als er geen resultaten zijn:
echo "Er zijn geen resultaten";
}
} else {
echo 'Hier kan ik niet in zoeken!';
}
}
else { // Als er niks bruikbaars in de url staat:
// Ons zoekformuliertje laten zien
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="GET">
<input type="text" name="zoekterm"><br />
<select name="waar">
<option>overal
<option>'.$eerste.'
<option>'.$tweede.'
</select><br />
<input type="submit" value="Zoek">
</form>';
}
?>
[code/]
En heb je er nu nog een vraag over, of werkt het zoals je wilt?
ja :)
Je weet drommels goed dat ik je vanwege zo'n feit al eens eerder gewaarschuwd heb voor SQL injection... ;-)
PHP is leuk, maar weet waar je mee bezig bent.
alvast bedankt gr jordy
Hoe roep je het script aan?
de code recht streek in me script geplaats of hoe bedoel je
Toevoeging op 14/08/2013 14:07:56:
Gezien je al verder bent gegaan in dit topic sluit ik deze dan maar.
Gewijzigd op 14/08/2013 13:37:58 door - Ariën -