× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum des Webmasters
 Modification d'un texte enregistré en y mettant des option (gras......)
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t14
  Posté le 21/10/2020 @ 18:36 
Aller en bas de la page 
Petit astucien

Bonjour,

J'ai un formulaire en php, où on peut écrire du texte, des remarques ............, et qui est enregistré ensuite dans un fichier. Style forum !

Ce formulaire comporte des options pour mettre le texte en gras, souligné .... qui fonctionnent à la création du texte.

<html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset">
<head>
<style type="text/css">
a {color:black; text-decoration:underline;}
a:hover {color:red; text-decoration:underline;}
</style>
<script language="javascript">
function storeCaret(ftext) {
if (ftext.createTextRange) {
ftext.caretPos = document.selection.createRange().duplicate();
}
}

function OpenPreview()
{
document.getElementById('resultat').innerHTML = "<u>APERCU DU MESSAGE :</u><p>" + document.getElementById('Message').value;
return true
}


function TAinsert(text1,text2) {
var ta = document.getElementById('Message');
var ta2= document.getElementById('Message2');

if (document.selection) {
var str = document.selection.createRange().text;
ta.focus();
var sel = document.selection.createRange();
if (text2!="") {
if (str=="") {
var instances = countInstances(text1,text2);
if (instances%2 != 0) sel.text = sel.text + text2;
else sel.text = sel.text + text1;
} else sel.text = text1 + sel.text + text2;
} else sel.text = sel.text + text1;
} else if (ta.selectionStart || ta.selectionStart == 0) {
if (ta.selectionEnd > ta.value.length) ta.selectionEnd = ta.value.length;
var firstPos = ta.selectionStart;
var secondPos = ta.selectionEnd+text1.length;
var contenuScrollTop = ta.scrollTop;

ta.value=ta.value.slice(0,firstPos)+text1+ta.value.slice(firstPos);
ta.value=ta.value.slice(0,secondPos)+text2+ta.value.slice(secondPos);

ta.selectionStart = firstPos+text1.length;
ta.selectionEnd = secondPos;
ta.focus();
ta.scrollTop = contenuScrollTop;
} else { // Opera
var sel = document.PostTopic.Message;
var instances = countInstances(text1,text2);
if (instances%2 != 0 && text2 != "") sel.value = sel.value + text2;
else sel.value = sel.value + text1;
}
}
</script>
</head>
<body bgcolor="#FFCCFF"><center><p>
<font color="green"><div class="apercu" name="resultat" id="resultat" value= "resultat" style="width: 894; height: 41">
</div></font>
Surligner le champs, puis sélectionner le format :<p>
<a href="#" onclick="TAinsert('<b>','</b>');OpenPreview();" style="text-decoration: none"><b>Gras </b></a> -
<a href="#" onclick="TAinsert('<i>','</i>');OpenPreview();" style="text-decoration: none"><i>Italique </i></a> - 
<a href="#" onclick="TAinsert('<u>','</U>');OpenPreview();"><u>Souligné</u></a>
<br>
<form method="POST" action="add.php" value="envoyer" name="soumettre">
<textarea cols="65" name="message" id="Message" rows="8" wrap="VIRTUAL" accesskey="c" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onchange="storeCaret(this);" ></textarea><p>
<input type="button" value="Aperçu" onclick="TAinsert;OpenPreview();" style="text-decoration: none">
<input type="submit" name="preview" value="Valider">
<input type="reset" value="Effacer"><p>
<a href="aff-depouil.php"><img src="aff-depouil.JPG" border="0"></a></form></div>
</center>
</body></html>

Mais si après avoir enregistré le message je veux le modifier en utilsant les options de gras, souligné .... cela ne fonctionne pas !

<html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset">
<head>
<style type="text/css">
a {color:black; text-decoration:underline;}
a:hover {color:red; text-decoration:underline;}
</style>
<script language="javascript">
function storeCaret(ftext) {
if (ftext.createTextRange) {
ftext.caretPos = document.selection.createRange().duplicate();
}
}

function OpenPreview()
{
document.getElementById('resultat').innerHTML = "<u>APERCU DU MESSAGE :</u><p>" + document.getElementById('Message').value;
return true
}


