Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] stronicowanie inaczej...
AcidBurnt
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


witam!

na wstepie zaznaczam ze przeszukajem forum pod haslem: stronicowanie ale nie znalazlem odpowiedzi na moje question...

potrzebuje zrobic sorticowanie textu wybrenego z mysql'a, tylko ze nie tak ze wybiera sie przez LIMIT tylko z mysql wybieramy 1 pole z tekstem, i w nim sa powiedzmy znaczniki <!page> i on stronicuje poprzez ten znaczinki, jak w tekscie beda powiedzmy 3 takie znaczniki to zrobie 3 strony...

[php:1:2e0c9c7eef]<?php
tekst tekst tekst tekst tekst tekst
<!page>
test1 test1 test1 test1 test1 test1
<!page>
tekst2tekst2tekst2tekst2tekst2tekst2
?>[/php:1:2e0c9c7eef]

i powiedzmyze bedzie w bazie taki tekst to na 1 stronie bedzie:

tekst tekst tekst tekst tekst tekst

na 2-iej

test1 test1 test1 test1 test1 test1

a na trzeciej:

tekst2tekst2tekst2tekst2tekst2tekst2...

pozdro
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
menic
post
Post #2





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Mozesz np. pobierać text od <!page> do <!page> poprzez same mysql


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
AcidBurnt
post
Post #3





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


menic mozesz mi podac przykład takiego zapytania?

nie znam niestety mySQL dobrze, narazie podstawy SELECT DELETE i UPDATE... w podstawowych sprawach... no umiem jeszcze jako tako laczyc zapytania do 2 i wiecej tabel smile.gif
Go to the top of the page
+Quote Post
radziel
post
Post #4





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 25.04.2003
Skąd: Olsztyn

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


A przypadkiem nie najprościej :
[php:1:8b0eadb3ea]<?php
$pages= explode('<!page>',$zmienna_z_artem);
?>[/php:1:8b0eadb3ea]
i potem
[php:1:8b0eadb3ea]<?php
echo $pages[0]; // pierwsza strona
echo $pages[1]; // druga strona
echo $pages[2]; // trzecia strona

?>[/php:1:8b0eadb3ea]


--------------------
r.
Go to the top of the page
+Quote Post
menic
post
Post #5





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


@radziel: To jest bez sensu. Nie po to pracuje sie na SQLu, zeby używać tak prymitywnych sposobów jakie stosuje sie w przypadku płaskich baz danych. A co do twojego problemu. dokladnie tez nie wiem jak to powinno wyglądać, bo jeszcze nie zdązyłem tego użyć, ale zainteresuj sie funkcjami http://www.mysql.com/doc/en/String_functions.html winksmiley.jpg


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
spenalzo
post
Post #6





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Hmm może tak?
[sql:1:2ac4256812]SELECT REPLACE(SUBSTRING_INDEX(pole_z_trescia,'<!page>','".$numer_strony."'), SUBSTRING_INDEX(pole_z_trescia,'<!page>','".($numer_strony-1)."'),'') AS tresc FROM tabela WHERE costam='costam' [/sql:1:2ac4256812]
gdzie $numer_strony musi zaczynać się od 1.

Oczywiście zamień pole_z_trescia na nazwe swojego pola, gdzie przechopwujesz tą treść. W wyniku dostaniesz treść wybranej strony - potem usuń z niej znacznik <!page> bo chyba zostanie w treści (o ile sie nie myle).


--------------------

Go to the top of the page
+Quote Post
AcidBurnt
post
Post #7





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


Cytat
@radziel: To jest bez sensu. Nie po to pracuje sie na SQLu, zeby używać tak prymitywnych sposobów jakie stosuje sie w przypadku płaskich baz danych. A co do twojego problemu. dokladnie tez nie wiem jak to powinno wyglądać, bo jeszcze nie zdązyłem tego użyć, ale zainteresuj sie funkcjami http://www.mysql.com/doc/en/String_functions.html winksmiley.jpg



a nie wiesz gdzie to znajde po polsku?

bo angol u mnie tak sredniq
Go to the top of the page
+Quote Post
spenalzo
post
Post #8





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


A to co podałem nie działa?

Link do manuala MySQL (częsciowo) po polsku znajdziesz na dole tej strony.


--------------------

Go to the top of the page
+Quote Post
AcidBurnt
post
Post #9





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


Cytat
A to co podałem nie działa?

Link do manuala MySQL (częsciowo) po polsku znajdziesz na dole tej strony.


nie wiem cyz nie dziala jeszcze nie mialem okazi sprawdzic, ale ogolnie to nie lubie korzystac z czego czego za bardzo nie rozumiem... dla tego chcialbym wiedzec z czym to sie je...
Go to the top of the page
+Quote Post
spenalzo
post
Post #10





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


OK, więc po kolei:

[sql:1:14a009f283]SUBSTRING_INDEX(pole_z_trescia,'<!page>','".$numer_strony."')[/sql:1:14a009f283]
Zwróci ciąg od początku do kolejnego wystąpienia ciągu '<!page>' określonego przez $numer_strony - dlatego $numer_strony musi być większy lub równy 1. Niestety jeżeli liczba ta będzie większa od 1 (np. 5) to funkcja zwróci wszystko do piątego wystąpienia ciągu '<!page>'. Ponieważ nam chodzi jedynie o to co się znajduje pomiędzy 4 a 5 znacznikiem musimy użyć poniższej funckji:

[sql:1:14a009f283]SUBSTRING_INDEX(pole_z_trescia,'<!page>','".($numer_strony-1)."')[/sql:1:14a009f283]
Zwróci ciąg od początku tekstu do jego n-1 wystąpienia w tekście - gdzie n to numer aktualnej strony. Jeżeli numer strony jest równy 1, to ta funkcja nic nie zwróci.

Wrzucamy to wszystko do REPLACE(...) i usuwamy z pierwszego ciągu niepotrzebne nam strony poprzez drugą funkcję SUBSTRING_INDEX i otrzzymujemy tylko żądaną stronę.

Może teraz coś Ci się rozjaśni:
[sql:1:14a009f283]SELECT @biezaca_strona:=SUBSTRING_INDEX(pole_z_trescia,'<!page>','".$numer_strony."'), @poprzednia_strona:=SUBSTRING_INDEX(pole_z_trescia,'<!page>','".($numer_strony-1)."'),
REPLACE(@biezaca_strona,@poprzednia_strona,'') AS tresc FROM tabela WHERE costam='costam' [/sql:1:14a009f283]
smile.gif


--------------------

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 Aktualny czas: 19.08.2025 - 19:46