Page 1 sur 1

textaera: retourchariot = une entrée dans la base

Posté : 25 févr. 2009, 13:25
par MarieTM
Bonjour,

J'ai réalisé un formulaire, comportant un textaera.

Il fonctionne: je rentre un mot, envoie, et mon mot est inséré dans la base de données, associé à sa catégorie sélectionnée dans un select. J'ai donc deux champs qui sont remplis, et une ligne.


Comme j'ai beaucoup de mots à remplir, je souhaiterais en rentrer plus d'un coup, par retour chariot. Ainsi je mettrais dans mon textaera un truc du style:

mot1
mot2
mot3
mot4

Puis "Envoyer", plutôt qu'envoyer après chaque mot.

Est-il possible de détecter chaque retour chariot, puis d'insérer ces mots dans différentes lignes, en conservant la catégorie associées bien sur.

Une partie de mon formulaire (sans le select):

<tr>
<td>
<textarea rows='3' name='champmot'></textarea>
</td>
</tr>
<br />
<tr>
<td colspan=2>
<input class='submit2' type='submit' value='ok' name='valider'/>
</td>
</tr>

ma requete:

$nomMot = $_POST['champmot'];
$ajoutmot = mysql_query("INSERT INTO keywords (nomMot ,catMot) VALUES ('$nomMot ','$catMot') ");

le catmot est la catégorie récupérée dans le select (pas envie de mettre trop de code superflu ^^ )

Merci pour votre aide :)

Posté : 25 févr. 2009, 13:39
par @rthur
Bonjour,

Il te faudra faire un explode sur le caractère \n (le retour à la ligne) tu va alors obtenir un tableau avec un mot dans chaque "case"
Ensuite tu fais un foreach($ton_tableau as $mot) et dedans tu mets ton mysql_query en insérant $mot

Posté : 25 févr. 2009, 13:44
par MarieTM
@@rthur je vais faire des recherches la dessus merci :)

Posté : 25 févr. 2009, 14:12
par @rthur
@@rthur je vais faire des recherches la dessus merci :)
N'hésites pas à revenir poser une question si tu bloques quelque part. ;)

Posté : 25 févr. 2009, 15:09
par MarieTM
@@rthur pause dej finie, je m'y mets!
pour sur que je vais bloquer, je te remercie :)

Mais ça marche!!!! parfait merci à toi :)
Bouclé en 10 min. même pas

Posté : 25 févr. 2009, 15:45
par Aureusms
Pour toutes les entrées vers base de données, n'oublies pas de te protéger des injections sql via addslashes() ou mysql_escape_string() (au choix).

Posté : 25 févr. 2009, 15:47
par @rthur
Pour toutes les entrées vers base de données, n'oublies pas de te protéger des injections sql via addslashes() ou mysql_escape_string() (au choix).
Ou plutôt que de laisser le choix, mysql_real_escape_string() est en générale la meilleure solution et la plus sure sans avoir à se creuser la tête ;)

Posté : 25 févr. 2009, 15:49
par Aureusms
Lol Arthur pas eu le temps de me corriger... :lol:

Posté : 25 févr. 2009, 15:57
par MarieTM
merci :)
mais les formulaire ne seront pas disponibles sur internet (juste en interne). Donc pas de souci quant à ça.

le truc c'est que il y a un bug dans mon code.

j'insère bien mes entrées, mais à chaque retour chariot il m'en insère un aussi dans ma table, sauf pour la dernière occurence, qui n'a pas de retour chariot.

Je ne sais pas si c'est clair ^^

en gros quand je regarde ma variable dans ma table, il y a le nom de ma variable mais le curseur a fait un retour chariot.

mon code:

$tableauchamp = explode("\n", $nomKey);

Posté : 25 févr. 2009, 16:04
par @rthur
Fais un trim($nomKey) avant de l'insérer dans ta bae et ça devrait le faire :)

Posté : 25 févr. 2009, 16:12
par MarieTM
mais comment t'es TROP FORT
tu es au php ce que les trous sont au gruyère