Zoeken in database
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
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
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
if (isset($_GET['trefwoord']) && isset($_GET['kolom']))
{
//Maak een connectie met de server en selecteer de database
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("muziek") or die(mysql_error());
//Haal de gegevens uit de tabel waar de kolom is $_GET['kolom'] waar een woord als $_GET['trefwoord'] in voorkomt.
$res = mysql_query("SELECT * FROM `zoek_test` WHERE `{$_GET['kolom']}` LIKE `{$_GET['trefwoord']}`");
//Begin html
echo '
<table>
<tr>
<td><b>Zoekresultaten</b></td>
</tr>';
//Weergeef gegevens
while ($row = mysql_fetch_object($res))
{
echo '
<tr>
<td>$row->titel</td>
</tr>';
}
//Sluit tabel
echo '</table>';
}
//Als er nog niet is gezocht
else
{
echo '
<form method="GET">
<table>
<tr>
<td colspan="2"><b>Zoeken in database</b></td>
</tr>
<tr>
<td>Kolom:</td>
<td>
<select name="kolom">
<option value="id">id</option>
<option value="tekst">tekst</option>
</select>
</td>
</tr>
<tr>
<td>Trefwoord:</td>
<td>
<input type="text" name="trefwoord" />
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Zoeken"></td>
</tr>
</table>
</form>';
}
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
if (isset($_GET['trefwoord']) && isset($_GET['kolom']))
{
//Maak een connectie met de server en selecteer de database
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("muziek") or die(mysql_error());
//Haal de gegevens uit de tabel waar de kolom is $_GET['kolom'] waar een woord als $_GET['trefwoord'] in voorkomt.
$res = mysql_query("SELECT * FROM `zoek_test` WHERE `{$_GET['kolom']}` LIKE `{$_GET['trefwoord']}`");
//Begin html
echo '
<table>
<tr>
<td><b>Zoekresultaten</b></td>
</tr>';
//Weergeef gegevens
while ($row = mysql_fetch_object($res))
{
echo '
<tr>
<td>$row->titel</td>
</tr>';
}
//Sluit tabel
echo '</table>';
}
//Als er nog niet is gezocht
else
{
echo '
<form method="GET">
<table>
<tr>
<td colspan="2"><b>Zoeken in database</b></td>
</tr>
<tr>
<td>Kolom:</td>
<td>
<select name="kolom">
<option value="id">id</option>
<option value="tekst">tekst</option>
</select>
</td>
</tr>
<tr>
<td>Trefwoord:</td>
<td>
<input type="text" name="trefwoord" />
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Zoeken"></td>
</tr>
</table>
</form>';
}
?>
Hiermee krijg je resultaat, maar ik krijg de volgende foutmelding:
Code (php)
1
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\wamp\www\muziek\search\resultaat.php on line 30
Maar ik snap niet wat ik aan het script moet veranderen. Wie wel?
Er moeten nog gewone aanhalingstekens om je gedeelte achter LIKE. Het is namelijk een string.
Doe wat aan foutafhandeling en je had de fout al gevonden voordat je de PHP error ook maar ooit gezien had.
Jezpur schreef op 03.02.2009 21:58:
Doe wat aan foutafhandeling en je had de fout al gevonden voordat je de PHP error ook maar ooit gezien had.
Ik volg je niet helemaal...
SQL Foutafhandeling is essentieel bij het debuggen/schrijven van een script/applicatie.
Ik ben ook met foutafhandeling bezig van een script van iemand anders... Maar ik snap de foutmelding nog steeds niet. 9 van de 10 keer snap ik ze maar dit is een mistery!
http://phphulp.nl/php/tutorials/3/100/
Heb de boel zo aangepast:
Resultaat.php
Zoek.php
Als ik dan zoek gebeurd er helemaal niks, het is net of zoek niet communiceert met resutaat.
Wie helpt mij eindelijk uit het vuur?
Ik ben nog een keer bezig geweest met de tut van bas: Heb de boel zo aangepast:
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
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
<?php
//-- natuurlijk moet er eerst een connectie met de database worden gemaakt:
if (!@mysql_select_db("muziek", @mysql_connect("localhost", "root", "")))
{
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 artiest,nummer FROM muziekdata WHERE artiest 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 id: <b>$row[nummer]</b><br>";
echo "Resultaat tekst: <b>$row[artiest]</b></p>";
echo "<p>Er is niets gevonden op jou zoekterm:<b> $HTTP_POST_VARS[zoekterm]</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>";
}
?>
//-- natuurlijk moet er eerst een connectie met de database worden gemaakt:
if (!@mysql_select_db("muziek", @mysql_connect("localhost", "root", "")))
{
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 artiest,nummer FROM muziekdata WHERE artiest 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 id: <b>$row[nummer]</b><br>";
echo "Resultaat tekst: <b>$row[artiest]</b></p>";
echo "<p>Er is niets gevonden op jou zoekterm:<b> $HTTP_POST_VARS[zoekterm]</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>";
}
?>
Zoek.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<HTML>
<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>
<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>
Als ik dan zoek gebeurd er helemaal niks, het is net of zoek niet communiceert met resutaat.
Wie helpt mij eindelijk uit het vuur?
Vars buiten quotes houden en geen antieke vars gebruiken. Tevens moet je beveiligen. Gebruik enkele quotes bij array()'s.
... LIKE '%" . mysql_real_escape_string($_POST['zoekterm']) . "%' ...
SELECT artiest,nummer FROM muziekdata WHERE artiest OR nummer
werkt niet. hoe wel. Ik moet artiest en nummer OF artiest of nummer kunnen zoeken.
Lees eens wat tutorials door.
En ik zal me wel wat verdiepen in php.
phpbram schreef op 04.02.2009 21:06:
als ik artiest en nummer in 1 doe
En hoe wou je dat doen?
Of kan dat soms niet, zo nee: is daar een andere manier voor om het wel te kunnen??
Gewijzigd op 01/01/1970 01:00:00 door Naam Loos
Je moet LIKE gebruiken om te zoeken.