Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Znaki globalne w stringu
butek
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.05.2008

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


Jest zmienna $a która przechowuje pewien string. String ten został dostarczony przez formularz. Jak zrobić aby ten string był początkiem jakiegoś innego. Tzn. przychodzi gość i szuka nazwisk w bazie i zna tylko początkowe jakieś znaki, wpisuje np. pierwszą literę i dostaje wszystkie wyraz zaczynające się na daną literę.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
sajegib
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

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


SQL

  1. LIKE


Go to the top of the page
+Quote Post
Tajgeer
post
Post #3





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


Przy zapytaniach do bazy danych możesz skorzystać np. z operatora LIKE.
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Tak jak moi przedmówcy pisali jeśli chodzi o bazę danych wystarczy użyć LIKE:

  1. SELECT * FROM uzytkownicy WHERE nazwisko LIKE '%{$a}%'


Ważne są znaki % przed i po ciągu. Oznaczają one, że przed i za ciągiem mogą istnieć jeszcze inne znaki. Ze względu na wydajność jednak najlepszym rozwiązaniem jest tutaj pominięcie pierwszego znaku % - czyli szukanie nazwisk zaczynających się od $a. Dzięki temu możemy wykorzystać indeks. Ważne jest aby pole po którym szukasz miało ustawiony index w strukturze tabeli.

  1. -- wydajniej:
  2. SELECT * FROM uzytkownicy WHERE nazwisko LIKE '{$a}%'



Dodatkowo jeśli chcesz osiągnąć to samo w PHP i masz jakiś ciąg to wystarczy użyć stripos:

  1. if(stripos($ciag,$a) === 0) {
  2. echo 'jest!';
  3. }


ten zapis, bez rozróznienia wielkości znaków sprawdzi czy dany ciąg zaczyna się od $a
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 16.09.2025 - 10:33