Resutaten uit database via zoekfunctie weergeven op andere pagina
Ik heb een internetsite met mysql database.
Op de site wordt via index.php per onderdeel de nodige php pagina met inhoud opgeroepen.
In éen onderdeel heb ik een pagina die wordt opgeroepen met een linker div en een rechter div.
Ik probeer nu in de linker div een zoekfunctie in te bouwen met de onderdelen Plaats, Postcode, en Zoekwoord met de bedoeling dat op 1 van de zoekonderdelen de resultaten vanuit mijn database in de rechter div worden weergegeven.
Ik dacht eraan om de linker div een pagina genaamd search.php met daarin de zoekfunctie op te laten roepen en de rechter div een pagina genaamd results.php. Zodat de resultaten vanuit search.php worden weergeven in results.php.
Ik ben al aan het stunten geweest maar ik krijg het niet voor elkaar. Kan iemand mij helpen en uitleggen hoe ik dit het beste aan kan pakken.
Bij voorbaat dank.
Mogen we je index.php eens zien?
Google eens op dordogne renovatie en mijn site staat boven aan...
Vervolgens klik je in het midden van de pagina onder de titel Propriétés à Rénover op cliquez ici. Je komt dan op de pagina in kwestie met de linker en de rechter div
Alvast bedank voor de moeite Raoul.
Ik doelde eigenlijk meer op de code van het bestand.
Deze pagina maakt de linker en de rechter div aan. Met in de linker div de weergave van de volledige inhoud van de data base. In de rechter div roep ik de zoekfunctie op. Met deze zoekfunctie wil ik dus de resultaten in de linker div kunnen filteren op - Plaats, Postcode of Zoekwoord.
Code:
<div class="content" style="position:relative; float:left; width:960px; height:auto; margin:0px auto 45px auto;">
<div style="width:auto; height:45px; position:relative; float:right; right:100px; top:-45px; padding-left:20px; padding-right:20px; background-color:#d2c8aa; border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF; border-right:1px solid #FFFFFF;">
<div class="headimg" style="border-right:solid 1px #ff9b00; height:50px; width:60px;">
<img src="./img/immoimg/pictorenov.png" alt="Maisons et Propriétés à Rénover" width="50px" height="50px;" title="Maisons et Propriétés à Rénover en Dordogne" />
</div>
<div class="headtext"><center><h1 style="color:#333333; padding-top:8px;">Propriétés à Rénover</h1></center>
</div>
</div>
<br class="clearfloat" />
<div class="immoobjecten" style="width:550px; margin:-35px auto 20px auto; float:left; left:0px;">
<table cellspacing="5" style="margin:auto 0 auto 0">
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
$query = mysql_query("SELECT * FROM immobilier WHERE renovation='oui'");
while ($result = (mysql_fetch_array($query))){
$result["date"] = date("d-m-Y", strtotime($result["date"]));
$result["title"]= substr($result["title"],0,150);
$result["text"]= substr($result["text"],0,250);
$result["text"] = str_replace("``", "\"",$result["text"]);
$result["text"] = strip_tags($result["text"]); ?>
$query = mysql_query("SELECT * FROM immobilier WHERE renovation='oui'");
while ($result = (mysql_fetch_array($query))){
$result["date"] = date("d-m-Y", strtotime($result["date"]));
$result["title"]= substr($result["title"],0,150);
$result["text"]= substr($result["text"],0,250);
$result["text"] = str_replace("``", "\"",$result["text"]);
$result["text"] = strip_tags($result["text"]); ?>
<tr>
<td>
<table width="100%" style="border:1px dashed #999999;">
<tr bgcolor="#f0ead7">
<td width="auto" rowspan="3" valign="top">
<img width="150" src="http://www.immocentre-dordogne.com/immobilier//" />
</td>
<td height="20" style="color:#FFFFFF; padding-left:5px; background:#92875F;">
<center><h2></h2></center>
</td>
</tr>
<tr>
<td class="text" align="left" valign="top" bgcolor="#d2c8aa" style="padding-left:5px;">
<span class="text">...
<a style="color:#ff9b00" href='index.php?page=immodetails&id='>Details</a></span>
</td>
</tr>
<tr>
<td height="10" style="color:#333333; padding-right:5px; background:#92875F; text-align:right;">
Prix: Euros
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="immoobjecten" style="width:400px; margin:-35px auto 20px auto; float:left; left:20px;">
</div>
**************
CODE SEARCH-IMMO.PHP
<div style="width:350px; height:250px; border:1px #FFFFFF solid; margin:20px auto 10px auto; position:relative; float:left;">
<h2>Search</h2>
<form name="search" method="post" action="">
Seach for: <input type="text" name="find" /> in
<Select NAME="field">
<Option VALUE="ville">Plaats</option>
<Option VALUE="cp">Postcode</option>
<Option VALUE="text">Zoekwoord</option>
</Select>
<input type="hidden" name="searching" value="yes" />
<input type="submit" name="search" value="Search" />
</form>
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
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
<?
//This is only displayed if they have submitted the form
if ($searching =="yes")
{
echo "<h2>Resultaten</h2><p>";
//If they did not enter a search term we give them an error
if ($find == "")
{
echo "<p>U moet een zoekterm invullen !";
exit;
}
// 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 immobilier WHERE upper($field) LIKE'%$find%'");
//And we display the results
while($result = mysql_fetch_array( $data ))
{
echo $result['ville'];
echo " ";
echo $result['cp'];
echo "<br>";
echo $result['text'];
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, wij hebben geen resultaten kunnen vinden.<br><br>";
}
//And we remind them what they searched for
echo "<b>U heeft gezocht op :</b> " .$find;
}
?>
//This is only displayed if they have submitted the form
if ($searching =="yes")
{
echo "<h2>Resultaten</h2><p>";
//If they did not enter a search term we give them an error
if ($find == "")
{
echo "<p>U moet een zoekterm invullen !";
exit;
}
// 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 immobilier WHERE upper($field) LIKE'%$find%'");
//And we display the results
while($result = mysql_fetch_array( $data ))
{
echo $result['ville'];
echo " ";
echo $result['cp'];
echo "<br>";
echo $result['text'];
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, wij hebben geen resultaten kunnen vinden.<br><br>";
}
//And we remind them what they searched for
echo "<b>U heeft gezocht op :</b> " .$find;
}
?>
</div>
Toevoeging op 03/02/2013 15:07:10:
Ik moet dus een manier vinden om de Id's uit de table "immobilier" van mijn mysql database weer te geven in de linker div geselecteerd op de resultaten uit de array $data welke wordt gegenereerd door de zoekfunctie. Maar hoe doe ik dat???
Gewijzigd op 03/02/2013 17:52:43 door Machiel K
Ik heb gelukkig mijn probleem kunnnen oplossen. Zoals (bijna) altijd leek het veel simpeler dan ik had gedacht.
De oplossing zit zo.
Ik heb 1 hoofdpagina head.php die roept in een linker div de resultaten op via include results.php en in een rechter div de zoekfunctie via include search.php.
De pagina search.php ziet er als volgt uit:
<form action="index.php?page=head.php" method="post">
Zoeken <input type="text" name="term" />
<input type="submit" name="submit" value="Verzenden" />
</form>
Wat ik niet wist is dat je met de command action="" aangeeft dat je de zoekterm als een variable met de naam "term" naar de pagina index.php?page=head.php stuurt. En omdat ik met de pagina head.php de pagina results.php oproep kan ik in results.php alle resultaten uit de table "nametable" van de database oproepen door de variable $term te gebruiken.
In plaats van de variable $term, gebruik ik %$term%, door de variable te omsluiten met de procenttekens wordt de zoekopdracht niet per woord maar per letter behandeld en mocht er gezocht worden op de term BOB, dan worden alle resultaten met de term BOBBY en BOBSLEE ook weergegeven.
Als de zoekterm niet in mijn database aanwezig is wordt de pagina error.php via include opgeroepen en weergeven. Op deze pagina staat een simpele tekst zoals <p>Er zijn geen resultaten gevonden !</p>
In dit voorbeeld noem ik de table uit mijn database "nametable" met daarin de velden id, title, text, en price.
Mijn results.php ziet er als volgt uit:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
$query = mysql_query("SELECT * FROM nametable WHERE (title like '%$term%' OR text like '%$term%')");
if (mysql_num_rows($query) <= 0) {
// no results
echo include 'error.php' ;
} else
while ($result = (mysql_fetch_array($query)))
?>
$query = mysql_query("SELECT * FROM nametable WHERE (title like '%$term%' OR text like '%$term%')");
if (mysql_num_rows($query) <= 0) {
// no results
echo include 'error.php' ;
} else
while ($result = (mysql_fetch_array($query)))
?>
<table>
<tr>
<td rowspan="3">
<img width="150" src="images//" />
</td>
<td>
<h2></h2>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
Prijs: Euros
</td>
</tr>
</table>