Comment comptabiliser les sauts de lignes dans un champs mysql de type text ??

Résolu
WizardNx Messages postés 28 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 28 juin 2011 - 28 oct. 2005 à 15:50
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006 - 28 oct. 2005 à 21:48
Salut !



C'est un probleme que je n'arrive pas à solutionner.

J'utilise des champs à plusieurs milliers de caractères pour des
descriptions, donc bien entendu je les stock dans la base de données
dans des champs de type text. Le probleme est que je n'arrive pas à
prendre en compte les sauts de ligne.



Je sais que c'est possible, j'ai déjà vu celà.



Quelqu'un sait il comment je pourrai faire ? Ou au pire quel subterfuge je pourrai employer ?



C'est plutôt urgent, je n'ai pas assez de temps pour réflechir à un
script contournant le probleme ou refaire complétement la structure de
la gestion des données...



Merci beaucoup.

WizardNx.

18 réponses

monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
28 oct. 2005 à 16:09
Moi je préfère une autre solution :

- un formulaire envoi des données par méthode POST s'il y en a beaucoup

- je nettoie les variable de leur slashes (avec stripslashes()) si le paramètre de configuration magic_quotes_gpc est activé (j'utilise get_magic_quotes_gpc())

- et j'échappe les caractères avec une fonction prévue pour : mysql_real_escape_string() ou mysql_escape_string() si la première n'existe pas



Et avec ça je n'ai jamais eu de problème de sauts de lignes.



Evidemment, lors de l'affichage du text dans un document html, il faut rajouter htmlentities() d'abord, et nl2br() ensuite =)
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
28 oct. 2005 à 15:59
Salut, homme pressé...



La sauvegarde des sauts de ligne ne pose aucun problème, du moment que
tu encapsule le texte entre des guillemets dans ta requètes SQL



INSERT INTO `test` (text) VALUES ("un texte tout bète\nsur deux lignes");



ET que tu échapes les guillemets contenus dans le texte



$texte = 'un texte avec des "guillemes"';

$sql = 'INSERT (text) (text) VALUES ("'.addslashes($text).'");';





Si ça ne marche toujours pas (quelle base de données utilises-tu?), connais-tu les champs de type BLOB ?

(idem que TEXT mais au format binaire)



Bonne chance



PS : solutionner !?! résoudre, non ?
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
28 oct. 2005 à 16:01
fautes de frappes...



$texte = 'un texte avec des "guillemets"';

$sql = 'INSERT INTO `test` (text) VALUES ("'.addslashes($text).'");';





désol'
0
cs_JUL14 Messages postés 2 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 28 octobre 2005
28 oct. 2005 à 16:02
les sauts de lignes sont \n ou \r\n



tu fais un strreplace de ça par
avant d'afficher
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
28 oct. 2005 à 16:02
Tu utilises MySQL (je ne lis jamais les titres)

Donc aucun problèmes avec les sauts de ligne



(le problème est ailleur !!)
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
28 oct. 2005 à 16:10
Voilà...



là je crois que tout est dit ;)
0
WizardNx Messages postés 28 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 28 juin 2011 1
28 oct. 2005 à 16:17
arf non

Je sais que le saut de ligne c'est \n



Je me suis mal expliqué mea culpa.



Un utilisateur quelquonc rempli un formulaire, et dans un champs de
texte (à la limite comparons ca à un poste de forum, ca s'en
rapproche). Il met des sauts de ligne normaux (par exemple sur ce forum
quand je laisse un message je n'ai pas besoin d'ecrire \n ou

pour aller à la ligne) donc en invisible chr$(10)+chr$(13). Il
enregistre en appuyant sur le submit du formulaire...



Et là donc je récupère et enregistre dans la base de donnée, un truc
tout con donc et ensuite jfais la requete mysql pour l'enregistrer .

En gros ca donne ca :

