Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql]explode
sazian
post
Post #1





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


Witam,
potrzebuje uzyskać coś takiego ale po stronie sql'a
  1. list($o1,$o2,$o3,$o4)=explode('.',$ip);

ma to wyciągnąć kolejne oktety z adresu IP i zapisać je do zmiennych
macie jakieś pomysły jak to zrobić (IMG:style_emoticons/default/questionmark.gif) oczywiście niekoniecznie jedną instrukcją (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trafas
post
Post #2





Grupa: Zarejestrowani
Postów: 87
Pomógł: 12
Dołączył: 31.05.2006

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


Witam,

Można to ogarnąć jednym zapytaniem.

Poniższe zapytanie zczytuje miejsca kropek w podanym adresie:

  1. SELECT
  2. LOCATE('.',adresIP) AS 'Index pierwszej kropki',
  3. LOCATE('.',adresIP,LOCATE('.',adresIP)+1) AS 'Index drugiej kropki',
  4. LOCATE('.',adresIP,LOCATE('.',adresIP,LOCATE('.',adresIP)+1)+1) AS 'Index trzeciej kropki'
  5. FROM adresy -- lub po prostu ze zmiennej adresyIP



A teraz wyciągasz sobie odpowiednio:

1. LEFT - pierwsza część adresu - od początku podanego ciągu do wystąpienia pierwszej kropki minus 1 znak ( czyli kropka )

2. MID - druga część adresu
- od wystąpienia pierszej kropki plus 1 znak ( pierwsza kropka )
- czytasz zadaną ilość znaków, obliczaną na podstawie
# miejsce wystąpienia drugiej kropki minus miejsce wystąpienia pierwszej kropki minus 1 znak ( czyli druga kropka )

3. MID - trzecia część adresu
- od wystąpienia drugiej kropki plus 1 znak ( druga kropka )
- czytasz zadaną ilość znaków, obliczaną na podstawie
# miejsce wystąpienia trzeciej kropki minus miejsce wystąpienia drugiej kropki minus 1 znak ( czyli trzecia kropka )

4. RIGHT - czwarta część adresu
- czytasz z prawej strony zadaną ilość znaków obliczaną na podstawie
# długość całego adresu minus ilość znaków występująca do trzeciej kropki włącznie


Przykład:

  1. SELECT
  2.  
  3. LOCATE('.',adresIP) AS 'Index pierwszej kropki',
  4.  
  5. LEFT(adresIP,LOCATE('.',adresIP)-1) AS 'Pierwsza część adresu',
  6.  
  7. LOCATE('.',adresIP,LOCATE('.',adresIP)+1) AS 'Index drugiej kropki',
  8.  
  9. MID(
  10. adresIP,
  11. LOCATE('.',adresIP)+1,
  12. LOCATE('.',adresIP,LOCATE('.',adresIP)+1)-LOCATE('.',adresIP)-1
  13. ) AS 'Druga część adresu',
  14.  
  15. LOCATE('.',adresIP,LOCATE('.',adresIP,LOCATE('.',adresIP)+1)+1) AS 'Index trzeciej kropki',
  16.  
  17. MID(
  18. adresIP,
  19. LOCATE('.',adresIP,LOCATE('.',adresIP)+1)+1,
  20. LOCATE('.',adresIP,LOCATE('.',adresIP,LOCATE('.',adresIP)+1)+1)-LOCATE('.',adresIP,LOCATE('.',adresIP)+1)-1
  21. ) AS 'Trzecia część adresu',
  22.  
  23. RIGHT(adresIP,CHAR_LENGTH(adresIP)-(LOCATE('.',adresIP,LOCATE('.',adresIP,LOCATE('.',adresIP)+1)+1))) AS 'Czwarta część adresu'
  24.  
  25. FROM adresy -- lub po prostu ze zmiennej adresyIP


Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


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: 25.12.2025 - 15:16