Modificare e salvare testo

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Allora ho una domanda:

se ho un sito con php + db mysql e voglio entrare in una pagina privata per modificare il testo, introduco una textarea; fin qui nessun problema però al momento che l'utente deve immettere il grassetto o corsivo devo fare in modo che nel testo si aggiungono i rispettivi tag: come posso fare? probabilmente sfruttando il dom ma nn ho idee...

grazie chi risponde è un 0:)
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
ti ringrazio poiché è la seconda risp che mi dai; cmq per ciò che riguarda gli editor wyswyg ho un sito su hosting di aruba, ma nell'integrazione diun altro wyswyg come fckeditor pur inserendolo per bene avevo problemi nella formattazione del testo, inserimento di link...e altri di vario genere; motivo per il quale vorrei costruirmene uno fatto a mano.

grazie di nuovo
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Perfetto! però ...

se al cliente voglio dare un pulsante per il grassetto (che quindi mi inserisce "<b>" sll'interno della textarea etc... come posso farlo?
devo usare il dom del javascript? o con php, si può fare?

grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Io usavo una funzione di questo tipo:
Codice:
function bbCode(code)
{
	var elem = document.getElementById('text');
	
	if(code == 'b')
	{
		var text = prompt('Inserisci il testo in grassetto:');
		elem.value += '[b ]'+ text +'[ /b]';
	}
	else if(code == 'i')
	{
		var text = prompt('Inserisci il testo in corsivo:');
		elem.value += '[i ]'+ text +'[ /i]';
	}
	else if(code == 'u')
	{
		var text = prompt('Inserisci il testo sottolineato:');
		elem.value += '[u ]'+ text '[ /u]';
	}
}
E così via per tutti i codici, ovvio che poi c'erano delle varianti da fare nei possibili parametri da passare. Per l'URL ad esempio visualizzavo due prompt: uno per il nome del collegamento e uno per l'indirizzo, se il nome non era fornito usavo come nome l'indirizzo. Però è una cosa semplice, se hai un po' di dimestichezza. Poi lo usavo così:
HTML:
<form name="comment" action="comment.php" method="POST">
	BBCode: <input type="button" onclick="bbCode('b');" value="B" />
			<input type="button" onclick="bbCode('i');" value="I" />
			<input type="button" onclick="bbCode('u');" value="U" />
	
	Testo: <textarea name="text" cols="50" rows="5"></textarea>
	
	<input type="submit" name="submit" value="Invia" />
	<input type="reset" name="reset" value="Resetta" />
</form>

NOTA: Se vuoi fare copia-incolla della mia funzione rimuovi gli spazi tra le parentesi quadre del BBCode, aggiunte perché altrimenti era parsato dal forum!
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
perfetto... dovrei aver capito.. praticamente creo una funzione tramite il form modifico l'argomento della funzione il quale tramite la forma condizionale mi modifica il value del text...
grazie mille se ho problemi poi ti faccio sapere
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Ho fatto così (ho prelevato praticamente il tuo codice tolto il corsivo e sottolineato e rimandato la conferma alla stessa pagina; però ci deve essere qualche piccolo errore poiché al posto di

var elem = document.getElementById('text');

per prova ho tentato anche di scrivere:

x=getElementsByTagName('textarea').setAttribute('value','prova');
//a value c'è lo spazio solo nel forum però l'ho scritto attaccato

ma niente... se faccio onclick su B non mi da niente... ti posto l'intero codice (ho ovviamente tolto anche lo spazio e ora reinseriti).


Codice:
<script>

function bbCoda(code)
var elem = document.getElementById('text');

if(code=='b'){
var text = prompt('Inserisci il testo in grassetto:');
		elem.value += '[ b]'+ text +'[ /b]';
}
</script>

<form name="comment" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
	BBCode: <input type="button" onclick="bbCoda('b');" value="B" />	
	Testo: <textarea name="text" cols="50" rows="5"></textarea>
	<input type="submit" name="submit" value="Invia" />
	<input type="reset" name="reset" value="Resetta" />
</form>

<?php
echo $_POST['text'];
?>
 
Ultima modifica:

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
anzi scusa ripropongo la domanda: ora ottengo come risultato ad esempio:

testo

ma se vado a stamparla su monitor perchè non mio appare in grassetto? devo sfruttare la funzione precedente?
(perdona la mia ignoranza...)
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Perché JavaScript non è come jQuery, dove basta applicare ad un selettore una funzione per applicarla a tutti gli elementi trovati da quel selettore. Per fare come hai detto tu dovevi fare:
Codice:
var elem = document.getElementsByTagName('textarea');

for(i = 0; i < elem.length; i++)
  elem[i].value = 'valore';
Che è la cosa che fa automaticamente jQuery. Tuttavia è un metodo scomodo, non credi? A meno che tu non abbia un framework è sconsigliatissimo, ed in questo caso anche inutile :D
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
scusa alessandro mi sono sbagliato con il forum "ho scritto [ b] attaccato... ti dicevo che grazie al tuo codice ottengo l'inserimento dei vari tag [ b] ..[ i]...etc però se vado a stampare a schermo non voglio che questi non abbiano effetto ma che ovviamente lo abbiano; ad esempio

su schermo ottengo proprio scritto:

[ b]testo[ b/] invece di testo;

:crying:
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
No, è impossibile. Mi stai dicendo che con il mio script ottieni [ b] invece che la versione con la parentesi quadra attaccata? Va contro ogni logica umana, i linguaggi non decidono da soli. Sei sicuro di aver attaccato quella lettera?
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
certo che no! mi sono spiagato male...
il [ b] attaccato me lo da ... è solo che se io stampo a schermo perchè mi da il codice anziché l'effetto; cioè per quale motivo se stampo il testo
echo $_POST['text']

vedo:

[ b]testo[ /b]//qui lo scrivo staccato per il forum
anziché
testo //testo in grassetto senza le [ b]
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Per caso conosci qualche browser che può parsare il BBCode? No. Quindi è ovvio che se inserisci [ b] il browser leggerà [ b]. La funzione lato-client che ti ho dato va integrata con quella poco più su, della SASTGroup, passandole come parametro il testo inserito con BBCode.
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
praticamente se non ho capito male al posto di $var inserisco $testo (prelevandolo ovviamente da $_POST['text']) -
poi dopo la funzione posso fare echo $testo
quindi questa funzione mi convertirebbe il codice ASCII in binario giusto?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
No, semplicemente converte la stringa [ b] in <b> e così via per tutti i BBCode che inserirai. Ricordati che il BBCode dovrà avere una corrispondenza nell'editor JavaScript o l'utente lo dovrà inserire a mano. La funzione si usa così:
PHP:
<?php
$testo = bbcode_format($_POST['text']);
echo $testo;
?>
Da dove ti è uscito fuori che converte ASCII in binario? Tanto per usare qualche parolone? :D
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
0:)ok posto il codice completo a chi possa servire (GRAZIE AD ALESSANDRO 97)

Codice:
<script type="text/javascript">
function bbCode(code)
{
	var elem = document.getElementById('text');
	
	if(code == 'b')
	{
		var text = prompt('Inserisci il testo in grassetto:');
		elem.value += '[ b]'+ text +'[/ b]';
	}
	if(code == 'i')
	{
		var text = prompt('Inserisci il testo in corsivo:');
		elem.value += '[ i]'+ text +'[ /i]';
	}
//le varie forme condizionali continuano .... le [ b]sono staccate altrimenti il forum leggerebbe "grassetto"
}
</script>

<!-- il forum lo carico sulla stessa pagina -->

<form name="comment" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
	BBCode: <input type="button" onclick="bbCode('b');" value="B" />
			<input type="button" onclick="bbCode('i');" value="I" />
			<input type="button" onclick="bbCode('u');" value="U" />
	
	Testo: <textarea name="text" cols="50" rows="5"></textarea>
	
	<input type="submit" name="submit" value="Invia" />
	<input type="reset" name="reset" value="Resetta" />
</form>

<!-- la funzione bbcode_format($var) mi converte i bbcode in appositi tag, ad esempio converte [ b] con < b> 

<?php


function bbcode_format($var) {
    $search = array(
        '/\[b\](.*?)\[\/b\]/is',                                
        '/\[i\](.*?)\[\/i\]/is',                                
        '/\[u\](.*?)\[\/u\]/is',
        '/\[img\](.*?)\[\/img\]/is',
        '/\[url\](.*?)\[\/url\]/is',
        '/\[url\=(.*?)\](.*?)\[\/url\]/is'
        );
    $replace = array(
        '<strong>$1</strong>',
        '<em>$1</em>',
        '<u>$1</u>',
        '<img src="$1" />',
        '<a href="$1">$1</a>',
        '<a href="$1">$2</a>'
        );
    $var = preg_replace ($search, $replace, $var);
    return $var;
} 



$testo = bbcode_format($_POST['text']); 
echo $testo;

un ringraziamento speciale ad Alessandro 1997 che è un
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Sì, ma credo che tu non abbia ben capito come si usa quella funzione. Non la devi usare prima di caricare il messaggio nel database, ma quando lo visualizzi. Nel database andrà la versione con i codici BBCode, e poi fai:
PHP:
<?php
// recupero il messaggio e lo salvo in $message
$message = bbcode_format($message);
echo $message;
?>
Va bene anche se la usi prima di caricare tutto nel database, però non è un ragionamento molto logico e nessuno fa così :D
 
Discussioni simili
Autore Titolo Forum Risposte Data
Shyson Modificare codice e creare link PHP 0
J Modificare panorami 360 ps 2020 Photoshop 0
napuleone modificare il contenitore di un div Javascript 2
napuleone modificare il contenitore di un div Javascript 1
D modificare questo codice per inserimento in text e non in tabella jQuery 1
C modificare sito in locale con dreamWeaver HTML e CSS 3
T Modificare ruolo utenti in fase di registrazione E-Commerce 0
M modificare un file .XML da database Sql PHP 13
S Modificare intestazione documento pdf con LO Draw Linux e Software 0
felino Radio button e Bootstrap: modificare il colore di default! HTML e CSS 1
Shyson Modificare funzione php PHP 15
W Modificare il Type di un Input box in javascript ovunque si trovi Javascript 0
F Modificare report di etichette di access con vba MS Access 0
D [PHP] Tabella: modificare direttamente i valori PHP 6
P [Woocommerce] Modificare il Bottone Checkout di Woocommerce in base alla categoria di prodotto E-Commerce 10
Q impossibile modificare un file ....... C/C++ 2
C [HTML] modificare la scritta della copyright HTML e CSS 2
G [PHP] MODIFICARE DATI TABELLA CONTESTUALMENTE PHP 6
Y [PHP] [HTML] Modificare i quadranti PHP 1
A [PHP] Modificare campo database in base alla scelta dell'utente PHP 2
W Non riesco più a modificare i dati di una tabella da phpmyadmin MySQL 0
V [WordPress] Come modificare link in tasto menu css WordPress 21
Y Modificare script php PHP 5
G Fullcalendar: modificare colore testo, backgroup e bordi per tutti gli eventi jQuery 3
paloppa Bootstrap.min.css modificare il file HTML e CSS 6
Merlina3377 [PHP] modificare file su form immagine thump PHP 1
G [HTML] Modificare ordine dei div in mobile responsive HTML e CSS 5
pfranco [PHP] Modificare pagina web online PHP 9
Shyson Modificare codice jQuery 0
A [Javascript] modificare il contenuto della barra indirizzi di un browser Javascript 1
asevenx modificare lista elementi togliendo l'elemento selezionato jQuery 1
Kolop "Modificare HTML" HTML e CSS 13
K [ASP.Net] Utilizzare e modificare dati linq ASP.NET 0
G Modificare navbar in base allo scroll jQuery 6
R [Photoshop] Modificare luminosità dei bordi in una foto Photoshop 2
A come modificare gli elementi di una lista e gli editText? Sviluppo app per Android 0
A modificare .jar con classe personalizzata Java 9
Mer556 BLOCCATO nel modificare un sito HTML e CSS 3
T modificare un template html5 HTML e CSS 6
B Modificare sorgente di pagina HTML e CSS 10
napuleone Modificare attributi di una classe con js Javascript 2
C modificare un rss con php PHP 2
L Modificare dati tabella mysql PHP 2
P modificare mappa sito Javascript 0
P modificare mappa sito Javascript 0
X come modificare paginazione del tutorial PHP 0
A modificare posizione plug in almeno credo WordPress 3
R Modificare html in modo dinamico PHP 3
A Modificare un template html5 Webdesign e Grafica 1
A pop up come modificare il posizionamento e il tempo HTML e CSS 3

Discussioni simili