Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2008, 22h31   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 10
Points : 10
Par défaut Saut de ligne dans un textarea

bonsoir a tous

voila.........

j'ai sur mon formulaire des textarea.

mon pb est que quand je rentre des phrases du type

'ooioioiioioioiioioi

jkljkjkjkjkjkjkjkjjk

ljjkjkjkjkjkjkjkjkjkj"

et que j'insere cela dans une bdd mysql, les lignes blanches prennent de la place dans la bdd pour pas grand chose.

ps : pour info : ma méthode de stockage dans ma bdd mysql pour tout type de champ consiste à :

- tester le magic quotes gpc et enlever les / si le magic quotes est a oui
- supprimer les eventuelles balises html (stiptags de memoire)
- supprimer les blans avant et aprés (trim php).

comment dois-je m'y prendre pour optimiser l'espace dans la zone mysql sachant qu'un principe de base que j'ai adopté est que je ne veux aucun caractère html du style <br> ou autre dans ma bdd mysql (principe de base classique car une bdd ne doit pas contenir de données spécifiques à un langage ou un type d'affichage).

merci
herve42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 22h38   #2
Membre éprouvé
 
Inscription : novembre 2007
Messages : 453
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 453
Points : 436
Points : 436
Bonsoir,

Par quoi voulez-vous remplacer les sauts de ligne ?

C'est faisable en javascript...

Par exemple, un truc du genre un
Code :
onsubmit="changeSautLignes(document.monform.montextarea,document.form.monveritabletextarea)"
dans la balise form,
et un input type hidden de nom "monveritabletextarea"...

Si vous voulez changer les sauts de ligne par un espace, il suffit de faire :

Code :
1
2
3
4
5
6
 
<script language="javascript">
function changeSautLignes(Object1, Object2) {
Object2.value = Object1.value.replace(/\n/, " ");
}
</script>
sachav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 11h54   #3
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
quel intérêt ? un saut de ligne n'est qu'un caractère, c'est pas de l'optimisation ça.. en plus tu détruit la mise en forme, quand tu va afficher le texte..
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 12h01   #4
Membre éprouvé
 
Inscription : novembre 2007
Messages : 453
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 453
Points : 436
Points : 436
Citation:
et que j'insere cela dans une bdd mysql, les lignes blanches prennent de la place dans la bdd pour pas grand chose.
A alceste :
Avez-vous lu la question de depart ?
La question n'est pas d' "optimiser" le code comme vous dites, mais de supprimer les lignes blanches car elles prennent trop de place dans la bdd...
Je suis passe par javascript pour remplacer les \n par des espaces simples (" "), on aurait pu evidemment passer par php...

Si vous avez une meilleure solution, pourquoi ne l'avez vous pas proposee ?
sachav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 12h15   #5
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
un espace est aussi un caractère, au même titre que le saut de ligne et occupe donc le même "espace", et pour moi gagner de "l'espace" c'est optimiser..

que ce soit en iso-8859-1/15, ou en utf-8, le caractère de saut de ligne est codé sur un octet, il prend autant de place que n'importe quel caractère de la norme iso-8859-1 ou 15, et moins de place qu'un caractère accentué en utf-8, alors où est la perte d'espace ? sachant que l'on parle d'espace mémoire donc en octet..

après vous me direz qu'une ligne blanche comme vous dites est une suite de deux saut de ligne, êtes vous à deux caractères près ? et donc deux octets près ?
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 12h24   #6
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 10
Points : 10
Par défaut re

merci a tous

en réalite je ne suis pas un as de javascript et ai un peu du mal a comprendre

dans ma bdd en clair j'ai les lignes a blanc

'l'utilisateur peur saisir comme je l''ai précisé

'llklklk

+ imaginons 5 lignes à blanc (donc touches entrée)
+ autre chose

je ne veux pas mettre dans la bdd les lignes à blanc car prend trop de place mais je veux pouvoir :

1 - les restituer sans les lignes à blanc sur un affichage de colonne de tableau
2 - les afficher avec des lignes à blanc si je réaffiche le formulaire
3 - les reaffciher avec des lignes à blanc si j'envoies un mail

sachant que l'utilisater souhaite que sa mise en forme (les lignes a blancs) soient restituées.

j'esperes etre assez clair....mais en y reflechissant je ne vois pas de solution à mon problème............
herve42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 12h30   #7
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
une ligne blanche ne représente que deux caractères, donc même sans ligne blanche, il suffit d'utiliser des mots ou des phrases plus longues et ça prendrait plus d'"espace", le problème n'est pas ces lignes blanches, mais le type utilisé pour vos champs, qui détermine la taille en octet pour leur contenu.
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 12h35   #8
Membre éprouvé
 
Inscription : novembre 2007
Messages : 453
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 453
Points : 436
Points : 436
Je n'ai pas interprete le sujet comme vous :

La "place" prise par une ligne blanche "\n" est de 2 octets effectivements, contre un espace " " un octet.
Mais je ne pense pas que c'est ce que herve42 voulait dire :
Je pense qu'il voulait dire qu'une ligne blanche le "genait" pour la lecture de la bdd : ex. on voit des lignes petites et tout d'un coup on voit une enorme ligne qui prend plein de place... on regarde dans la colone correspondante et on voit plein de saut de ligne...
Maintenant peut-etre que vous avez raison, peut-etre que herve42 voulait dire de la "place" memoire, et non de la "place" visuelle...
sachav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 12h40   #9
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
effectivement.. vu sous cet angle.
enfin il a parlé de base de donnée, donc à partir de là, enfin pour moi.. ce n'est pas graphique.
surtout qu'il parle de restituer le texte comme il y'a été entré, donc y'a pas vraiment d'intérêt à remplacer un caractère par un autre le résultat sera le même au bout du compte, à moins de remplacer deux caractères de saut de ligne par un caractère que l'on aura désigné, et faire l'inverse à l'affichage.. mais si c'est pour gagner de la place en mémoire, cela veut dire que le type utilisé pour stocker le texte n'est pas le bon..

nb: http://dev.mysql.com/doc/refman/5.0/...ing-types.html
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 13h05   #10
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 10
Points : 10
Par défaut re

merci mais y'a un truc que je comprends pas quand vous parlez de /n

ma zone en bdd est de format text mysql et le contenu est issu d'une saisie en textarea

voici le contenu exact pour exemple de la zone quand je la regarde en phpmyadmin

"Bonjour,

Suite à notre conversation téléphonique, vous trouverez ci-joint le formulaire de demande d'interconnexion.

A titre d'exemple, j'ai conservé quelques informations fournies par l'xxxx dans le cadre de l'utilisation d'xxxxxxxxxx par l'agent comptable de la xxxx






Le document une fois complété est à renvoyer à la BAL xxxxxxxxxxxxx

Je reste à votre disposition pour toute information complémentaire

Cordialement"

il n'y a pas de /n juste des lignes avec plein de caractères à blanc, certes correctemment restituées mais qui doivent prendre de la place en bdd
herve42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 13h15   #11
Membre éprouvé
 
Inscription : novembre 2007
Messages : 453
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 453
Points : 436
Points : 436
Parlez-vous de place VISUELLE ou de place de MEMOIRE ?
sachav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 13h19   #12
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
ce n'est pas parce que toi tu vois du blanc que c'est du blanc le caractère \n est un caractère spécial, qui signifie un saut de ligne (sous Linux, \r sous Mac OS, \r\n sous Windows), il n'est pas visible sous cette forme, tu ne le verras pas.. donc si tu en mets deux forcément tu vas avoir une ligne vide, et voir du blanc, mais ce n'est pas pour autant que c'est des espaces.. ce vide c'est une représentation, le contenu est strictement le même que tu as entré dans le textarea.
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h55.


 
 
 
 
Partenaires

Hébergement Web