Wyszukiwarka php przy użyciu MySql


(Krzys14) #1

Witam serdecznie i z góry przepraszam za błędy które mogę popełnić przypadkiem.

Sprawa jest następująca, posiadam wyszukiwarkę PHP która przeszukuje mi bazę danych MySql i chciał bym by po wpisaniu słowa którego nie ma w bazie dancych w danej tabeli wyskoczył napis "Nie znaleziono żadnych wyników dla $wyszukiwarka (zamiast $wyszukiwarka będzie słowo które wpisaliśmy)".

Jestem jeszcze zielony w tych sprawach więc zwracam się z zapytaniem do was drodzy użytkownicy.

kod PHP wygląda następująco.

<?php

$bl=false;

if(isset($_POST['wyszukiwarka']) && $_POST['wyszukiwarka']!='tabele'){

$wyszukiwarka = $_POST['wyszukiwarka'];

$tabele = $_POST['tabele'];


   $location = "localhost"; // database host (localhost)

   $username = "root"; // mysql username

   $password = "haslo"; //mysql password

   $database = "baza"; //mysql database name


   $conn = mysql_connect("$location","$username","$password");

   if (!$conn) die ("Could not connect MySQL");

   mysql_select_db($database) or die ("Could not open database");

mysql_query("SET NAMES 'utf8'");


  if ($tabele == 'gry'){

   $query = "SELECT zdjecie, title, opis FROM gry WHERE opis like '%".$wyszukiwarka."%' OR title like '%".$wyszukiwarka."%' order by id ASC";

  }

  elseif ($tabele == 'trainery'){

$query = "SELECT zdjecie, title, opis FROM trainery WHERE opis like '%".$wyszukiwarka."%' OR title like '%".$wyszukiwarka."%' order by id ASC";

}

  elseif ($tabele == 'kody'){

$query = "SELECT zdjecie, title, opis FROM kody WHERE opis like '%".$wyszukiwarka."%' OR title like '%".$wyszukiwarka."%' order by id ASC";

}

  elseif ($tabele == 'patche'){

$query = "SELECT zdjecie, title, opis FROM patche WHERE opis like '%".$wyszukiwarka."%' OR title like '%".$wyszukiwarka."%' order by id ASC";

}

  elseif ($tabele == 'tapety'){

$query = "SELECT zdjecie, title, opis FROM tapety WHERE opis like '%".$wyszukiwarka."%' OR title like '%".$wyszukiwarka."%' order by id ASC";

}

  elseif ($tabele == 'wszystko'){

$query = "SELECT zdjecie, title, opis FROM gry, trainery, kody, patche, tapety WHERE opis like '%".$wyszukiwarka."%' OR title like '%".$wyszukiwarka."%' order by id ASC";

}


$wynik = mysql_query($query);


  if ($wynik && mysql_num_rows($wynik)) {

$liczba_rekordow = mysql_num_rows($wynik);

  $policz_rekordy = 1;{

   while ($rekord = mysql_fetch_assoc($wynik)) {


    echo '

'; foreach($rekord as $zmienna => $wartosc) { echo iconv('UTF-8', 'ISO-8859-2',$wartosc); } echo "
";} } } } ?>[/code]

czy może mi ktoś powiedzieć w którym miejscu mam to wpisać ?? i jak to wpisać by spełniło moje oczekiwania ?? Z góry dziękuję.


(CZiPEN) #2

Zamiast

$policz_rekordy = 1;{

   while ($rekord = mysql_fetch_assoc($wynik)) {


    echo '

'; foreach($rekord as $zmienna => $wartosc) { echo iconv('UTF-8', 'ISO-8859-2',$wartosc); } echo "
";} }[/code] możesz użyć czegoś takiego (przy założeniu, że to co podałeś w ogóle działa):
[code] if($liczba_rekordow == null) { echo 'Nie znaleziono żadnych wyników dla '.$wyszukiwarka; } else { $policz_rekordy = 1; while ($rekord = mysql_fetch_assoc($wynik)) { echo '
'; foreach($rekord as $zmienna => $wartosc) { echo iconv('UTF-8', 'ISO-8859-2',$wartosc); } echo "
"; } }

Mam nadzieję, że nie pomyliłem się w klamerkach.

Dodatkowo zamiast if...elseif możesz użyć instrukcji switch i wystosować jedno zapytanie, zapewni to lepszą przejrzystość kodu


(Krzys14) #3

Moja wyszukiwarka działa w 99%. Dlaczego 99% ?? dlatego, że po wpisaniu słowa którego nie ma w bazie nie wyświetla się nic :frowning: a to jednak jest troszke denerwójące dla osób odwiedzających taką stronę ponieważ po wpisaniu słowa nie wiedzą czy tego nie ma czy poprostu nie działa wyszukiwarka :(.

Niestety ten kod który podałeś nie działa :frowning: klamry są dobrze nie pomyliłeś się bo nie wywala mi błędu żadnego no ale nic się nadal nie wyświetla :frowning: