xpatval Posté 16 Octobre 2004 Partager Posté 16 Octobre 2004 Bonjour, Je me trouve confronté à un problème d'affichage d'un texte enregistré dans une bdd. Dans celui-ci, certains mots sont modifiés par des balises html, et ont été insérés avec htmlspecialchars. ces balises se trouvent traduites de la sorte: blablabla & l t;em style=& quot;color: #FF9900; & quot;& gt;mon mot& lt;/em& gt; blibli. (j'ai mis des espaces dans les symboles converti, craignant que le post me les retranscrive) Lorsque je souhaite afficher ce texte, celui-ci ne dépasse pas le "=" . (blabla<em style=) .le reste part aux oubliettes. Comment puis-je faire afin d'éviter ce problème. (je ne peux modifier le texte. Seulement l'afficher). merci, xpatval Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 17 Octobre 2004 Partager Posté 17 Octobre 2004 Bonjour, peux tu nous dire ce qui s'affiche exactement dans le code source ? et ce que tu aimerais qui s'affiche sur ta page ? merci ps : en utilisant les crochets, tu peux afficher le code sans problèmes. Passes par le formulaire de 'repondre', et non par 'rep.rapide', et jettes un oeil aux crochets [ + CODE + ]. Lien vers le commentaire Partager sur d’autres sites More sharing options...
xpatval Posté 17 Octobre 2004 Auteur Partager Posté 17 Octobre 2004 Bonjour, En fait, mon souci se posai au niveau de l'affichage d'un texte existant, comportant des balises html codées normalement (c'est à dire avec des doubles-quotes lors de title="..." ou style="...". j'ai résolu ce problème, sans véritablement le résoudre, je m'explique. Le but est d'afficher certains champs (dont un texte) à des fins de modifications. 1: requête pour récupération des valeurs existantes dans le bdd afin de choisir le titre pour lequel le texte est à modifier: <select class="form1" name="mod" onChange="submit()"><?php $sql = "select id_texte, id_langage, titre, texte from texte order by id_texte";$res = mysql_query($sql); while ($i = mysql_fetch_array($res)){ $i['titre'] = stripslashes($i['titre']); ?> <option value="<?php print $i['id_texte'] .'='. $i['id_langage'] .'='. $i'titre'] . '=' .$i['texte'];?>" selected ><?php echo $i['titre'] ;?></option> <?php }?> </select> En tête de script, j'utilise ceci pour récupérer chaque valeur choisie: if ($mod != "") list($id_texte,$id_lg,$titre,$texte) = split("=",$mod); Avec ce principe, je suis infoutu de récupérer la valeur complète de $texte, celle-ci étant tronquée dès la rencontre de la première double-quote de la première balise html. 2: J'ai changé d'optique, en effectuant l'oération en deux requêtes. La première afin de sélectionner le titre. La deuxième afin de récupérer le texte en fonction du titre et affichage. Dans ce cas, cela fonctionne. Je précise que le script fonctionne de la manière suivante: 1: <form><select> choix du titre </select></form> 2: <form><input> le texte à modifier </form> 3 : Update Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 17 Octobre 2004 Partager Posté 17 Octobre 2004 Bonjour, il semblerait que tu ais une erreur dans ta boucle while : while ($i = mysql_fetch_array($res)){ $i['titre'] = stripslashes($i['titre']); ?> <option value="<?php print $i['id_texte'] .'='. $i['id_langage'] .'='. $i'titre'] . '=' .$i['texte'];?>" selected ><?php echo $i['titre'];?></option> <?php } Je préférerais la forme suivante, qui permet de bien différencier les quotes des double quotes, ou apostrophes des guillemets (et inversement ) while ($i = mysql_fetch_array($res)) $i['titre'] = stripslashes($i['titre']); echo "<option value='".$i['id_texte'] ."=". $i['id_langage'] ."=". $i['titre'] . "=" .$i['texte']."' selected >".$i['titre']."</option>";} Tu auras remarqué que j'ai ajouté le 'crochet' qu'il manque dans ton script. (Si c'est un copier/coller, c'est un 'bug'.) => $i'titre'] ? Anonymus. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant