Ajouter du texte a un texte

Eléphant du PHP | 258 Messages

07 nov. 2006, 13:41

Bonjour a tous.

Bon voila j'ai une page admin ou l'on peut ajouter des liens .

L'utilisateur entre l'adresse de son site (exemple :www.sonsite.fr) qui et desuite enregistrer dans une table 'tliensI' qui contient 2 champs un 'IDLI' qui et auto acrementé et un autre 'TITliensI' qui contient 'www.sonsite.fr',
bon jusque la tout va bien.

Enfaite ,c'est quand je veut les afficher que sa se complique, bon je les recupere de la table et je pourais les afficher comme sa sauf qui si on appuis dessus sa ne fera rien dans j'ai recuperé un fonction javascript qui permet ajouter du texte au texte.

Code : Tout sélectionner

<script language="JavaScript" type="text/javascript"> function AddText(startTag,defaultText,endTag) { with(document.poster) { if (message.createTextRange) { var text; message.focus(message.caretPos); message.caretPos = document.selection.createRange().duplicate(); if(message.caretPos.text.length>0) { //gère les espace de fin de sélection. Un double-click sélectionne le mot //+ un espace qu'on ne souhaite pas forcément... var sel = message.caretPos.text; var fin = ''; while(sel.substring(sel.length-1, sel.length)==' ') { sel = sel.substring(0, sel.length-1) fin += ' '; } message.caretPos.text = startTag + sel + endTag + fin; } else message.caretPos.text = startTag+defaultText+endTag; } else message.value += startTag+defaultText+endTag; } } </script>
Puis apres j'essais d'ajouter du texte pour obtenir un lien, + unboucle while pour m'afficher toute les enregistrements de la table:
<?php while ($row_RTliensI = mysql_fetch_assoc($RTliensI)) 
			 $TITlienI=$row_RTliensI['TITliensI'];
			  {
			 echo "<script>AddText('<a href=\"http://','$TITlienI\">$TITlienI','</a>');</script>"; 
			 } ?>
Afin d'obtenir ceci:
<a href="http://www.sonsite.fr">www.sonsite.fr</a>

Mais evidament sa ne marche pas, quelqu'un a une idée.

Merci d'avance.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 nov. 2006, 13:56

Je ne comprend absolument pas ce que tu veux faire, ou alors tu essayes de faire un truc bien compliqué pour quelque chose d'assez simple au final.

Tu n'as apparement pas compris comment fonctionne ta fonction javascript AddText ni à quoi elle sert... peut être serait il interessant de commencer par là.

- Son but est de permettre lors de la saisie dans un champ texte, d'encapsuler la partie du texte surligné de marqueurs BBCode.
- Le BBCode a pour but de permettre aux utilisateur de mettre leur texte en forme sans leur permettre de coller du html (et donc de faire n'importe quoi)
- Ceci t'oblige donc lors de l'affichage de remplacer le bbcode que tu tolères par le code html correspondant

Pourquoi donc vouloir repasser par du bbcode, et de la transformation de balise sur une valeur dans laquelle l'utilisateur ne doit pas avoir saisie de mise en forme ? pourquoi ne pas ajouter simplement et directement tes balises de lien lors de l'affichage ?
while (...) {
  echo '<a href="' . $url . '">' . $url . '</a>';  
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

07 nov. 2006, 15:48

Merci ryle de me remettre dans le droit chemin ,c'est vrai que je suis parti loin ce coup ci, alors que c'etait tout simple .


Par contre ma boucle while ne marche pas.
Sa ne m'affiche qu'un enregistrement.
//Sélection de la base de donnée pour affichage du texte 
mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_RTliensI = "SELECT * FROM tliensI ";
$RTliensI = mysql_query($query_RTliensI, $Debaseconnect) or die(mysql_error());
$totalRows_RTliensI = mysql_num_rows($RTliensI);

//et plus loin ma boucle

<?php while ($row_RTliensI = mysql_fetch_assoc($RTliensI)) 
			 $TITlienI=$row_RTliensI['TITliensI'];
			  {
			 echo '<a href="http://'.$TITlienI.'">'.$TITlienI.'</a>';
			 } ?>



Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 nov. 2006, 15:54

En indentant le code un peu plus proprement (et avec un p'tit peu plus d'attention ;)) tu aurais vu tout de suite ce qui n'allait pas :
<?php 
while ($row_RTliensI = mysql_fetch_assoc($RTliensI))  
  $TITlienI=$row_RTliensI['TITliensI']; 
{ 
  echo '<a href="http://'.$TITlienI.'">'.$TITlienI.'</a>'; 
} 
?>
Alors il boucle bien, il exexute bien ton unique instruction, écrase la valeur à chaque itération et quand il a terminé, il t'affiche une valeur qui correspond vraissemblablement à la dernière valeur qui n'a pas été écrasé ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

07 nov. 2006, 16:01

Ok il fau donc que j'enleve
$TITlienI=$row_RTliensI['TITliensI'];
Et que je face sa :
<?php while ($row_RTliensI = mysql_fetch_assoc($RTliensI)) 
			  {
			 echo '<a href="http://'.$row_RTliensI['TITliensI'].'">'.$row_RTliensI['TITliensI'].'</a>';
			 } ?>
En tout cas sa marche merci ryle.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 nov. 2006, 16:15

Sans forcément l'enlever, tu pouvais également le mettre à l'interieur des accolades :)

En fait les accolades ont pour but de regrouper un ensemble d'instructions. Si tu ne les mets pas, c'est uniquement la prochaine instruction qui est affecté :)

Toutes ces instructions reviennent au même :
<?php  
while ($row_RTliensI = mysql_fetch_assoc($RTliensI)) {  
  $TITlienI=$row_RTliensI['TITliensI'];  
  echo '<a href="http://'.$TITlienI.'">'.$TITlienI.'</a>';  
}  

while ($row_RTliensI = mysql_fetch_assoc($RTliensI)) {  
  echo '<a href="http://'.$row_RTliensI['TITliensI'].'">'.$row_RTliensI['TITliensI'].'</a>';
}  

while ($row_RTliensI = mysql_fetch_assoc($RTliensI))
  echo '<a href="http://'.$row_RTliensI['TITliensI'].'">'.$row_RTliensI['TITliensI'].'</a>';
?>
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

07 nov. 2006, 16:20

Ok merci pour ces précisions, j'essairais de faire gaf la prochaine fois.