Pagina 1 di 1

Gestione delle stringhe in php-mysql

Inviato: 20/02/2010, 17:29
da Micogian
Approfitto di questo spazio per una richiesta che interessa la gestione delle stringhe in mysql.

Nella Lista dei Topics della MOD topic_list la suddivisione dei Topics avviene sulla base del primo carattere del Titolo.
Per i casi nei quali il titolo inizia con un tag tra parentesi quadra, la prima parentesi viene esclusa dalla lettura utilizzando il seguenet codice inserito in una SELECT mysql:

Codice: Seleziona tutto

 UCASE(LEFT(TRIM(LEADING '[' FROM pt.topic_title), 1)) AS first_char
Il significato dello script è il seguente:
Prendi il valore di pt.topic_title, escudendo il primo carattere se è una parentesi quadra (LEADING '['...), tolti eventuali spazi laterali (TRIM), prendi il primo carattere a sinistra (LEFT) e trasforma in maiuscolo il carattere (UCASE). Questo è il valore che stabilisce in quale categoria inserire il Topic nella Lista.
Ad esempio, se il titolo fosse "[DEV] Mod Topiclist", il risultato sarebbe "D".

Ma se io volessi invece non tener conto dell'intero TAG tra parentesi quadre, cioè escludere tutta la parte tra parentesi quadre "[DEV]" e ottenere l'ordinamento per "M" come si fa?

Re: Gestione delle stringhe in php-mysql

Inviato: 20/02/2010, 18:05
da Carlo
Ma vuoi effettuare questo necessariamente tramite la query SQL?
Altrimenti con un preg_match() o preg_replace() del php potresti risolvere.

Re: Gestione delle stringhe in php-mysql

Inviato: 20/02/2010, 18:22
da Micogian
Lo deve fare la query perchè si deve stabilire qual'è la lettera che viene considerata il titolo di sezione:

Codice: Seleziona tutto

$sql = "SELECT
pt.topic_id, pt.icon_id, pt.topic_title, pt.topic_views, pt.topic_replies, pt.topic_first_poster_name, pt.topic_time, pf.parent_id, pf.forum_id, pf.forum_name AS forum_name_cor,pt.topic_last_post_time,
UCASE(LEFT(TRIM(LEADING '[' FROM pt.topic_title), 1)) AS first_char
FROM ". TOPICS_TABLE." pt,". FORUMS_TABLE. " pf
WHERE $where_cor 
AND pt.topic_type = 0
AND pt.topic_last_post_time  > $data_post 
ORDER BY UCASE(TRIM(LEADING '[' FROM pt.topic_title))";
Tra l'altro va inserita due volte, la prima per ottenere il valore di first_char, la seconda per l'ordinamento dei Topics.
il valore di "first_char" è importante perchè nel successivo ciclo "while" quando "first_char" è diverso da quello precedente viene considerato come "Titolo della Sezione" e a questo gruppo vengono associati tutti i successivi valori.
Io credo che si possa fare con REGEXP.

Re: Gestione delle stringhe in php-mysql

Inviato: 20/02/2010, 18:42
da Carlo
Io con MySQL ho lavorato solo con i comandi di base, quindi non saprei dirti con certezza.

Re: Gestione delle stringhe in php-mysql

Inviato: 21/02/2010, 23:45
da Sir Xiradorn
EDIT: Perdonate edito per str.....ata colossale avevo frainteso il post....