Ich mache erweiterte Suche basierend auf Titel und hier ist mein Code. Zuerst suche ich nach dem ganzen Titel. Wenn eines der Bücher nicht gefunden wird, suche ich basierend auf jedem im Titel vorhandenen Wort.Doppelte Ergebnisse bei der Suche mit explodieren in der erweiterten Suche
Das Problem besteht darin, wenn zwei oder mehr Wörter Titel im zweiten Fall übereinstimmen, dann druckt es doppelte Bücher.
$qry="select * from books where quantity>0 ";
if(isset($title)&&isset($submit1))
$qry.=" and title like '%".$title."%' ";
$books=mysqli_query($con,$qry);
$numrows=mysqli_num_rows($books);
if($numrows>0){
while($row=mysqli_fetch_assoc($books)){
//print books
}
}
else if(isset($submit1)&&isset($title)){
$words=explode(" ",$title);
$notfound=true;
foreach($words as $value){
$qry="select * from books where quantity>0 ";
$qry.=" and title like '%".$value."%' ";
$books=mysqli_query($con,$qry);
$numrows=mysqli_num_rows($books);
if($numrows>0){
while($row=mysqli_fetch_assoc($books)){
// print based on each word
}}
Gibt es einen bestimmten Grund, warum Sie eine separate Abfrage für den Titel zu tun und jedes Wort statt 'or' zu verwenden? –
Wenn der Titel gefunden wird, muss nicht jedes Wort überprüft werden. also habe ich das getan – user6181297
In Ordnung, aber warum nicht 'oder' in der Abfrage basierend auf Wörtern verwenden? Du würdest keine Duplikate bekommen. –