OK, lassen Sie mich so spezifisch wie möglich sein .... Ich möchte die Art ändern, wie sich meine Suchleiste verhält. Im Moment muss die Zeichenfolge genau mit der MySQL-Anfrage übereinstimmen !!! oder es zeigt meine Produkte nicht an. HierPHP Split Suchleiste Stichwörter nach Leerzeichen
ist, was ich habe: Eine Suche nach "Fall iphone"
searchitems.php?tosearch=case+iphone&Search=Search
nun eine Suche nach "iphone Fall"
searchitems.php?tosearch=iphone+case&Search=Search
Jetzt basierend darauf, wie die Abfrage funktionieren würde ... wenn ich Geben Sie die URL manuell dies ... es funktioniert, wie ich will es:
searchitems.php?tosearch=%iphone%&%case%&Search=Search
Wie gehe ich über die URL aus
Ändernsearchitems.php?tosearch=case+iphone&Search=Search
zu
searchitems.php?tosearch=%iphone%&%case%&Search=Search
Hier ist der Code, den ich bisher habe:
Suchformular In index.php
<form method="GET" action="searchitems.php">
<input size="50" type="text" name="tosearch" value="Search" name="keyword" id="keyword" title="keyword" onfocus="clearText(this)" onblur="clearText(this)" class="txt_field">
<input type="submit" name="Search" value="Search" alt="Search" id="searchbutton" title="Search" class="sub_btn">
</form>
searchitems.php (Sorry, wenn es richtig einfach kopiert und eingefügt nicht Tabbed ist)
<?php
include('core/header2.php');
include ('core/connectdb.php');
if(isset($_GET['tosearch'])) {
$tosearch=$_GET['tosearch'];
$tosearch=urldecode($tosearch);
$tosearch = preg_replace('!\s+!', ' ', trim($tosearch));
$search_terms = explode(' ',$tosearch);
$search_terms[] = $tosearch;
$search_terms=array_unique($search_terms);
$query = "select * from products where ";
$query_fields = Array();
$sql = "SHOW COLUMNS FROM products";
$columnlist = $connect->query($sql);
while($arr = $columnlist->fetch_assoc()){
extract($arr);
$query_fields[] = $Field . " LIKE ('%". $tosearch . "%')";
}
$query .= implode(" OR ", $query_fields);
$results = mysqli_query($connect, $query) or die(mysql_error());
$rows = $results->num_rows;
if ($rows > 0) {
$cols = 5;
$counter = 1;
$nbsp = $cols - ($rows % $cols);
echo '<div id="content" class="float_r">';
echo "<table border=\"0\">";
while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
if(($counter % $cols) == 1) { // Check if it's new row
echo '<tr align="center">';
}
extract($row);
echo '<td valign="top" style="padding-right:15px;">';
echo "<a href=itemdetails.php?itemcode=$item_code>";
echo '<img src=' . $imagename . ' style="max-width:120px;max-height:140px;
width:auto;height:auto;"></img><br/>';
echo $item_name .'<br/>';
echo "</a>";
echo '<div class="product_price">$'. $price .'</div>';
echo "<form method=\"POST\" action=\"cart.php?action=add&icode=$item_code&iname=$item_name&iprice=$price&ilocation=$location\">";
echo "<input type=\"submit\" name=\"addtocart\" value=\"Add To Cart\"></form>";
echo "</td>";
if(($counter % $cols) == 0){
echo "</tr>";
}
$counter++;
}
if($nbsp > 0) { // Add unused column in last row
for ($i = 0; $i < $nbsp; $i++) {
echo '<td> </td>';
}
echo '</tr>';
}
}
}
echo '</table></div><div class="cleaner"></div>';
include('core/footer.php');
?>
Das Zeichen + ist einfach, weil die Variable $ tosearch bereits Leerzeichen in ihnen hat urldecode(); nimmt nur irgendwelche + Zeichen heraus ... das löst mein Problem nicht, wie man die Leerzeichen ersetzt und dieses in meine URL% item% &% name% einträgt. –
Warum brauchen Sie das Zeichen '%' im Suchbegriff? Ich habe einen Text erstellt und Beispielcode für Sie ausgeführt. Guck mal. https://gist.github.com/mszb/d2b6fd566ed5e390e98bf419bcd944ec - http://main.xfiddle.com/code_33641226.php?s=iphone+case –
Ich habe meinen Suchcode aktualisiert, um mit dem zu funktionieren, was Sie angegeben haben ... leider gibt es mir immer noch die gleichen Ergebnisse, wenn ich nach "case iphone" suche, bekomme ich das eine Ergebnis, aber "iphone case" keine Ergebnisse. Ich brauche meine Suche, um beide Schlüsselwörter zu trennen, so dass es nach irgendeinem Ergebnis mit "Fall" und irgendeinem Ergebnis mit "iphone" sucht. Das% iphone% &% case% in die URL zu setzen funktioniert so, wie ich es möchte. –