Zoekresultaat verwijzen met link
Wat ik dus wil is dat men via de zoekfunctie de resultaten kan aanklikken. Zeg maar dat er gezocht is op Sinterklaas en dat word netjes als resultaat neergezet en die word aangeklikt en gaat men naar de info over Sinterklaas.
Misschien een beetje vaag, maar ik hoop dat iemand me toch een beetje in de juiste richting kan duwen!
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
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
<?
//This is only displayed if they have submitted the form
if ($searching =="yes")
{
echo "<h2>Results</h2><p>";
//If they did not enter a search term we give them an error
if ($find == "")
{
echo "<p>You forgot to enter a search term";
exit;
}
// Otherwise we connect to our Database
mysql_connect("mysql.yourhost.com", "user_name", "password") or die(mysql_error());
mysql_select_db("database_name") or die(mysql_error());
// We preform a bit of filtering
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
//Now we search for our search term, in the field the user specified
$data = mysql_query("SELECT * FROM users WHERE upper($field) LIKE'%$find%'");
//And we display the results
while($result = mysql_fetch_array( $data ))
{
echo $result['fname'];
echo " ";
echo $result['lname'];
echo "<br>";
echo $result['info'];
echo "<br>";
echo "<br>";
}
//This counts the number or results - and if there wasn't any it gives them a little message explaining that
$anymatches=mysql_num_rows($data);
if ($anymatches == 0)
{
echo "Sorry, but we can not find an entry to match your query<br><br>";
}
//And we remind them what they searched for
echo "<b>Searched For:</b> " .$find;
}
?>
//This is only displayed if they have submitted the form
if ($searching =="yes")
{
echo "<h2>Results</h2><p>";
//If they did not enter a search term we give them an error
if ($find == "")
{
echo "<p>You forgot to enter a search term";
exit;
}
// Otherwise we connect to our Database
mysql_connect("mysql.yourhost.com", "user_name", "password") or die(mysql_error());
mysql_select_db("database_name") or die(mysql_error());
// We preform a bit of filtering
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
//Now we search for our search term, in the field the user specified
$data = mysql_query("SELECT * FROM users WHERE upper($field) LIKE'%$find%'");
//And we display the results
while($result = mysql_fetch_array( $data ))
{
echo $result['fname'];
echo " ";
echo $result['lname'];
echo "<br>";
echo $result['info'];
echo "<br>";
echo "<br>";
}
//This counts the number or results - and if there wasn't any it gives them a little message explaining that
$anymatches=mysql_num_rows($data);
if ($anymatches == 0)
{
echo "Sorry, but we can not find an entry to match your query<br><br>";
}
//And we remind them what they searched for
echo "<b>Searched For:</b> " .$find;
}
?>
(we zijn geen ik-wil-dit-dus-maak-het site)
Dat is ook niet mijn bedoeling dat het compleet inelkaar gezet word. Waar ik op vast zit dat ik niet weet hoe ik van een van de resultaten een link kan maken (constructie). Resultaat naar een specifiek record laten verwijzen.
Het forum wat ik geschreven heb zat kwa zoekfunctie wel leuk in elkaar. Iedere post had een eigenlijk topicid & postid, door een 'a name' en een #$postid kwam je altijd in het juiste topic en op de juiste plek terecht.
Ik heb meerdere tabellen waarvan twee HondenKlein en HondenGroot zijn.
Als ik het volgende laat uitvoeren:
$query = "SELECT * FROM HondenKlein
WHERE Soort=\"{$_POST['ras']}\" ORDER BY Naam ASC ";
krijg ik netjes m'n gegevens. Nu wil ik vanuit tabel HondenKlein en HondenGroot de gegevens hebben die voldoen aan ['ras'].
Maar wat ik ook probeer hij blijft alleen in HondenKlein "kijken". Wat moet ik aan de query veranderen... ik weet het ff niet meer.
Je database model is waarschijnlijk verkeerd.
Maak er eens 1 tabel van, genaamd honden, met als velden (bijv.):
naam
soort
klein
Nu kun je in klein een 1 neerzetten als de hond tot de kleine rassen behoort, en anders zet je er een 0 in. Nu kun je zoeken in alle kleine honden (WHERE klein = 1), in alle grote honden(WHERE klein = 0) en in alle 2!
Edit:
Volledige query voor het zoeken in groot en klein word dan dus:
"SELECT * FROM honden WHERE soort = '".$_POST['ras']."' ORDER BY naam ASC"
Alleen in klein:
"SELECT * FROM honden WHERE soort = '".$_POST['ras']."' AND klein = 1 ORDER BY naam ASC"
Alleen in groot:
"SELECT * FROM honden WHERE soort = '".$_POST['ras']."' AND klein = 0 ORDER BY naam ASC"
p.s. Hou de velden en tabel namen a.u.b. in kleine letters, en doe de sql-statements (bijv. SELECT, WHERE, AND, OR, FROM) in hoofdletters, dat is wel zo overzichtelijk.
Volledige query voor het zoeken in groot en klein word dan dus:
"SELECT * FROM honden WHERE soort = '".$_POST['ras']."' ORDER BY naam ASC"
Alleen in klein:
"SELECT * FROM honden WHERE soort = '".$_POST['ras']."' AND klein = 1 ORDER BY naam ASC"
Alleen in groot:
"SELECT * FROM honden WHERE soort = '".$_POST['ras']."' AND klein = 0 ORDER BY naam ASC"
p.s. Hou de velden en tabel namen a.u.b. in kleine letters, en doe de sql-statements (bijv. SELECT, WHERE, AND, OR, FROM) in hoofdletters, dat is wel zo overzichtelijk.
Gewijzigd op 01/01/1970 01:00:00 door Andries Louw Wolthuizen
@ Andries... Dankje. Ik heb het toch helemaal anders gedaan en met een union ben ik eruit eindelijk uitgekomen :) ... waar je je al niet mee bezig kunt houden op 'n eerste kerstdag!