lire une text area ligne par ligne ?

keviin1988
Invité n'ayant pas de compte PHPfrance

12 oct. 2009, 22:44

Salut,
es que je peut lire une text area ligne par ligne et mettre à chaque fois la ligne lu dans une variable php que j'insérerai dans une table ?
merci d'avance .

ViPHP
ViPHP | 1136 Messages

13 oct. 2009, 07:36

Salut ,

Dans un textarea , chaque fin de ligne , est un retour chariot , tu peux donc découper le contenu ...
$tLignes  =  explode("\n",$_POST['valtextarea']);
Good luck ,
Ch.

keviin555
Invité n'ayant pas de compte PHPfrance

13 oct. 2009, 20:10

Salut,
j'ai écrit se bout de code
<?php

if(isset($_POST['valtextarea']))
{
$tLignes  =  explode("\n",$_POST['valtextarea']);
$i=0;
$l=0;
while($l<15&&$i<30)
{
$length=strlen($tLignes[$i]);
if($length>1)
{echo $tLignes[$i]; $l++;}

$i++;
}
echo $l.'link have been added' ;
}
else
{
?>
<html>
<body>
<form name="m" action="links.php" method="post">
<TEXTAREA name="valtextarea"></textarea>
<input type="submit" name="sub" value="sub">
</form>
</body>
</html>
<?php
}
?>
il y a un problème au niveau de
$length=strlen($tLignes[$i]);
if($length>1)
sa retourne une erreur quand a ligne est vide .Moi je veut lire une text area ligne par ligne , si la ligne n'est pas vide je l'affiche et je veut afficher au maximum 15 ligne et vérifier au maximum 30 ligne
merci de m'aider

ViPHP
ViPHP | 1136 Messages

13 oct. 2009, 20:44

Voilà comment tu peux faire ..

ton erreur est à mon avis , un warning .. n'hesites pas à les poster pour que nous puissions plus facilement t'aider ..
//simulation de ton textarea
$ch = "un\ndeux\n\ntrois";

//decoupage ligne par ligne
$Tch    =   explode("\n",$ch);

for($i=0;$i<count($Tch);$i++){
    
    echo $Tch[$i];
    
   //si l'on arrive à la 15eme ligne , on quitte même s'il en reste ... 
    if($i==14){
        break;
    }
}
Good luck ,

ch .

ViPHP
AB
ViPHP | 5818 Messages

13 oct. 2009, 20:56

Salut ,

Dans un textarea , chaque fin de ligne , est un retour chariot , tu peux donc découper le contenu ...
Attention, c'est vrai uniquement dans le cas où l'on met wrap="hard" à l'intérieur de la balise textarea. Et pas certain que ce soit compatible avec tous les navigateurs (normalement ok pour IE et FF mais à vérifier pour le reste).

ViPHP
AB
ViPHP | 5818 Messages

13 oct. 2009, 22:02

Salut ,

Dans un textarea , chaque fin de ligne , est un retour chariot , tu peux donc découper le contenu ...
Attention, c'est vrai uniquement dans le cas où l'on met wrap="hard" à l'intérieur de la balise textarea. Et pas certain que ce soit compatible avec tous les navigateurs (normalement ok pour IE et FF mais à vérifier pour le reste).
Oui enfin ça dépend de ce que l'on appelle fin de ligne. Au départ je pensais à une ligne correspondant à la largeur du textarea, et non pas une ligne définie par l'utilisateur par un retour chariot (touche entrée).

En regardant de plus près le code de keviin555 je vois "nombres de liens ont été ajoutés" donc effectivement il ne faut pas utiliser wrap="hard" dans la balise textarea sous peine de rompre des liens si l'un d'entre eux est plus long que la largeur disponible du textarea :?

@keviin555 Arf... donc bon pour me faire pardonner cette mauvaise interprétation (c'était pas forcément clair dès le début) je te donne un exemple de code pour récupérer tes lignes jusqu'à un maximum de 15
if(isset($_POST['valtextarea']))
{
$tab_lignes = explode("\n",$_POST['text']);

$tab_lignes = array_map('trim',$tab_lignes);// Enlève les espaces vides
$tab_lignes = array_filter($tab_lignes);// Supprime les éléments vides (= lignes vides)
$tab_lignes = array_slice($tab_lignes,0,15);// Sélectionne les 15 premiers éléments du tableau (soit les 15 premières lignes non vides)

$nb_lignes = count($tab_lignes);

echo 'Total de '.$nb_lignes.' lignes : <br />';
// Affichage des lignes
foreach ($tab_lignes as $value)
{
echo '- '.$value.'<br />'; 
}
}

keviin555
Invité n'ayant pas de compte PHPfrance

13 oct. 2009, 23:34

Suuuper !! ça marche à merveille !
vraiment merci beaucoup !