Textarea inexploitable

Résolu/Fermé
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 17 avril 2013 à 15:48
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 17 avril 2013 à 23:01
Bonjour,

Je m'arrache les cheveux sur un problème de textarea sûrement débile :
j'ai besoin de mettre dans ma base de données les lignes saisies sous la forme ligne1, ligne2, ligne3 etc.

J'ai donc récupéré les infos :
$whole = $_POST['whole'];
$whole = explode("\n", $whole); 


A ce stade, print_r($whole) m'affiche bien : Array ( [0] => ligne1 [1] => ligne2 [2] => ligne3 )
Donc je mets les infos dans ma base :

if ($_POST['addfile']=='on')
 {
         $whole = implode(',' , $whole);
         $misesajour = array('properties' => $whole);
         $criteres = array ('id' => $id);
        update($misesajour, $criteres);
   }


et dans ma base de données ça m'affiche
ligne1
,ligne2
,ligne3
comme si ça avait gardé les \n..

Je précise que mes fonctions d'enregistrements sont bonnes,et que j'ai aussi testé str_replace("\n", ",", $whole), avec le même résultat...

Que ce soit avant l'enregistrement en BDD ou après, je n'arrive pas à récupérer mes informations individuellement, un affichage du type
$infos = explode(',',$infos);
foreach ($infos as $key => $value) { echo "$key : $value";} 

me sort 0: ligne1, ligne2, ligne3

Qu'est-ce que j'ai raté?? Merci d'avance pour votre aide, je bloque là-dessus depuis une heure, et je n'ai trouvé aucune réponse nulle part! :'(

(désolée, j'ai des pbs de connexion, et je ne sais pas si mon premier envoi a fonctionné, j'ai peut-être posté en double!)

2 réponses

Bonjour

Je ne suis pas sûr, mais il se pourrait qu'avec un mac, tes lignes soient séparées par \r\n et non pas simplement \n. Quand tu fais l'explode, il reste un \r à la fin.

Fais un echo strlen($whole[0]) pour voir si 'ligne1' fait 6 caractères ou bien 7.

S'il y a bien un caractère en trop, tu peux l'éliminer entre autres avec trim
0
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
17 avril 2013 à 23:01
Non, ça n'a pas fonctionné, mais j'ai réussi avec

$whole = $_POST['whole'];
$whole = preg_replace("#(\t|\n|\r)+#", ",", $whole);
Merci à Mihawk qui m'a donné la solution (j'avais posté en double par erreur!)

J'ignorais que le code se comportait différemment selon le type d'orinateur, c'est bon à savoir !

Merci pour ton aide, en tout cas :-)
0