function TAinsert(text1,text2) {
var ta = document.getElementById('Message');
var ta2= document.getElementById('Message2');

if (document.selection) {
var str = document.selection.createRange().text;
ta.focus();
var sel = document.selection.createRange();
if (text2!="") {
if (str=="") {
var instances = countInstances(text1,text2);
if (instances%2 != 0) sel.text = sel.text + text2;
else sel.text = sel.text + text1;
} else sel.text = text1 + sel.text + text2;
} else sel.text = sel.text + text1;
} else if (ta.selectionStart || ta.selectionStart == 0) {
if (ta.selectionEnd > ta.value.length) ta.selectionEnd = ta.value.length;
var firstPos = ta.selectionStart;
var secondPos = ta.selectionEnd+text1.length;
var contenuScrollTop = ta.scrollTop;

ta.value=ta.value.slice(0,firstPos)+text1+ta.value.slice(firstPos);
ta.value=ta.value.slice(0,secondPos)+text2+ta.value.slice(secondPos);

ta.selectionStart = firstPos+text1.length;
ta.selectionEnd = secondPos;
ta.focus();
ta.scrollTop = contenuScrollTop;
} else { // Opera
var sel = document.PostTopic.Message;
var instances = countInstances(text1,text2);
if (instances%2 != 0 && text2 != "") sel.value = sel.value + text2;
else sel.value = sel.value + text1;
}
}
</script>
<body bgcolor="#FFCCFF"><center><p>
<font color="green"><div class="apercu" name="resultat" id="resultat" value= "resultat" style="width: 894; height: 41">
</div></font>
Surligner le champs, puis sélectionner le format :<p>
<a href="#" onclick="TAinsert('<b>','</b>');OpenPreview();" style="text-decoration: none"><b>Gras </b></a> -
<a href="#" onclick="TAinsert('<i>','</i>');OpenPreview();" style="text-decoration: none"><i>Italique </i></a> - 
<a href="#" onclick="TAinsert('<u>','</U>');OpenPreview();"><u>Souligné</u></a>
<br>

<?php include ('../../connexion/connexion.php'); 

$id = $_GET["id"];

$result=mysql_query("SELECT date, message FROM depouillement WHERE id='$id'");

if ($row=mysql_fetch_array($result)) {
   echo "<form action=\"maj_bd.php\">";
   echo "<input type=hidden name=\"id\" value=$id>";
   echo '<textarea name="date" cols="20" rows="1">'.$row['date'] .'</textarea><br> ';
   echo '<textarea name="message" cols="65" rows="8">'.$row['message'].'</textarea><br> ';
   echo '<input type="button" value="Aperçu" onclick="TAinsert;OpenPreview();" style="text-decoration: none">';
   echo '<input type=submit value="Modifier">';
   echo '<input type="reset" value="Annuler"><br>';
   echo '<a href="aff-depouil.php"><img src="retour.JPG" border="0"></a>';
   echo "</form>";
} else {
   echo "Cet enregistrement est inconnu<br>";
  mysql_close();
}
exit;
?>
</body></html>

Merci de m'aider à rendre opérationnel le modification du texte (2° script)

Publicité
zoulouman
 Posté le 21/10/2020 à 19:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

J'ai pas compris la question.

Par contre, il semblerait que ton truc soit vulnérable aux injections SQL.

Jean-Pierre
 Posté le 21/10/2020 à 21:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Mais si, tonton Zouzou : tout est Ok sauf s'il ressort un message et l'édite avec par exemple du bold, etc.

Moi j'ai regardé le code source de ses pages et

Doit y avoir un mix d'includes... ça donne par exemples plusieurs <body> entre autre.

Je ne parle pas du DocType datant de l'âge de Pierre et Paul.

Pas mal de choses à reprendre ! (Hein ? moi aussi ? oui je sais )

Licette et JP

midnightblue
 Posté le 22/10/2020 à 14:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Pourquoi pas des BBcodes...

*µ*

t14
 Posté le 22/10/2020 à 15:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour midnightblue. C'est ce que je fais avec le BBcodes. Je pensais trouver une autre solution !



Modifié par t14 le 22/10/2020 15:52
Jean-Pierre
 Posté le 24/10/2020 à 12:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Tiens, Bébert la Carpe qui rapplique

.

t14, sans plus de précisions de ta part, ton souci n'est pas prêt d'être raie aux lues !

Si tu nous disais :

Ta mise en forme s'applique t'elle bien à l'édition mais pas après avoir enregistré ?

Auparavant tout fonctionnait impec ?

