Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt zapytania / nie rozróznia liter w wyszukiwaniu
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
gustafitka
Witam mam problem mam skrypcik który wyszukuje mi nazwiska z bazy danych tylko ze najgorsze jest to iż wpisując pierwsze litere mała przeszukuje mi wszystkie nazwiska z mala litera , a jak z duzą to tylko duze.

Czyli mi pomija male i duze litery ktore zapisane sa w bazie.

O to ten skrypt:

  1. <html>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  4. </head>
  5. <body>
  6. <form method="post" action="szukanie.php">
  7. <table>
  8. <tbody>
  9. <tr>
  10. <td> Nazwisko: <input name="nazwisko" value="" size="20" maxlength="20" type="text"> <br>
  11. </td>
  12. </tr>
  13. <tr>
  14. <td> <br>
  15. Nowe szukanie: <br>
  16. </td>
  17. </tr>
  18. <tr>
  19. <td> <input name="SUBMIT" value="Przeslij dane"
  20. type="submit">
  21. <p><br>
  22. <input value="Kasuj" dane="" type="reset">
  23. </p>
  24. </td>
  25. </tr>
  26. </tbody>
  27. </table>
  28. </form>
  29. <?php
  30. $NAZWISKO=$_POST['nazwisko'];
  31. if ( strlen($NAZWISKO)>): $NAZWISKO = addslashes($NAZWISKO);
  32. // poł&scaron;czenie z baz&scaron;
  33. $polaczenie = pg_Connect("dbname=magisterka user=postgres port=5432 password=gustaf host=localhost");
  34. if (!$polaczenie){ echo "Brak poł&scaron;czenia z baz&scaron;.<br>"; exit; }
  35. // szukanie w bazie
  36.  $wynik = pg_Exec($polaczenie, "SELECT * FROM pracownicy WHERE left(nazwisko,3) Like '$NAZWISKO%' ");
  37. if (pg_NumRows($wynik)==0) {
  38. //Je?li liczba wierszy jest zero 
  39. echo "Nie znaleziono odpowiadajacych rekordow w bazie.<br>"; 
  40. echo "<p><a href='szukaj.php3'>Ponowne wyszukiwanie</a>"; exit; }
  41. // wyświetlenie odnalezionych rekordów
  42. $liczba_rekordow = pg_NumRows($wynik); for ( $i=0; $i<$liczba_rekordow; $i++ ){ $imie = pg_Result($wynik, $i, "imie");
  43. // Zwróć uwagę na to, że $imie to zmienna PHP a imie to polew tabeli 
  44. $NAZWISKO = pg_Result($wynik, $i, "nazwisko"); $DATA_ur = pg_Result($wynik, $i,"data_ur");
  45. echo "imie nazwisko:$imie $NAZWISKO "; echo "Data urodzenia: $DATA_ur; <br> ";
  46. } 
  47. // koniec pętli for 
  48. // Ponowne wyszukiwanie: 
  49. echo "</p>
  50. <p><a href='szukanie.php'>Ponowne wyszukiwanie</a>";
  51. exit; endif;
  52. ?>
  53. </p>
  54. </body>
  55. </html>


pozdrawiam
batman
W postgresie wyszukiwanie "case insensitive" uzyskujesz poprzez ilike. Pamiętaj jednak, że czasem pg ma to do siebie, że nie bierze pod uwagę polskich znaków, więc "ż" będzie czymś innym niż "Ż".

Innym sposobem jest użycie funkcji lower:
  1. SELECT * FROM tabela WHERE lower(pole) LIKE '%jakis_tekst%'

z tym, że "jakis_tekst" też musi być zapisany małymi literami. Podobnie jak w pierwszym przypadku, mogą wystąpić problemy z polskimi znakami.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.