$texte = $_POST['champs_text];

$query = mysql_query("insert into `la_table` (`text` values '$texte')");



Mais les sauts de ligne tapés dans le champs ne sont pas gardés... Et j'en ai besoin. Vouala.



Merci.

WizardNx.
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
28 oct. 2005 à 16:20
Sisi c'est obligé =)

Qu'est-ce qui te fait dire le contraire?
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
28 oct. 2005 à 16:24
Oui, oui, oui...



Les sauts de lignes tapés dans le champ (textarea) sont bel et bien concervé !!!



SAUF QUE ces sauts de ligne sont juste des '
' (et non des \n)



La procédure décrite par monoceros est bonne, suit la pas-à-pas



Bonne chance...



PS :

insert into `la_table` (`text` values '$texte')

n'est pas vraiment ce qu'on appelle une requète SQL valide... Mais bon, ça marche quand même
0
WizardNx Messages postés 28 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 28 juin 2011 1
28 oct. 2005 à 16:24
Ah merci monoceros01 !!



C'est impecc ca marche nickel !

En fait je devais passer les htmlentities() nl2br() ! Je ne connaissais pas ces fonctions, c'est impeccable !



Merci beaucoup.

@+

WizardNx.
0
WizardNx Messages postés 28 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 28 juin 2011 1
28 oct. 2005 à 16:25
Excusez moi mais pour ma première réponse, je l'ai tapé pendant que
monoceros répondait et je n'avais pas encore vu sa réponse à ce moment
là (comme je code à coté en meme temps aussi).

Sinon je confirme que c'est bien ca !



Merc beaucoup.



@+

Nx.
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
28 oct. 2005 à 16:26
XD évidemment, ton navigateur n'interprête pas les \n.... c'est pourtant connu <_<
0
WizardNx Messages postés 28 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 28 juin 2011 1
28 oct. 2005 à 16:30
Arf lol J_G, je sais que c'est pas valide, j'ai tapé comme ca à la
bourrin juste pour vous montrer comme je m'y prenais pour l'enreg, car
au début je soupconnais ma variable string en fait de ne pas conserver
les retours chariots (alors qu'en fait si) et j'en suis venu à me
demander plein de chose...



Faut excuser ma lenteur d'esprit aujourd'hui et lenteur tout court, ca
fait environ 37h maintenant que je bosse sans interruption (juste pour
me servir le café et pour allez aux chiottes), et j'en peux vraiment
plus.



En tout cas merci.

Nx.
0
WizardNx Messages postés 28 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 28 juin 2011 1
28 oct. 2005 à 16:35
Il interprete les \n dans son code sisi, mais pas dans le formatage de
la page ui ca je sais c'aurait été trop beau... et surtout tout et
n'importe quoi ;)

Le truc c'est qu'il n'y a aucun \n dans la chaine de caracteres qui
passe en methode POST (sinon j'aurai codé en 2 ligne un truc qui
remplace les \n par des
), ce sont des chr$(10) et (13),
retour à la ligne et retour chariot, le \n c'est pas le même niveau
d'interpretation...



Enfin bref, jte remercie beaucoup encore une fois ;)

J'y retourne !

@+

Nx.
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
28 oct. 2005 à 16:40
37 H non-stop !!!



C'est ça qu'est bon avec l'informatique... on peut faire
une semaine (légale) de travail en une traite, et sans-même s'en rendre
compte...



Quel long WE en perspective pour toi :)
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
28 oct. 2005 à 16:44
Et c'est là.... la tuile!

...



Il a oublier d'pointer O_O
0
WizardNx Messages postés 28 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 28 juin 2011 1
28 oct. 2005 à 21:11
Vui :)

Et là j'y suis encore... jcrois que je viens de battre mon propre
record (c'était 38h sur une scène 3d en décollant de l'ecran que pour
aller pisser)

Le pire c'est que j'ai meme pas sommeil ! (avec les litres de café que j'ingurgite c'est pas étonnant)...



:D
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
28 oct. 2005 à 21:48
Ouai j'connais, j'avais des rattrapages fin Août et je bossais en même
temps en nuit.... c'était folklo! XD (mais le tout sans une goutte de
café ;p )
0
Rejoignez-nous