begin process at 2012 05 31 03:50:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Web 2.0

 > 

Ajax

 > 

mettre des couleurs dans mon message


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

mettre des couleurs dans mon message

mercredi 9 avril 2008 à 11:18:03 | mettre des couleurs dans mon message

kaking

bonjour

alors voila :
je voudrais que quand on clique sur le bouton couleur, il y ais la balise permettant d'ecrire en couleur qui s'affiche dans mon form.

moi j'ai fais ca:

<script language="Javascript">
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
var regexp = new RegExp("[\r]","gi");

function storeCaret(selec)
{
if (isMozilla)
{
// Si on est sur Mozilla

oField = document.forms['news'].elements['message'];

objectValue = oField.value;

deb = oField.selectionStart;
fin = oField.selectionEnd;

objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );

// alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");

oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
oField.selectionStart = strlen(objectValueDeb);
oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
oField.focus();
oField.setSelectionRange(
objectValueDeb.length + selec.length + 2,
objectValueDeb.length + selec.length + 2);
}
else
{
// Si on est sur IE

oField = document.forms['news'].elements['message'];
var str = document.selection.createRange().text;

if (str.length>0)
{
// Si on a selectionné du texte
var sel = document.selection.createRange();
sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
sel.collapse();
sel.select();
}
else
{
oField.focus(oField.caretPos);
// alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();

var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['message'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();

}
}
}

</script>


<input type="button" value="Couleur" onclick="storeCaret('color=(red|green|blue|yellow|purple|olive)')">Choisi ta couleurs


mais quand je clique sur le bouton "couleur"

[color=(red|green|blue|yellow|purple|olive)][/color=(red|green|blue|yellow|purple|olive)]

apparait dans mon form mais ce n'est pas traduit: aucune couleur ne s'affiche quand je l'envoie

ma fonction est pourtant correcte car j'ai fais un bouton pour ecrire gras

<input type="button" value="b" style="width:50px;font-weight:bold" onclick="storeCaret('b')">

et quand je clique dessus les balises apparaisent dans le form et fonctionnent...


d'ou vient mon erreur s'il vous plais?

merci
mercredi 9 avril 2008 à 11:59:26 | Re : mettre des couleurs dans mon message

MasterCent

Salut,

Pourrais tu stp commenter ton code:
Une explication du resultat attendu, du contexte, ...
Une explication de ta stratégie,
De même que mettre en commentaire ce que tes lignes font, pas à pas.

Cela sera plus facile à traiter, et c'est du temps gagné pour tout le monde !

Merci.

mercredi 9 avril 2008 à 14:09:08 | Re : mettre des couleurs dans mon message

kaking

ok  MasterCent

bon alors c'est parti   (c'est long mais pas compliqué, la synthaxe est extremement facile)

j'ai un formulaire qui envoie un message. or je veux mettre des boutons qui permettent de mettre en gras (donc quand on clique sur le bouton, un code apparait dans mon form qui permet de mettre en gras)

pour ce faire, j'ai copié collé la fonction (n'y connaissant rien en js, je peux seulement vous afficher la fonction)

la fonction se trouve sur la page du formulaire:


<p align="center">Envoyer un mail</p></h1>
<form name="news" method="post" action="newsletter.php">
<script language="Javascript">
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
var regexp = new RegExp("[\r]","gi");

function storeCaret(selec)
{
if (isMozilla)
{
// Si on est sur Mozilla

oField = document.forms['news'].elements['message'];

objectValue = oField.value;

deb = oField.selectionStart;
fin = oField.selectionEnd;

objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );

// alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");

oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
oField.selectionStart = strlen(objectValueDeb);
oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
oField.focus();
oField.setSelectionRange(
objectValueDeb.length + selec.length + 2,
objectValueDeb.length + selec.length + 2);
}
else
{
// Si on est sur IE

oField = document.forms['news'].elements['message'];
var str = document.selection.createRange().text;

if (str.length>0)
{
// Si on a selectionné du texte
var sel = document.selection.createRange();
sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
sel.collapse();
sel.select();
}
else
{
oField.focus(oField.caretPos);
// alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();

var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['message'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();

}
}
}

</script>

ensuite j'ai créé un bouton pour mettre en gras, en souligné, en couleur,et en italique:

<input type="button" value="b" style="width:50px;font-weight:bold" onclick="storeCaret('b')">
<input type="button" value="i" style="width:50px;font-style:italic" onclick="storeCaret('i')">
<input type="button" value="u" style="width:50px;text-decoration:underline" onclick="storeCaret('u')">
<input type="button" value="Couleur" onclick="storeCaret('color=(red|green|blue|yellow|purple|olive)')"> Choisi ta couleurs
<br>

puis j'ai fais le formulaire:
<input type="text" name="titre">
Message :<br>
    <textarea name="message" id="message" wrap="virtual" cols="100" rows="15"> </textarea>
</center>

    <input type="submit" name="Submit" value="Envoyer">


dans la page ou on recoit le $_POST['message'] j'ai les regex suivantes:

if(!empty($titre) && !empty($message))
{

$titre = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $titre);
    $titre = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $titre);
    $titre = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color=(red|green|blue|yellow|purple|olive)\]#isU', '<span style="color:$1">$2</span>', $titre);
    $titre = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $titre);


$message = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $message);
    $message = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $message);
    $message = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color=(red|green|blue|yellow|purple|olive)\]#isU', '<span style="color:$1">$2</span>', $message);
    $message = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $message);



ce qui ne va pas:

quand je clique sur le bouton "gras" les balises apparaissent et fonctionnent
(je dois inserer du texte entre les deux balises apparaissant [b][/b])

mais quand je clique sur u(pour souligner) les balises apparaissent mais ne fonctionnent pas (en mettant du texte entre les balises, rien n'est souligné,les balises ne sont pas traduites)

de meme pour les couleurs:les balises apparaissent mais ne fonctionnent pas...

alors que pour mettre en italique,ca fonctionne...les balises [i][/i] apparaissent et fonctionnent....


vous savez pourquoi?                merci
mercredi 9 avril 2008 à 15:20:55 | Re : mettre des couleurs dans mon message

MasterCent

Naïvement, ne te manque t-il pas
$message = preg_replace... pour la balise U
Par ailleurs, la balise <u></u> n'a t elle pas été abandonnée au profit des styles
Enfin, N'as tu qu'un bouton pour choisir la couleur ou une liste des couleurs ?

As tu édité ton texte  $_POST  avant et après traitement ?
Il faut que tu arrives à cibler ton problème, ta transformation serveur fonctionne-t-elle ? Si tu donnes un texte à la fonction, sera t-il correctement transformé ? En clair : où cela coince-t-il ? Javascript ou PHP ?

Fas des tests du style :

$message= "aaa [u]ici incliné[/u] bbb" ;
... // traitement
echo ($message) ; 


Bon boulot !
mercredi 9 avril 2008 à 15:58:02 | Re : mettre des couleurs dans mon message

kaking

mais justement!

le gras fonctionne! pourquoi pas les couleurs!!!


(et pour les u t'as raison-mais je sais pas comment faire le bbcode pour souligner)


mon code cloche t'il a propos des couleurs?
mercredi 9 avril 2008 à 18:00:56 | Re : mettre des couleurs dans mon message

kaking

noooooooooon

c est bon je suis trop bete j'ai une erreur de script...



encore merci pour tes conseils, j'ai trouvé!

par contre j'ai copié collé la fonction et les boutons sur un autre formulaire (de news)

et la, il y a bien les boutons mais quand j'appuie dessus, rien ne se passe....pas de [b][/] ou de [i] [/i] qui apparaissent...


Cette discussion est classée dans : var, value, selec, length, ofield


Répondre à ce message

Sujets en rapport avec ce message

recuperations des variables XML d'une page asp dans du PHP [ par macao45 ] Bonjour,je cherche à recuperer les variables XML generer par une page asp d'un serveur en IIS ( ou je n'ai aucun droit ) dans une form en php sous lin Probleme d'envoi avec IE [ par aaka ] Bonjourj'ai un formulaire qui marche sous FF et Chrome mais pas avec IE. J'obtiens le message de vérification alors que les champs sont remplis ? pouv insere des donne javascripte dans une BD [ par somapi ] salue les amies j'ai un pFe qui consiste à crée une ma interactive bon, ma problème c'est que j'ai des donne dans ma base j aimerait bien récupère ces Problème d'utilisation de la bibliothèque JpGraph pour la création des statistiques sous forme des graphes [ par imenferjani ] bonjour, j'ai installé jpgraph et j'ai utilisé ce code pour afficher un graphe mais ça marche pas l'erreur est "l'image ne peut pas etre afficher car Créer vignettes diaporama - rollover [ par maximedlv ] Bonjour à tous! Je pose ici ma première question, en espérant ne me tromper ni de catégorie, ni de sujet, ni de forum etc. Je suis actuellement en c Couleur de mots cles dans une var [ par Arnaud ] Bonjour ke voulais savoir comment on fait pour changer la couleur des mots cles dans un var par ex print je voudrais qu'il soit bleu mais si je met // envoyer un mail avec concatenation d'un message et de l'url [ par philcode ] Bonjour,Comment ajouter au corps du message l'url qui envois la popup de mail concatenné à un petit message du type "vas voir ce site il est super: ur Personne ne trouve le PB ?????? [ par manueg ] Bonjour, mon souci est que dans IE tout est OK et dans Netscape j'ai un message d'erreur sur l'URLVoici le code :Si vous pouvez le tester chez vous et Parametre de ma classe connexion et connexion/deconnexion [ par sebos63 ] Bonjour, 1. J'ai une classe de connexion et je souhaiterais savoir où il est judicieux de spécifier les paramètres d'une connexion. (Dans mon construc Guillemet dans une textbox [ par RockmanX ] Voila j'ai un form qui va cherche dans une base de donnée une adresse et qui l'enregistre dans un variable:$adresse = "rue de l'école";Ensuite elle do


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales