Hulp nodig met search engine
Ik ben sinds kort bezig met een website waarin ik een php/mysql search engine wil hebben. Ik wil dat elke resultaat, die de gebruiKker gevonden heeft, een eigen pagina heeft. (die zelf gegenereerd word, waarin informatie erover staat die uit de database gehaald word)
Ik heb al een index.php en een search.php
Kunt iemand mij misschien helpen.
Wat is je huidige code?
Waarin wil je zoeken?
Quote:
<form action='search.php' method='GET'>
<div class="zoek">
<p><font size="5" face="sans-serif"><div class="zoek">
<input type='text' size='20' name='search'> <input type='submit' name='submit' value='Search'></font></p>
</div>
</form>
<div class="zoek">
<p><font size="5" face="sans-serif"><div class="zoek">
<input type='text' size='20' name='search'> <input type='submit' name='submit' value='Search'></font></p>
</div>
</form>
Search.php
Quote:
<table width='100%'>
<tr>
<td>
<div align="center">
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
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
<?php
//get data
$button = $_GET['submit'];
$search = $_GET['search'];
$s = $_GET['s'];
if (!$s)
$s = 0;
$e = 8; // Just change to how many results you want per page
$next = $s + $e;
$prev = $s - $e;
if (strlen($search)<=2)
echo "Must be greater then 3 chars";
else
{
echo "";
//connect to database
mysql_connect("localhost","laatiknietzien","laatiknietzien");
mysql_select_db("laatiknietzien");
//explode out search term
$search_exploded = explode(" ",$search);
foreach($search_exploded as $search_each)
{
//construct query
$x++;
if ($x==1)
$construct .= "keywords LIKE '%$search_each%'";
else
$construct .= " OR keywords LIKE '%$search_each%'";
}
//echo outconstruct
$constructx = "SELECT * FROM searchengine WHERE $construct";
$construct = "SELECT * FROM searchengine WHERE $construct LIMIT $s,$e";
$run = mysql_query($constructx);
$foundnum = mysql_num_rows($run);
$run_two = mysql_query("$construct");
if ($foundnum==0)
echo "No results found for <b>$search</b>";
else
{
echo "";
while ($runrows = mysql_fetch_assoc($run_two))
{
//get data
$title = $runrows['title'];
$url = $runrows['url'];
echo "<table width='300px'>
<h4><a href='$url'><b>$title</b></a><br />
<font color='757575'>$url</font></table></h4>
";
}
?>
//get data
$button = $_GET['submit'];
$search = $_GET['search'];
$s = $_GET['s'];
if (!$s)
$s = 0;
$e = 8; // Just change to how many results you want per page
$next = $s + $e;
$prev = $s - $e;
if (strlen($search)<=2)
echo "Must be greater then 3 chars";
else
{
echo "";
//connect to database
mysql_connect("localhost","laatiknietzien","laatiknietzien");
mysql_select_db("laatiknietzien");
//explode out search term
$search_exploded = explode(" ",$search);
foreach($search_exploded as $search_each)
{
//construct query
$x++;
if ($x==1)
$construct .= "keywords LIKE '%$search_each%'";
else
$construct .= " OR keywords LIKE '%$search_each%'";
}
//echo outconstruct
$constructx = "SELECT * FROM searchengine WHERE $construct";
$construct = "SELECT * FROM searchengine WHERE $construct LIMIT $s,$e";
$run = mysql_query($constructx);
$foundnum = mysql_num_rows($run);
$run_two = mysql_query("$construct");
if ($foundnum==0)
echo "No results found for <b>$search</b>";
else
{
echo "";
while ($runrows = mysql_fetch_assoc($run_two))
{
//get data
$title = $runrows['title'];
$url = $runrows['url'];
echo "<table width='300px'>
<h4><a href='$url'><b>$title</b></a><br />
<font color='757575'>$url</font></table></h4>
";
}
?>
<table width='100%'>
<tr>
<td>
<div align="center">
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
Ik hoop dat je hier iets aan hebt
En wat werkt er nu niet?
Nou, ik wil nog een pagina. En daarop staat een code waarmee de informatie van een bepaalde film word weergegeven. (die vanuit mijn DB gelaad word)
waarschijnlijk dingen zoals:
-titel
-jaar
-afbeelding
het is denk ik het makkelijkst dat als je erop klikt dat je naar een pagina gaat en dan dmv een url variabelen waarin het id van de video uit je database en dan alle data eruit halen.
EDIT:
even voorbeeld code
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
<?php
###################
## Film.php #######
## door Rick6213 ##
###################
$id = ($_GET['id']);
?>
<!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>Film</title>
</head>
<body>
<?php
// Config.php
$host = "localhost"; // Je host
$user = "root"; // Je MySQL gebruikersnaam
$pass = "wachtwoord"; // Je MySQL wachtwoord
$datb = "films"; // Je MySQL database
// Verbinding maken
mysql_connect($host, $user, $pass) or die ("Er is een fout bij het connectie maken met de DataBase");
mysql_select_db($datb) or die ("Er is een fout bij het selecteren van de DataBase");
// Alles uit db halen laatste bericht als eerste.
$sql = mysql_query("SELECT
*,
FROM
films
WHERE id IN (".$id.")
DESC
");
// Als de query is gelukt
if($sql)
{
// Als er items zijn
if(mysql_num_rows($sql) > 0)
{
// Items neerzetten
while($rec = mysql_fetch_assoc($sql))
{
// Alles echoën
echo 'Titel: '.$rec['Titel']; //Titel
echo '<br>Jaar: '.$rec['jaar']; //Jaartal
echo '<br>beschrijving:'.$rec['beschrijving']; //beschrijving
}
}
// Anders
else
{
// film niet bestaat
echo 'Error 404, de door jouw gevraagde pagina bestaat niet';
}
}
// Anders
else
{
// MySql error
echo 'Er is een fout opgetreden in de query: <br />';
echo mysql_error();
}
?>
</body>
</html>
###################
## Film.php #######
## door Rick6213 ##
###################
$id = ($_GET['id']);
?>
<!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>Film</title>
</head>
<body>
<?php
// Config.php
$host = "localhost"; // Je host
$user = "root"; // Je MySQL gebruikersnaam
$pass = "wachtwoord"; // Je MySQL wachtwoord
$datb = "films"; // Je MySQL database
// Verbinding maken
mysql_connect($host, $user, $pass) or die ("Er is een fout bij het connectie maken met de DataBase");
mysql_select_db($datb) or die ("Er is een fout bij het selecteren van de DataBase");
// Alles uit db halen laatste bericht als eerste.
$sql = mysql_query("SELECT
*,
FROM
films
WHERE id IN (".$id.")
DESC
");
// Als de query is gelukt
if($sql)
{
// Als er items zijn
if(mysql_num_rows($sql) > 0)
{
// Items neerzetten
while($rec = mysql_fetch_assoc($sql))
{
// Alles echoën
echo 'Titel: '.$rec['Titel']; //Titel
echo '<br>Jaar: '.$rec['jaar']; //Jaartal
echo '<br>beschrijving:'.$rec['beschrijving']; //beschrijving
}
}
// Anders
else
{
// film niet bestaat
echo 'Error 404, de door jouw gevraagde pagina bestaat niet';
}
}
// Anders
else
{
// MySql error
echo 'Er is een fout opgetreden in de query: <br />';
echo mysql_error();
}
?>
</body>
</html>
ik ga hierbij uit dat je tabel in de database zo uit ziet:
Code (php)
1
2
3
4
5
2
3
4
5
id, Titel, Jaar, Beschrijving
-----------------------------
1, New Kids turbo, 2010, Een film over jongeren uit maaskantje
2, nog een film, het jaartal, beschrijving ervan
-----------------------------
-----------------------------
1, New Kids turbo, 2010, Een film over jongeren uit maaskantje
2, nog een film, het jaartal, beschrijving ervan
-----------------------------
De pagina roep je simpel aan als:
film.php?id=1
hierbij is 1 dan het video id dus is het id van je video 8 dan is het:
film.php?id=8
ik zou er nog wel even een functie in maken dat als er geen id is dat je dan een error pagina krijgt ipv een heleboel mysql errors
Succes
Gewijzigd op 07/03/2011 17:49:39 door Rick -
De link moet volgens mij naar de film.php
Bedankt voor verdere hulp, Ik kijk even verder en als er iets niet goed is laat ik het horen.
Gewijzigd op 08/03/2011 13:54:08 door Atmin Habib
wijzig ze dan!
(dat er staat: film.php?id=1)
Alvast bedankt
De PHP port van Lucene door Zend. Een echte zoekengine in php.
Een aanrader: ik heb nu geen zin om je hele script door te spitten testen en aanpassen
ik heb die code ook uit verveling geschreven vraag anders iemand het te doen voor geld
dat is een stuk makkelijker
EDIT:
volgens mij moet je:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
//get data
$title = $runrows['title'];
$url = $runrows['url'];
echo "<table width='300px'>
<h4><a href='$url'><b>$title</b></a><br />
<font color='757575'>$url</font></table></h4>
";
?>
//get data
$title = $runrows['title'];
$url = $runrows['url'];
echo "<table width='300px'>
<h4><a href='$url'><b>$title</b></a><br />
<font color='757575'>$url</font></table></h4>
";
?>
aanpassen naar
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?
//get data
$title = $runrows['title'];
//$url = $runrows['url'];
$filmid = $runrows['id']; //om het id ervan te verkrijgen
echo "<table width='300px'>
<h4><a href='film.php?id=".$filmid."'><b>$title</b></a><br /> //$url is vervangen door film.php?id=$filmid
<font color='757575'>$url</font></table></h4>
";
?>
//get data
$title = $runrows['title'];
//$url = $runrows['url'];
$filmid = $runrows['id']; //om het id ervan te verkrijgen
echo "<table width='300px'>
<h4><a href='film.php?id=".$filmid."'><b>$title</b></a><br /> //$url is vervangen door film.php?id=$filmid
<font color='757575'>$url</font></table></h4>
";
?>
Probeer dit eens en als je error krijgt post dan de aangepaste code
Gewijzigd op 10/03/2011 13:35:28 door Rick -