Textarea inexploitable
Résolu
ephelya
Messages postés
282
Date d'inscription
Statut
Membre
Dernière intervention
-
ephelya Messages postés 282 Date d'inscription Statut Membre Dernière intervention -
ephelya Messages postés 282 Date d'inscription Statut Membre Dernière intervention -
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 :
A ce stade, print_r($whole) m'affiche bien : Array ( [0] => ligne1 [1] => ligne2 [2] => ligne3 )
Donc je mets les infos dans ma base :
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
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!)
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
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
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 :-)
$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 :-)