PHP qui se mélange a mon HTML !!! beurk

Fermé
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 17 oct. 2008 à 11:16
 Utilisateur anonyme - 17 oct. 2008 à 16:37
Bonjour tout le monde,

Voila le probleme assez particulier que je rencontre depuis peu...


J'ai un tableau html (ou plutôt un echo php qui appel a un tableau l'html ) ou j'affiche des variables issus de base de donnée grace aune requete....

echo
"<tr>\n
<td>
<span class=titre_cat>$titre</span>
<br><span class=texte>$intro ......</span><br>
</td>
<td>
<center><a href=/a.php?ma=$m&ar=$i target=_blank><font color=green>ouvrir</font></a></center>
<center><a href=\"#\" onClick=\"confirme($id)\" ><font color=red>supprimer</font></a><br></center>\n
</td>
</tr>";

---------tout vas bien ------------


Ces variables sont du style html exemple :

$intro vaut : "<span class=\"texte\"><span style=\"font-weight: bold;\">rr<span style=\"color: rgb(255, 0, 0);\">rr<font size=\"5\">rr<span style=\"text-decoration: "




et si ma variable $intro est un code html mal terminé (balise pas fermé par exemple, comme dans ce cas--> en gras), Et bein le reste de mon tableau devient disforme car a la lecture du code, le "compilateur php" crois que la balise fermante de ma variable se trouve en faite sur ma page...

--- une  petite pause  --- même moi j'ai du mal a suivre ce que je dis -----  reprenons ---


Comment faire pour tronquer et limiter une variable non pas a un nombre limité de valeur mais a un nombre maxi et il faut que la balise html soit fermé.
--> dans mon cas $intro = 130 premiers caractères (code html compris) de $description

je voudrais soit $intro = 130 premier caractères de $description - hors code html uniquement la description - mais garder la mise en forme quand même à l'affichage..

ou $intro=130 premier caracteres maxi html compris mais a la condition que toutes les balises html soient fermés.

ou uine autre solution si vous en connaisez...

MErci a vous !
A voir également:

7 réponses

Utilisateur anonyme
17 oct. 2008 à 13:19
le lien SVP
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
17 oct. 2008 à 13:26
Bonjour.

Je dirais qu'il faut passer par les expressions régulières :
1. Tu coupes à x caractères
2. Tu ne gardes que la partie au format "<balise>*</balise>".

Ceci-dit, j'ai du mal avec le contenu de tes variables...
En général, quand j'ai du texte à insérer, j'utilise :
// J'affiche le contenu html fixe
echo "<p>";
// Ensuite, je récupère le contenu de la variable
echo $mavariable;
// J'affiche le html, bis
echo "</p>";


Pour moi, le problème vient de la logique, pas du contenu de la variable.
Dans ton exemple, tu mets de trucs qui me semblent inutiles : si tu définis une classe pour ton span (span class="texte"), tu n'as pas besoin de mettre des styles. Il suffit de les définir dans le CSS.
Et essaye de ne garder que le contenu variable, dans ta variable. Evite au maximum les balises html.

Ou alors, tu as une bonne raison de claquer du contenu html dans ta variable ?
0
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
17 oct. 2008 à 14:33
bein si tu veux, a la base c'est un champs texte area (remplit par un administrateur) puis envoyé dans ma BDD. ....
par defaut le texte est en span class_texte.
Tout baigne ... si l'admin saisi du texte et l'envoi, je n'aurais que du texte....

Sauf que si l'admin veux mettre en valeur disons les premières lignes, il trouve important de les mettre en rouge, le textarea contient une barre de mise en forme.
Cette mise en form insere en faite les balises necessaires a la mise en forme (couleur style taille ... )
La lors de la validation l'admin envoi dans la bdd le texte et sa mise en form (code html)


Et je ne peux pas utiliser ta methode (que j'utilise d'ailleur un peu partout ..) car la mise en forme peut varier d'un text a un autre...

Et la je suis bloqué ...

un coups c'est --> $var = texte texte texte texte texte
un coups c'est --> $var =<b> texte</b> hier j'ai manger une pomme <color=red>rouge </color> texte <p>texte

la fonction proposé plus bas ne me servira pas car le souci n'est pas de "la tranche de texte que je veux découpé" (0,130), mais que le fait de découpé mon intro prends un coups aucune balise , un coups une balise ouvrante et fermante, un coups une balise ouvrante uniquement

:s

Vous avez d'autres idées par hasard ??
0
Utilisateur anonyme
17 oct. 2008 à 14:06
bonjour,

$intro = substr($description,0,130);
$intro contiendra les 130 premiers caratères de $description.
n.b. 0 et 130 peuvent être parametrés
0
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
17 oct. 2008 à 14:43
salut giheller,

$intro = substr($description,0,130);
$intro contiendra les 130 premiers caratères de $description.
n.b. 0 et 130 peuvent être parametrés

sa ne marchera pas car si un jour j'ai :
$intro vaut : "<span class=\"texte\"><span style=\"font-weight: bold;\">rr<span style=\"color: rgb(255, 0, 0);\">rr<font size=\"5\">rr<span style=\"text-decoration: "

un autre
$intro vaut : "rril était un petit navirrreur il etait un petit navirrrrrrreu il navais ja ja ja jamauis naviguéé il n'avaios ja ja ja jamais navogué ohéééé ohéééééééééééérr<font size=\"5\">rr<span style=\"text-decoration: "


la encore une fois il faudra re décalé le découpage :s ....

je pensais a un truc mais je ne sais pas si sa se fait :

lors de l'enregistrement de mes variables :

mon champs text area riche pour enregistrer mon texte et sa mise en forme avec balises .. normal quoi
et en même temps, un champs masqué qui me recopie uniquement les 130 premier caractères automatiquement sans mise en forme ... mais comment le faire ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
17 oct. 2008 à 14:50
Bonjour,
une autre idée serait de dissocier la mise en forme et le contenu

0
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
17 oct. 2008 à 15:19
oui mais comment ??

La mise en forme est faite par un script javascript directement sur le champs lors de la saisi...
sa n'attend même pas l'envoi du formulaire ...
du coups il fau separer le texte de la MEF en temps réel et encore .... plus rapide que le javascript 8O
0
Utilisateur anonyme
17 oct. 2008 à 16:37
peut être en utilisabt plusieurs variables sui serait ensuite concaténées.
la concaténation de variables vides n'aurait aucun impact

$intro1 = "<span class=\'texte\'><span style=\'font-weight: bold;\'>";
$intro2 = "..
$intro3 = "<span style=\'color: rgb(255, 0, 0);\'>
$intro 4 = rr
$intro5 = "<font size=\'5\'>";


echoi $intro1.$intro2.$intro3. ....
0