Hieronder heb ik een een resultaat script van mijn zoekfunctie op mijn website, echter wanneer iemand bijv. 2 woorden in toetst zoals: Britney spellen. Dan geeft hij weer dat er niets is gevonden, nu wil ik graag als ze dit doen dat er een gehele like is, dus hij laat alle titels met spellen zien (als die er zijn anders blank) en alle spellen met het woord dat zie zoeken in dit geval Britney. Duidelijkheid: Combinatie woorden moeten mogelijk zijn en hij moet dan zoeken op beide combinatie woorden. Iemand een idee?
PHP Code:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{ ?>
<?php
if(isset($_POST['zoekspel'])){
if(preg_match("/^[ a-zA-Z]+/", $_POST['name'])){
$name=$_POST['name'];
$name = strtoupper($name);
$name = strip_tags($name);
$select =("SELECT * FROM game_games WHERE name LIKE '%".$name."%'"); // Selecteren uit een tabel
$query = mysql_query($select);
$aantal = mysql_num_rows($query);
if ( $aantal == "0" )
{
echo "
<font size='2' color='#041B5B'>Voor dit zoekwoord zijn geen spellen gevonden</font></td>
";
}
else
{
//-create while loop and loop through result set
while($list = mysql_fetch_object($query)){
if ( $screen == "Aan" )
{
if ( $list->screenshot == "" )
{
echo "
<li class=\"none\"><a href='out.php?f=1&pct=70&url=http://www.speelcity.nl/spel/".$spel.".html' target='_blank' ONMOUSEOVER=\"popup('<img width=150 height=150 src=screenshot/noscreen.jpg>','0')\"; ONMOUSEOUT=\"stopthumb()\"> $list->name</a><br>";
}
else
{
echo "<li class=\"none\"><a href='out.php?f=1&pct=70&url=http://www.speelcity.nl/spel/".$spel.".html' target='_blank' ONMOUSEOVER=\"popup('<img width=150 height=150 src=screenshot/$list->screenshot>','0')\"; ONMOUSEOUT=\"stopthumb()\"> $list->name</a>
";
}
}
else
{
echo "<li class=\"none\"><a href='out.php?f=1&pct=70&url=http://www.speelcity.nl/spel/".$spel.".html' target='_blank' ONMOUSEOVER=\"popup('<img width=150 height=150 src=screenshot/$list->screenshot>','0')\"; ONMOUSEOUT=\"stopthumb()\"> $list->name</a>
";
}
}
}
}
}
?>
<?php
}
?>
- Probleem zoekscript PHP
-
16-02-2013, 16:12 #1
- Berichten
- 17
- Lid sinds
- 12 Jaar
Probleem zoekscript PHP
-
-
16-02-2013, 19:37 #2
- Berichten
- 504
- Lid sinds
- 16 Jaar
Re: Probleem zoekscript PHP
$names = explode(" ", $name);
en dan op de plek waar nu $naam staat: implode("% OR LIKE %");
Het is iets dergelijks je moet zelf even precies testen wat er nu uitkomt e.d.
Aanvullend bericht:
Ik bedoel natuurlijk implodeer('% LIKE %',$names);Laatst aangepast door rogier fischer : 16-02-2013 om 20:06 Reden: Automatisch samengevoegd.
-
16-02-2013, 20:42 #3
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: Probleem zoekscript PHP
of $name = preg_replace ('/ /', '%', $name); voor de query zetten.
(igv meedere spaties tussen de woorden kun je nog: $name = preg_replace ('/\s+/', '%', $name); gebruiken)
-
18-02-2013, 16:00 #4
- Berichten
- 158
- Lid sinds
- 14 Jaar
Re: Probleem zoekscript PHP
Code:$expl = explode($_POST['zoekspel']); $query = ''; foreach($expl as $key => $value){ if($key = 0){ $query = $query.' name LIKE '%".$value."%' '; }else{ $query = $query.' OR name LIKE '%".$value."%' '; } } $finalquery = mysql_query("SELECT * FROM game_games WHERE ".$query."");
-
18-02-2013, 18:34 #5
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: Probleem zoekscript PHP
Code:$expl = explode($_POST['zoekspel']); $query = ''; foreach($expl as $key => $value){ if($key = 0){ $query = $query.' name LIKE '%".$value."%' '; }else{ $query = $query.' OR name LIKE '%".$value."%' '; } } $finalquery = mysql_query("SELECT * FROM game_games WHERE ".$query."");
-
19-02-2013, 09:49 #6
- Berichten
- 17
- Lid sinds
- 12 Jaar
Re: Probleem zoekscript PHP
Bovenstaande werkt beide niet van de eerste twee posts,
Wanneer ik op bijv. "britney spel" zoek krijg ik een leeg resultaat maar typ ik alleen "britney" in dan krijg ik wel alle spellen met britney.
-
19-02-2013, 09:58 #7
- Berichten
- 153
- Lid sinds
- 14 Jaar
Re: Probleem zoekscript PHP
Volledig ongetest, dus vast vol spelfouten enzo. Maar zou m.i. genoeg handvatten moeten geven:
PHP Code:$query = " wat je al had " . "WHERE (";
$parts = explode($searchwords, " ");
$queryParts = array();
foreach ($parts as $part) {
$queryParts[] = "`seachColumn` LIKE '%$part%'"
)
if ($count($queryParts) > 0) {
$query.= implode(" OR ", $queryParts);
} else {
// Geen query gegeven, doe oplossen
}
$query .= ")";
Hele grote maar: Denk er aan dat je je escaping ook even goed fixt!Laatst aangepast door Henry Been : 19-02-2013 om 10:03
-
19-02-2013, 10:32 #8
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: Probleem zoekscript PHP
Idd, als je de woorden niet in een bepaalde volgorde in je data hebt staan dan werkt die preg_replace() alleen niet en zul je het op Henry zijn manier moeten doen.
Het enige nadeel is dat je met een relatief trage 'OR' blijft zitten, maar dat merk je pas als er veel gezocht wordt en/of je redelijk veel records hebt.
-
19-02-2013, 11:53 #9
- Berichten
- 153
- Lid sinds
- 14 Jaar
Re: Probleem zoekscript PHP
Agreed, het is relatief traag. Maar dat is inherent aan het doen van fulltext achtige queries op een db die daar niet voor gemaakt is. Als het echt een issue wordt, zou je iets met indexing (evt in een MyISAM tabel of losstaand met b.v. Lucene) moeten gaan doen. Maar dat is -gok ik- voorlopig overkill. ;)
Idd, als je de woorden niet in een bepaalde volgorde in je data hebt staan dan werkt die preg_replace() alleen niet en zul je het op Henry zijn manier moeten doen.
Het enige nadeel is dat je met een relatief trage 'OR' blijft zitten, maar dat merk je pas als er veel gezocht wordt en/of je redelijk veel records hebt.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic