![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 0 Dołączył: 13.01.2003 Skąd: 3rd ball of mud behind a big ball of burning gas Ostrzeżenie: (0%) ![]() ![]() |
Pisze unierwersalna klase do wyswietlania ostatnich topikow z phpBB
![]() I sklecilem takie zapytanie: [sql:1:3ff0dca573]SELECT topic_id, topic_last_post_id, LEFT( topic_title, IF ( LENGTH( topic_title ) < 25, LENGTH( topic_title ) , LOCATE( ' ', topic_title, 25 ) ) ) AS topic_title FROM forum_topics ORDER BY topic_time DESC LIMIT 15 [/sql:1:3ff0dca573] Teraz pojawia sie problem przy wyswietlaniu rekordow gdzie w topic_title znajduja sie znaki typu +, ! etc. czyli te ktore sa wykorzystywane w zapytaniach. W przypadku prostego zapytania bez kawalka [sql:1:3ff0dca573]LEFT( topic_title, IF ( LENGTH( topic_title ) < 25, LENGTH( topic_title ) , LOCATE( ' ', topic_title, 25 ) ) ) AS topic_title[/sql:1:3ff0dca573] wszystko jest ok. I teraz pytanie w jaki sposob obejsc ten problem zeby rekordy zawierajace znaki specjalne byly wyswietlane. Nie wchodzi tutaj w gre: :arrow: dodawanie do bazy danych rekordow z add_slashes a potem przy wyswietlaniu strip :arrow: przycinanie dlugosci stringa z poziomy php Update 1: Z tego co sie dowiedzialem LOCATE zwraca 0 w przypadku nie znalezienia spacji w stringu jesli string przekracza dopuszcalna dlugosc. Czyli znaki specjalne typu ! + moga byc w strngu ktory ma mniej niz 25 znakow ![]() Wiec teraz pytanie jakby przerobic to zapytanie ? Update 2: problem rozwiazany trzebabylo dac jeszcze jednego IF'a: [sql:1:3ff0dca573]SELECT topic_id, topic_last_post_id, LEFT( topic_title, IF ( LENGTH( topic_title ) < 25, LENGTH( topic_title ) , IF ( LOCATE( ' ', topic_title, 25 ) = 0, LENGTH( topic_title ) , LOCATE( ' ', topic_title, 25 ) ) ) ) AS topic_title FROM forum_topics ORDER BY topic_time DESC LIMIT 15 [/sql:1:3ff0dca573] -------------------- It's Time to Join the PLD Linux Generation!
<? while (!$success) { $try++; } ?> |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 15:45 |