Page 1 sur 1

lire une text area ligne par ligne ?

Posté : 12 oct. 2009, 22:44
par keviin1988
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 .

Re: lire une text area ligne par ligne ?

Posté : 13 oct. 2009, 07:36
par stopher
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.

Re: lire une text area ligne par ligne ?

Posté : 13 oct. 2009, 20:10
par keviin555
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

Re: lire une text area ligne par ligne ?

Posté : 13 oct. 2009, 20:44
par stopher
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 .

Re: lire une text area ligne par ligne ?

Posté : 13 oct. 2009, 20:56
par AB
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).

Re: lire une text area ligne par ligne ?

Posté : 13 oct. 2009, 22:02
par AB
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 />'; 
}
}

Re: lire une text area ligne par ligne ?

Posté : 13 oct. 2009, 23:34
par keviin555
Suuuper !! ça marche à merveille !
vraiment merci beaucoup !