compteur dans un text area !!

xavioche
Invité n'ayant pas de compte PHPfrance

05 mai 2010, 16:42

Rebonjour, voici mon probleme.
J'ai un text area avec des lettres dedans.

$contenu est une suite de caracteres.

<textarea name="descrip" cols="50" rows="7"><?=$contenu;?></textarea>


Je souhaiterais mettre une:sorte de compteur pour savoir ou j'en suis dedans comme sur l'exmple suivant;



1.........11........21........31........41........51........61........71........
GAAGCUGACCAGACAGUCGCCGCUUCGUCGUCGU
81........91........101.......111.......121.......131.......141.......151.......
AGGGCAGGGUGCCAGGUAACGCCUGGGGGGGAAAC
s
Bon le forum formate les choses selon ses envie alors l'exemple est faux mais en gros c est ca.
Mettre une sorte de compteur de 10 en 10 une ligne sur deux et que le tout fasse la longueur de ma variable..

Si vous savez comment faire
je vous remercie

ViPHP
AB
ViPHP | 5818 Messages

05 mai 2010, 17:26

En php la fonction pour trouver la longueur d'une chaine de caractères est : strlen ou mb_strlen

Mais je suppose que tu voudrais un compteur en temps réel qui indique le nombre de caractères quand tu écris dans ton textarea.
Dans ce cas ça se fait en javascript : var nb_caracteres = document.getElementById('id_du_textarea').value.length;

Invité
Invité n'ayant pas de compte PHPfrance

06 mai 2010, 10:22

en fait personne n' écrit dans le text area.
c est une varriable qui le remplit.

En fait c peut etre pas pertinent de faire un text area.
Donc non, c'est pas en temps réel.
Mais la variable n'a pas la même longueur a chaque fois.

1.........11........21........31........41........51........61........71........
GAAGCUGACCAGACAGUCGCCGCUUCGUCGUCGU

peut etre faire une boucle et tout les 10 affichier le nombre suivi de 9 petit point mais il faut que j écrive cette ligne de compteur une ligne sur deux .
arf
je vois pas trop. Je vais faire des test a l'aveuglette

xavioche
Invité n'ayant pas de compte PHPfrance

06 mai 2010, 10:58

euh c était de moi le dernier message
jai oublié de mettre un nom d'utilisateur ^^

ViPHP
AB
ViPHP | 5818 Messages

06 mai 2010, 17:48

En fait c peut etre pas pertinent de faire un text area.
Heu non c'est pas pertinent, c'est même handicapant.

A ta place j'utiliserrai la fonction str_split pour convertir ta chaine de caractères dans un tableau.
Ensuite tu liste le résultat dans un tableau. Rapidement :
<?php $str = 'azertyuiopqsdfghjklmwxcvbn';
$tab_str = str_split($str);
?>
<table border="1">
  <tr>
  <?php 
  foreach ($tab_str as $key => $value)
  {
	  $indice = $key + 1;
	  echo '<td>';
	  if ($indice == 1 || $indice%10 == 0) echo $indice;
	  echo '<br />';
	  echo $value;
	  echo '</td>';
  }
  ?>
  </tr>
</table>

xavioche
Invité n'ayant pas de compte PHPfrance

07 mai 2010, 11:51

merci ca marhce
c parfait
par contre j essaye juste de rajouter un saut de ligne tout les 60 caracteres par exemple.

<?php
$contenu='AGAGUUUGAUCAUGGCUCAGAUUGAACGCUGGCGGCAGGCUUAACACAUGCAAGUCGAGCGGUAGCACAGGGGAGCUUGCUAUGGCUCAGAUUGAACGCUGGCGGCAGGCUUAACACAUGCAAGUCGAGCGGUAGCACAGGGGAGCUUGCUCCCCGGGUGACGAGCGGCGGACGGGUGAGUAACCCCGGGUGACGAGCGGCGGACAUGGCUCAGAUUGAACGCUGGCGGCAGGCUUAACACAUGCAAGUCGAGCGGUAGCACAGGGGAGCUUGCUCCCCGGGUGACGAGCGGCGGACGGGUGAGUAAGGGUGAGUAAU';
$str = $contenu;
$tab_str = str_split($str);
?>
<table border="1">
<tr>
<?php
foreach ($tab_str as $key => $value)
{
$indice = $key + 1;
echo '<td>';
if ($indice == 1 || $indice%30 == 0) echo $indice;
if ($indice%60 == 0) echo '<tr>';

echo $value;
echo '</td>';
}
?>
</tr>
</table>

j'ai donc juste rajouter cette ligne if ($indice%60 == 0) echo '<tr>';
je comprend pas ca me fait ce que je veux mais ca écrit également quelque lettre de $contenu en dehors du tableau. Alors que selon moi rien ne devrait sortir du tableau.

ViPHP
AB
ViPHP | 5818 Messages

07 mai 2010, 17:00

Dans ton exemple tu ouvres des lignes à l'intérieur de cellules... c'est pas la bonne syntaxe.

Tu as des explications ici pour bien construire ton tableau.

Eléphant du PHP | 170 Messages

07 mai 2010, 19:57

Bonsoir,

une autre solution sans tableau :
<?php
$contenu='AGAGUUUGAUCAUGGCUCAGAUUGAACGCUGGCGGCAGGCUUAACACAUGCAAGUCGAGCGGUAGCACAGGGGAGCUUGCUAUGGCUCAGAUUGAACGCUGGCGGCAGGCUUAACACAUGCAAGUCGAGCGGUAGCACAGGGGAGCUUGCUCCCCGGGUGACGAGCGGCGGACGGGUGAGUAACCCCGGGUGACGAGCGGCGGACAUGGCUCAGAUUGAACGCUGGCGGCAGGCUUAACACAUGCAAGUCGAGCGGUAGCACAGGGGAGCUUGCUCCCCGGGUGACGAGCGGCGGACGGGUGAGUAAGGGUGAGUAAU';

$lg_contenu = strlen($contenu);
$regle = '1.........';

for($i=11; $i<=$lg_contenu; $i+=10)
{
	$regle .= str_pad($i, 10, '.');
}

echo '<pre>';
for($j=0; $j<=$lg_contenu; $j+=60)
{
	echo substr($regle, $j, 60),"\n",substr($contenu, $j, 60),"\n\n";
}
echo '</pre>';

?>

xavioche
Invité n'ayant pas de compte PHPfrance

10 mai 2010, 11:36

cool j opte pour la solution sans tableau.
Ca fait exactement ce qu'il faut.
Merci les gens.

ps: je sais pas mettre le sujet en résolu mais c est résolu :s