Et si tu plaçais au moins un DocType UTF-8 correct et encodais ces pages en UTF-8 sans BOOM, ça donnerait quoi ensuite ?

Licette et JP

t14
 Posté le 24/10/2020 à 16:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Jean-Pierre a écrit :

Tiens, Bébert la Carpe qui rapplique

.

t14, sans plus de précisions de ta part, ton souci n'est pas prêt d'être raie aux lues !

Si tu nous disais :

Ta mise en forme s'applique t'elle bien à l'édition mais pas après avoir enregistré ?

Auparavant tout fonctionnait impec ?

Et si tu plaçais au moins un DocType UTF-8 correct et encodais ces pages en UTF-8 sans BOOM, ça donnerait quoi ensuite ?

Licette et JP

Merci ! La mise en forme s'applique très bien à la saisie. Mais si on veut modifier le texte, pas moyen d'apporter des modifications tels que gras ou souligné !

Jean-Pierre
 Posté le 24/10/2020 à 17:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Donc cela est en rapport avec l'enregistrement en moulinette MySQL !

En ce domaine je n'y connais rien, mais cibler la faille est déjà un pas appréciable.

De plus tu as oublié une chose...

Tu ne vas pas me dire que toi aussi, tout comme Bébert la Carpe ; tu es constipé du clavier ?

Licette et JP

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
29,90 €Routeur TP-Link Archer C6 Gigabit et Wifi double bande AC à 29,90 €
Valable jusqu'au 03 Décembre

Amazon fait une vente flash sur le routeur TP-Link Archer C6 qui passe à 29,90 € livré gratuitement. On le trouve ailleurs à partir de 40 €. Ce routeur dispose de 5 ports Ethernet Gigabit, du WiFi 802.11 AC sur 2 bandes (délivre des débits combinés allant jusqu’à 1.2Gbps). Vous pouvez le convertir en point d'accès pour partager votre réseau filaire avec d'autres appareils WiFi.


> Voir l'offre
79,99 €Ecouteurs intra-auriculaires sans fil Bluetooth Jabra Elite 65t à 79,99 €
Valable jusqu'au 03 Décembre

Amazon fait une promotion sur les écouteurs intra-auriculaires sans fil Bluetooth Jabra Elite 65t qui passent à 79,99 € livrés gratuitement. On les trouve ailleurs à partir de 100 €. Côté son, l'égaliseur personnalisable vous permet d'ajuster le rendu sonore tandis que la technologie avancée à quatre microphones supprime les bruits de fond lors des appels pour des conversations limpides. Au quotidien, ces écouteurs Jabra restent parfaitement en place et proposent même une fonction de commande vocale simplifiée. E

nfin, vous apprécierez les 5 heures d'autonomie avec une seule charge, qui se transforment en 15 heures avec l'étui de recharge compact.  Le Jabra Elite 65t est certifié IP55 et offre une garantie de 2 ans contre l’humidité et la poussière. Où que vous soyez et quelle que soit votre activité, vous profitez d’une liberté absolue pour les appels et la musique. 


> Voir l'offre
59,99 €Switch Netgear GS116, 16 ports à 59,99 €
Valable jusqu'au 04 Décembre

Amazon propose actuellement le commutateur 16 ports Netgear GS116E-200PES à 59,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 100 €. Ce switch bénéficie de 16 connexions Ethernet haut débit commutées à 10/100/1000 Mbps en full-duplex ce qui vous permet de transférer vos fichiers sur votre réseau local à une vitesse maximum sur chaque port (jusqu'à 2000 Mbits/s). Compatible VLAN, le Netgear GS116 vous permettra également de mettre en place des réseaux locaux virtuels à l'intérieur de votre réseau local afin de mieux répartir votre bande passante et mieux gérer les priorités. Le produit est garanti 5 ans !


> Voir l'offre

Sujets relatifs
Dreamweaver CS3, annuler le texte en gras
Sortir un texte en gras dans une boite de dialogue
Ecrire en gras des titres sur site
modification de http en https sur tout un site simultanément
Site (en) français qui vend des forums ?
Aligner des titre et du texte horizontalement
Etude sur les salaires des dev PHP en France
Gestion des condition en php
Je reçois des courriers bizarres en retour .. A l'
respecter les espaces dans un texte en php
Plus de sujets relatifs à Modification d''un texte enregistré en y mettant des option (gras......)
 > Tous les forums > Forum Forum des Webmasters