Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : mettre des couleurs dans mon message [ Web 2.0 / Ajax ] (kaking)

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é 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 Test - Si $var existe deja dans la BDD [ par mattdelavega ] Bonjour.J'ai un quizz, la personne repond aux questions ... enregistre son nom, prenom adresse, etc... Tout ça est envoyé en BDDMais si cette personne problème undifined fonction pourtant définie [ par gourby ] Bonjour,j'ai un gros problème:Fatal error: Call to undefined function: affichecaddie() in /home/arobazcr/www/2eaux-new/commande/panier.php on line 34 exp reg [ par coucou747 ] Salut je fais un forum OO en php4 et j'ai besoin d'un peu d'aide pour la fonction qui transforme une variable avant de l'enregistrer : celle qui gère Petit Calcul tout simple [ par Bowlest ] Bonjour, Mon probleme est assez simple à résoudre je pense. J'ai fais une page avec 4 questions.. 3 réponses Problème pour afficher le résultat de 2 liste déroulantes en php [ par sand285 ] Salut,J n'arrive pas à obtenir le résultat de mes 2 listes déroulantes.Cad: quand je sélectionne une couleur dans le premier choix et le deuxième choi popup encore et tjs [ par chkerin ] bonjour,je suis dsl si j'en fait chier avec mes popup:p mais j'ai vraiment besoin d'aide, dans un formulaire tout simple ou je met le numero d'un cont Liste déroulante php + remplissage automatique de champs [ par fullzone ] Bonjour ! Je suis actuellement face à un vrai casse-tête, qui sera peut-être très simpliste pour vous ;)Dans un formulaire, j'ai une liste déroulante synthetiser 2 clauses foreach() [ par arnold002 ] J'utilise 2 foreach et je voudrai les synthetiser pour que le resultat du premier corresponde au resultat du 2èmeVoici le code de départ foreach($anne Classe PHP et variable d'instance [ par p0236 ] Bonjour à tous, J'utilise une classe Produit dans laquelle il y a une VI qui est un objet d'une autre classe.Est ce que cela est possible? Si oui, y a


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.