Formulair comment enregistrer une ligne.

Eléphant du PHP | 136 Messages

19 janv. 2007, 02:26

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

ViPHP
AB
ViPHP | 5818 Messages

19 janv. 2007, 04:53

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).

Eléphant du PHP | 136 Messages

19 janv. 2007, 14:16

Bonjour,

Oui merci mes si jamais je met 500 lignes ?

Eléphant du PHP | 445 Messages

19 janv. 2007, 14:18

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.
LLDC
Ulti

Eléphant du PHP | 136 Messages

19 janv. 2007, 18:30

ca serai quoi le plus simple ??? :D

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

19 janv. 2007, 18:45

explode("<br>",nl2br($_POST['ajout_ligne']))

Eléphant du PHP | 136 Messages

19 janv. 2007, 21:38

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 ;)

Eléphant du PHP | 259 Messages

19 janv. 2007, 23:40

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.

ViPHP
AB
ViPHP | 5818 Messages

19 janv. 2007, 23:45

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.

ViPHP
AB
ViPHP | 5818 Messages

19 janv. 2007, 23:57

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).

Eléphant du PHP | 259 Messages

20 janv. 2007, 00:29

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.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 janv. 2007, 00:46

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']);

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
AB
ViPHP | 5818 Messages

20 janv. 2007, 06:23

$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?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 janv. 2007, 13:22

(et la flemme de tester), tu peux me confirmer?
Non j'ai la flemme. . . . . oui

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
AB
ViPHP | 5818 Messages

20 janv. 2007, 17:43

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: