Formater texte php avec liens inclus.

t671 -  
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Dans un formulaire de saisie de texte, celui-ci peut contenir un lien (style http://.........). Le texte est enregistré dans un base de donnée.
A la demande, ce texte est afficher à l'écran, et je voudrais que le lien contenu soit cliquable.

Alors, vaut-il mieux formater le texte avant enregistrement pour rendre le lien cliquable, ou vaut-il mieux rendre le lien cliquable à l'affichage (donc formater le texte pour l'affichage) ?

Comment écrire l'une et l'autre solution ?

Merci d'avance pour l'aide apportée !
A voir également:

7 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
il vaut mieux ne pas formater les données avant de les stocker, ça bloquerait les évolutions et ré-utilisabilité du code.
La tu enregistres et récupères des données que tu exploite et reformates par la suite, c'est bien mieux et plus évolutif .
Comment écrire l'une et l'autre solution ?
Mmmm je vois pas bien ton problème la...
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Merci Zep3k!GnO.
OK ! Donc le texte est saisi, et contient un lien à l'intérieur.
Je ne formate pas le texte à l'enregistrement dans la base.
Mais à l'affichage du texte à l'écran, je voudrais que le lien contenu dans le texte soit cliquable.
Comment faire ?
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
Heuu, bin tu le mets en lien (j'suis pas sur que ca soit ça, car c'est assez basique) :
Genre :
$sSqlQuery = "SELECT lien FROM 'TA_TABLE' WHERE id = 'TON_ID' ";
$mRet = mysql_query($sSqlQuery) or die('Error mysql query : '.$sSqlQuery.' -> '.mysql_error());
if(mysql_num_rows($mRet) > 0){
  while($aLinkData = mysql_fetch_assoc($mRet)){
     echo "<br/><a href='".$aLinkData['lien']."' >".$aLinkData['lien'].'</a>';
  }
}


C'est ça que tu voulais ?
A noter qu'il faut remplacer ma requête par la tienne...
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Oui, mais dans ta requête, le lien est bien défini et isolé par rapport au texte.
Mais si le lien est noyé dans le texte ???

J'ai trouvé une solution qui est :
$chaine = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])",
"<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\">\\1://\\2\\3</A>",$chaine);


mais à l'enregistrement, rien n'est écrit dans la base ! Je me demande si il faut modifier le format de ma base ???
0

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

Posez votre question
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
Si le lien est noyé dans le texte, il faut faire comme tu as fais pour le rendre cliquable, le détecter avec une regexp, tu fais un preg_replace par exemple et hop c'est bueno :)

P.S: attention eregi est deprecated depuis Php 5 ...


Zep3k!GnO
On est des rangers mec, des rangers...
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Oui, et si je l'utilise pour un site hébergé chez Free, c'est ok !
Mais si je mets la formule chez un autre hébergeur, ça ne fonctionne pas, l'enregistrement ne se fait pas ! Si je supprime la formule, le texte s'enregistre ... !!!!!!

Comment remédier à cela ???
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Problème résolu ....
Avant ça ne fonctionnait pas, maintenant ça fonctionne. Et j'ai rien changé ....!!!! ????

;o))

A++
0