Ecrire le contenu d'un textarea modifier avec du javascript

Mammouth du PHP | 19672 Messages

17 nov. 2006, 19:15

C'est pour ça que je te suggère de ne pas le modifier avant l'enregistrement : ça te permet de le modifier.

Il faut distinguer la partie saisie/modification d'un message de son affichage. Pour l'affichage, il doit être transformé, mais pas dans l'autre cas. Si tu enregistres ton texte tel quel en base de données, pour l'afficher, tu fais appel à ton code JavaScript pour ajuster l'affichage ou encore tu le fais en PHP comme fonctionnent la plupart des systèmes de bbCodes de forum.

Si tu veux, récupère un script de livre d'or que j'ai créée et qui est en libre téléchargement sur ma page perso et fouille le code pour voir comment je traite le problème
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 106 Messages

17 nov. 2006, 19:36

ok j'ai regardé mais tu as fait completement different.

Ma question c'est pus precisement : si je veut remplacer sur chaque page ou il y a ecrit par exemple [surligne][/surligne] par <u></u>, que dois-je rajoute rou modifier dans mon js.

PS:Je epnse que cela se trouve ici
var timer=0;
var ptag=String.fromCharCode(5,6,7);
function  previsualisation() {
        t=document.formulaire.textarea.value
        t=code_to_html(t)
        if (document.getElementById) document.getElementById("prev").innerHTML=t
        if (document.formulaire.auto.checked) timer=setTimeout(previsualisation,1)
}
function automatique() {
        if (document.formulaire.auto.checked) previsualisation()
} 

Mammouth du PHP | 19672 Messages

17 nov. 2006, 19:39

Tu as suivi le lien sur replace que je t'ai proposé plus tôt ? la réponse s'y trouve : tu dois remplacer [surligne] par <u> et [/surligne] par </u>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 106 Messages

17 nov. 2006, 19:46

ba oui c'est ce que mon script de depart fait!
Mais il le fait juste pour le textarea qui vas donc très bien.
Mais j'ai suivit ton conseil ne pas enregistrer mon truc modifier mais l'enregistrer avec le bbcode. Donc maintenant j'aimerais copier le script ue j'ai poster, et le modfier pour en faire un deuxieme qui remplacera les balise bbcode ou quelle se trouve sur la page; :cry:

Mammouth du PHP | 19672 Messages

17 nov. 2006, 19:50

On est pas sortis de l'auberge ](*,)
je me demande si tu discerne bien chaque moment du déroulement de ton propre code là, et si j'en doute un peu, c'est parce que ta dernière question n'est pas particulièrement claire :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 106 Messages

17 nov. 2006, 19:57

alors je réexplqiue :
J'ai une page ou il y a un textarea et des boutons permettan d'ajouter du bbcode.
En dessous j'ai un div, carré, ou lorsque l'on tape un code dans le textarea, il est modifier a l'aide du script que j'ai poster, et est ecrit dans le div.

Comme je viens de le dire il fait effet que entre le textarea et le div.

Ce que je voudrai faire c'est par exemple sur une page (n'importe ou, pas seulement dans un textarea) j'ai [surligne]a[/surligne] je voudrai que cela me le remplace par <u>a</u> ou pluto pour dire que ca affiche : a

Mammouth du PHP | 19672 Messages

17 nov. 2006, 20:01

Serais-tu en train d'essayer de ré-écrire un TinyMCE ou un FCKEditor ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 106 Messages

17 nov. 2006, 20:03

hein?
C'est quoi cela. Pas du tout. :cry: :cry: Moi je voudrai modifier mon bbcode pour qu'il ne s'affiche pas mais qu'il soit transformer partout ou il soit :cry: :cry: . S'il te plait help :cry: :cry: :cry:

Mammouth du PHP | 19672 Messages

17 nov. 2006, 20:37

Sois logique : pour savoir quoi mettre où, il suffit d'y aller chronologiquement;
-1- tu saisis du texte dans la formulaire;
-2- le texte saisi est envoyé vers une fonction JavaScript qui le fait afficher dans un bloc.

Le problème se situe donc entre les deux. Entre le moment où ta fonction reçoit le texte (paramètre ?) et le moment où elle l'affiche (innerHTML), tu dois faire appel à une fonction qui va effectuer le remplacement des bbCodes par des balises html correspondantes.

Prends le temps d'y penser un peu, suis pas à pas le cheminement de ton texte, tu vas finir par découvrir que la solution est sous ton nez ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 106 Messages

17 nov. 2006, 20:53

Cela est fait cyrano. C'est mon script qui fait cela. Mon probleme c'est que je voudrai l'enregistrer dans un fichier. Tu m'a conseiller d'enregistrer directement avec le bbcode mais de faire un javascript pour le remplacer a l'affichage d ec efichier. le probleme c'est qe je ne sait pas faire c'est pour cela que je t'ai poster la portion du script ou je pense qu'il y aurai un truc a modifier pour que lorsque l'on affiche un fichier avec a l'interrieur des balises bbcode elle soit remplacer a l'affichage de ce fichier.

Mammouth du PHP | 19672 Messages

17 nov. 2006, 22:36

Mais tu l'as déjà ton JavaScript : et il ne va servir que pour la fenêtre de pré-visualisation: Lorsque tu feras afficher le texte enregistré, il faudra le traiter avec PHP pour l'affichage normal.

-1- Saisie du message avec bbCodes;
-2- pré-visualisation : transformation JavaScript des bbCodes et insertion dans le bloc avec innerHTML;
-3- Enregistrement
-4- Affichage normal d'une page pour voir le texte enregistré : traitement PHP des bbCode avec un str_replace() ou encore preg_replace() pour transformer les bbCodes en balises html normales.

Le JavaScript ne sert que pour les phases 1 à 3, pas pour la 4. Pour la 4, tu fais ça en PHP. Mais si tu veux éditer pour le modifier le texte enregistré, alors tu auras dans ton textarea une chaine avec des bbCodes, pas avec des balises HTML. Donc, tu pourras utiliser ton JavaScript pour pré-visualiser les modifications.

Est-ce que tu commences à mieux voir le déroulement et surtout la distinction de chaque élément ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 106 Messages

18 nov. 2006, 12:52

on ne peut pas le faire en javascript cela serait mieu.
Voila pourquoi je t'ai dit cela. Dommage, je croyait qu"'on pouvaoit le faire en javascript. Je pensait que puisque cela marchait pour mon textarea et mon div on aurait pu afficher un texte quon masquerai plus quon creer une balise div et qu'on l'ffiche. Tu est sur que c'est vraiment pas possible??

Si,non j'ai enormement de bbcode je vais devois tous mes les taper. ne connaitrai tu pas un script qui permettrai de les transformer.

var timer=0;
var ptag=String.fromCharCode(5,6,7);
function previsualisation() {
t=document.formulaire.textarea.value
t=code_to_html(t)
if (document.getElementById) document.getElementById("prev").innerHTML=t
if (document.formulaire.auto.checked) timer=setTimeout(previsualisation,1)
}
function automatique() {
if (document.formulaire.auto.checked) previsualisation()
}

Dans la ligne ci-dessus, en rouge on peut voir formulaire.textarea.value ce qui correspond a mon formulaire.Si on pouvait changer cela par un autrte div par exemple qu'on masquerai avec du css, du html ou du php.

cela me semble une bonne idée non?

Mammouth du PHP | 19672 Messages

18 nov. 2006, 13:30

Tu es précisément sur le point intéressant : c'est à cet endroit que tu peux ajouter des modifications et éventuellement ajouter des éléments comme par exemple insérer le texte envoyé dans un div.

Si tu fais par exemple :
function previsualisation() 
{
    t = document.formulaire.textarea.value;
    t = code_to_html(t);
    t = '<div id="apercu">'+ t +'</div>';
    if (document.getElementById)  
    {
        document.getElementById("prev").innerHTML = t;
    }
    if (document.formulaire.auto.checked)
    {
        timer=setTimeout(previsualisation,1);
    }
}
Tu vas avoir ton texte dans un div.

Mais pour l'affichage normal d'une navigation dans des pages existante, utiliser le JavaScript va t'obliger a des manipulations supplémentaire, parce que coté PHP, il te faudra générer du JavaScript en plus pour mettre le contenu et le transformer. Tu ne gagneras rien et si un internaute a désactivé le JavaScript sur sa machine, ton texte s'affichera avec des bbCodes au lieu de s'afficher normalement dans des balises HTML correctes.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 106 Messages

18 nov. 2006, 13:35

Je suis d'accord mais d'un autre coté, je vais devoir ecrire un script php pour toutes mon bbcode et j'en ai une taper comme tu as du le voir sur mon premier post.
c'est pour cela que je te retourne ma question : connait tu un script de convertion de bbcode??

Mammouth du PHP | 19672 Messages

18 nov. 2006, 13:44

Non, pas spécialement. Mais, schématiquement, un copier/coller à partir du JavaScript suivi d'un rechercher/remplacer pour transformer dans le nouveau fichier des fonctions JavaScript en fonctions PHP et tu devrais pouvoir aller assez rapidement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: