Page 1 sur 3

Formulair comment enregistrer une ligne.

Posté : 19 janv. 2007, 02:26
par Arno76
Bonjour,

Je souhaiterai a l aide de ceci:

<TEXTAREA name="ajout_ligne" cols="20" rows="5">
Ligne1
Ligne2
Ligne3
</TEXTAREA>

Envoyer ligne par ligne dans ma bdd car avec le système actuel tout et envoyer dans ma bdd

sous cette forme :

Ligne1 Ligne2 Ligne3

Et moi je souhaiterai obetenir une ligne dans ma bdd pour la ligne 1 une autre pour la ligne 2.....

Merci de votre aide ;)




Le formulaire est bien complet tout va dans la bdd aucun problème la

Posté : 19 janv. 2007, 04:53
par AB
Bonjour,

Tu peux faire par exemple 3 champs distincts:

Code : Tout sélectionner

<input type="text" name="ligne1" /> <input type="text" name="ligne2" /> <input type="text" name="ligne3" />
Sinon à condition que tu ailles à la ligne par un retour chariot à chaque fin de ligne dans le textarea, tu peux faire un explode() sur les "/n" dans $_POST['ajout_ligne'] (en supposant que tu emploies la méthode post pour envoyer ton formulaire).

Posté : 19 janv. 2007, 14:16
par Arno76
Bonjour,

Oui merci mes si jamais je met 500 lignes ?

Posté : 19 janv. 2007, 14:18
par Ultim4T0m
Tout dépend de ce que l'utilisateur est censé donner comme informations.

Un explode sur les fins de ligne reste la meilleure solution si tu tiens vraiment à utiliser une textarea. Mais pour l'utilisateur, ce ne sera pas forcement le plus simple.

Posté : 19 janv. 2007, 18:30
par Arno76
ca serai quoi le plus simple ??? :D

Posté : 19 janv. 2007, 18:45
par albat
explode("<br>",nl2br($_POST['ajout_ligne']))

Posté : 19 janv. 2007, 21:38
par Arno76
Salut,

Tu ma l air de savoir se que je veux.

Tu ma donné ca comme code:
explode("<br>",nl2br($_POST['ajout_ligne'])) 
mes ou doi-je le mettre en place car la je ne voie pas au moment de le mettre dans la bdd ? avant ?

Merci de ton aide ;)

Posté : 19 janv. 2007, 23:40
par Jules Petibidon
question bete : un simple explode( "\n" , $data ) aurait pas suffi ?

@arno : l'explode transformera le texte issu de ton formulaire en tableau. ce qui te permettra de faire une boucle sur ce tableau pour insérer les données dans ta base de données.

Posté : 19 janv. 2007, 23:45
par AB
Oui évidemment avant l'enregistrement dans la bdd si tu souhaites faire d'après ta première demande.

Pour reprendre l'exemple d'Albat
$tab = explode("<br>",nl2br($_POST['ajout_ligne'])) ;

$tab est un tableau qui contiendra autant d'éléments que tu auras de lignes séparées par un retour à la ligne.

Tu listes le tableau et tu enregistres chaque ligne du tableau dans ta bdd comme tu le veux.

Maintenant il est possible (probable) qu'il soit plus intéressant d'enregistrer tout le contenu du textarea dans une ligne de ta bdd et d'exploiter le contenu par le même principe sur le résultat de ta requête. Ta bdd contiendrait ainsi beaucoup moins de lignes et sera plus optimisée.
Tout dépend de ce que tu veux faire.

Posté : 19 janv. 2007, 23:57
par AB
Jules,

Il me semble que la méthode d'Albat par rapport à la tienne (et à la mienne que j'avais donnée dans un premier temps) permettrait d'épurer le code et ainsi d'être mieux compatible avec les différentes plateformes linux windows (sous réserve, sinon je ne comprend pas l'intérêt de sa méthode).

Posté : 20 janv. 2007, 00:29
par Jules Petibidon
j'y ai réfléchi apres coup en fait...

si ma souvenance est bonne, linux="\n", mac="\r", windows="\r\n". si quelqu'un peut confirmer ?

d'ou peut etre le nl2br... mais c'est bien la premiere fois que je vois une telle syntaxe.

Posté : 20 janv. 2007, 00:46
par Truc
si ma souvenance est bonne, linux="\n", mac="\r", windows="\r\n". si quelqu'un peut confirmer ?
Confimé :)

Faudrait être clair sur la demande "envoyer ligne par ligne"
  • 1. Enregistrer ligne par ligne dans des champs différents de la BD
    2. Enregistrer tout le textarea avec la mise en page (saut de lignes) dans un seul champ de la BD
Cas 1:
$tab = explode("<br />",nl2br($_POST['ajout_ligne']));
ne pas oublier l'antislash
puis boucler sur $tab

Cas 2:
$champ = nl2br($_POST['ajout_ligne']);

Posté : 20 janv. 2007, 06:23
par AB
$tab = explode("<br />",nl2br($_POST['ajout_ligne']));
ne pas oublier l'antislash
puis boucler sur $tab
ça marche quelque soit la déclaration html le <br />? Je veux dire si on déclare html 4 c'est pareil ou faut-il adapter suivant le cas (ex <br> si HTML 4, et <br /> si XHTML strict). J'ai des doutes (et la flemme de tester), tu peux me confirmer?

Posté : 20 janv. 2007, 13:22
par Truc
(et la flemme de tester), tu peux me confirmer?
Non j'ai la flemme. . . . . oui

Posté : 20 janv. 2007, 17:43
par AB
Truc,

Puisque tu as répondu, j'en conclu que tu ne sais pas. Sinon il ne n'aurait pas été plus long de faire la même réponse que tu as faite à Jules : Confirmé :)
A moins que ce soit ma parenthèse qui soit à l'origine de cette réponse ambigüe... :?:
Bon je connais maintenant la réponse mais j'ai un peu la flemme de la donner...
Pour être tout à fait clair: la proposition d'Albat a très peu de chance de fonctionner quelque soit la déclaration de l'entête HTML :wink: