phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Query sql sostituire slash nei posts

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Rispondi
maxweb
Utente
Utente
Messaggi: 21
Iscritto il: 01/04/2011, 17:20
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.5.14

Query sql sostituire slash nei posts

Messaggio da maxweb » 12/02/2012, 12:16

Ciao a tutti, so che non è un argomento inerente il supporto phpbb, premetto che ho fatto numerose ricerche su google e nessuna soluzione proposta è riuscita a risolvere il mio problema, ma vorrei condividere questa problematica sperando che qualcuno di voi possa aiutarmi.
In pratica devo sostituire in tutti i post del forum la stringa

[/url] con

[/url][/hide]

Ho provato con le seguenti query ma senza risultato:

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text = REPLACE(post_text,"[/url]","[/url][/hide]");
e pure con

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text = REPLACE(post_text,"[\/url]","[\/url][\/hide]");
e pure con i codici ascii

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text = REPLACE(post_text,"[/url]","[/url][/hide]");

Dove sbaglio? Esiste eventualmente un modo diverso da quello che ho già provato io?

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Query sql sostituire slash nei posts

Messaggio da Micogian » 12/02/2012, 14:45

A parte il fatto che non capisco perchè tu debba inserire il tag di chiusura [/hide] senza mettere quello di apertura [hide], il motivo perchè non funzionano le tue query è semplice, il fatto è che la stringa [/url] non la trova perchè ai bbcode viene associato il bbcode_uid.
In sostanza, nel database viene memorizzata una stringa di questo tipo: [/url:23k7fukq].
Ogni post ha un diverso bbcode_uid.

maxweb
Utente
Utente
Messaggi: 21
Iscritto il: 01/04/2011, 17:20
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.5.14

Re: Query sql sostituire slash nei posts

Messaggio da maxweb » 12/02/2012, 20:19

quindi con questo vuoi dirmi che non potrò mai effettuare questa modifica?

p.s.: il tag [hide] l'ho già inserito all'inizio dell'url che dovrei nascondere

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Query sql sostituire slash nei posts

Messaggio da Micogian » 13/02/2012, 11:06

maxweb ha scritto:quindi con questo vuoi dirmi che non potrò mai effettuare questa modifica?

p.s.: il tag [hide] l'ho già inserito all'inizio dell'url che dovrei nascondere
Non ho detto che non si può fare, ho detto che non è quello il modo.
Per poterlo fare bisogna conoscere il "bbcode_uid" di ciascun Post, quindi va fatta una interrogazione per recuperare questo dato e poi puoi fare la modifica dell'url che poteva essere fatta in un colpo solo.
Ad esempio il seguente codice è una query che controlla i posts del Forum indicato nell'url, controlla la presenza del bbcode [url] nel testo ed estrae il bbcode_uid. Con il bbcode_uid puoi usare il comando str_replace().

Codice: Seleziona tutto

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

// Initial var setup
$forum_id    = request_var('f', 0);

$user->setup();

$sql = "SELECT post_id, forum_id, post_text, bbcode_uid
    FROM " . POSTS_TABLE . "
    WHERE post_text like '%[url:%'
    AND forum_id = " . $forum_id . "
    ORDER BY post_id LIMIT 10";

$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$text_cor = $row['post_text'];
$bbcode_uid_cor = $row['bbcode_uid'] ;
// aggiunge il tag [hide] prima del tag [url:
$text_new = str_replace("[url:", "[hide][url:", $text_cor) ;
// aggiunge il tag [/hide] dopo il tag /[url:
$text_new = str_replace("[/url:" . $bbcode_uid_cor . "]","[/url:" . $bbcode_uid_cor . "][/hide]", $text_new );
echo $text_cor . "<br />";   // testo originale
echo $text_new . "<br />";  // testo modificato
echo "----------------------------------------------------------------------<br />";
}
?>
Prova a creare un file "prova_url.php" e poi lancia l'url prova_url.php?f=XX (dove XX è il Forum che vuoi controllare.
L'esempio si limita al cotrollo di 10 posts.

ATTENZIONE: l'esempio si limita a visualizzare il testo precedente e quello modificato, non esegue la modifica, ma a questo punto ci sono tutti i dati per poterla fare con UPLOAD

maxweb
Utente
Utente
Messaggi: 21
Iscritto il: 01/04/2011, 17:20
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.5.14

Re: Query sql sostituire slash nei posts

Messaggio da maxweb » 13/02/2012, 11:13

ti ringrazio infinitamente per l'interesse mostrato ma considerato il tempo che mi farebbe perdere sperimentare per poi riuscire a modificare tutto, ci siamo messi al lavoro con gli altri admin e stiamo modificando manualmente i post.

Grazie lo stesso :D

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Query sql sostituire slash nei posts

Messaggio da Micogian » 13/02/2012, 11:16

La query postata ti permette per lo meno di conoscere quali sono i topics/posts che contengono l'url e con una piccola modifica si potrebbe creare l'elenco (linkabile) dei posts che contengono l'url da modificare.

Con il PHP si può fare tutto.

maxweb
Utente
Utente
Messaggi: 21
Iscritto il: 01/04/2011, 17:20
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.5.14

Re: Query sql sostituire slash nei posts

Messaggio da maxweb » 13/02/2012, 11:56

infatti, immaginavo si potesse fare, ma alcune volte le mie "conoscenze" mi impediscono di andare oltre per evitare magari di fare qualche pasticcio

Avatar utente
Barrnet
Leader Moderatori
Leader Moderatori
Messaggi: 3124
Iscritto il: 04/07/2010, 23:31
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.10
Database: MySQL 5.1.61-community-log
Contatta:

Re: Query sql sostituire slash nei posts

Messaggio da Barrnet » 14/02/2012, 16:37

Al posto di usare il bbcode hide, potresti direttamente modificare il bbcode alla fonte per includere il codice che nasconde il bbcode o installare una mod di questo genere.

maxweb
Utente
Utente
Messaggi: 21
Iscritto il: 01/04/2011, 17:20
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.5.14

Re: Query sql sostituire slash nei posts

Messaggio da maxweb » 14/02/2012, 17:07

ci avevo pensato ma non sono riuscito a trovare una mod simile, sapresti, gentilmente, indicarmene una?

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti