Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [zapytanie] problem znakow specjalnych
kwiateek
post 1.07.2003, 20:04:44
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 biggrin.gif (czym to ja sie zajmuje 8) - az sam sie sobie dzwie) i dazac do jak najlepszego zoptymalizowania skryptu zdecydowalem ze za obcinanie dlugosci topika bedzie odpowiedzialny sql.
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 biggrin.gif
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++; } ?>
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: 19.07.2025 - 15:45