Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt zapytania / nie rozróznia liter w wyszukiwaniu
gustafitka
post 18.12.2007, 12:38:31
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 7.11.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
batman
post 18.12.2007, 20:12:18
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 10:05