Textarea + insertion sql

bricedesardennes
Invité n'ayant pas de compte PHPfrance

19 avr. 2010, 15:33

Bonjour,

j'utilise un textarea pour entrer une série de codes divers en passant à la ligne avec la touche "enter" de mon pc.

Donc, 1 code par ligne.

J'essaie en vain d'insérer en bdd chaque enregistrement (1 code du textarea = 1 ligne en bdd et ainsi de suite..)

Pourriez vous m'aidé svp, je patauge complêtement :-(

devlop78
Invité n'ayant pas de compte PHPfrance

19 avr. 2010, 15:46

Tu as dit pc ...

donc Windows (ou Linux ... ;))

$bad = array ("\r\n","\r");
$textarea = str_replace ($bad,"\n",$textarea);

$textarea_cuted = explode ("\n",$textarea);
$tx_c = count($textarea_cuted);
for ($i=0;$i<$tx_c;$i++) {
$mysqli->query("INSERT INTO ..." . $textarea_cuted[$i]);
}

Voilà c'est une idée de base à travailler selon les besoins

ViPHP
AB
ViPHP | 5818 Messages

19 avr. 2010, 17:56

$textarea_cuted = explode ("\n",$textarea);
$tx_c = count($textarea_cuted);
for ($i=0;$i<$tx_c;$i++) {
$mysqli->query("INSERT INTO ..." . $textarea_cuted[$i]);
}

Voilà c'est une idée de base à travailler selon les besoins
Juste une remarque au passage tu te complique un peu la vie pour lister ton tableau, non ?
foreach($textarea_cuted as $value)
{
$mysqli->query("INSERT INTO ..." . $value);
}
Peut-être as tu fais une immersion dans javascript récemment et tu a oublié toute la puissance de php pour manipuler les tableaux ?

devlop78
Invité n'ayant pas de compte PHPfrance

19 avr. 2010, 18:17

non j'utilise foreach pour les tableaux associatifs ... sinon un bon for () pour les incrémenter. L'avantage c'est pas mal lorsqu'il faut comparer des lignes entre elles. C'est vraiment si compliqué for ? :shock: sans oublié que for() ne déplace pas le curseur ... donc dans ton code tu as oublié la fonction pour remettre le curseur au début ... au final c'est pas plus compliqué ...

ViPHP
ViPHP | 5462 Messages

19 avr. 2010, 18:46

non j'utilise foreach pour les tableaux associatifs ... sinon un bon for () pour les incrémenter. L'avantage c'est pas mal lorsqu'il faut comparer des lignes entre elles. C'est vraiment si compliqué for ? :shock: sans oublié que for() ne déplace pas le curseur ... donc dans ton code tu as oublié la fonction pour remettre le curseur au début ... au final c'est pas plus compliqué ...
pour se cas la oui c'est plus compliquer, d'ailleur vu qu'on est sur mysqli, on peux en profiter pour faire une requête préparer qui sera plus optimiser
$stmt = $mysqli->prepare("INSERT INTO .... ?");

foreach($textarea_cuted  as $value)
{
    $stmt->bind_param("s",  $value);
    $stmt->execute();
}

ViPHP
AB
ViPHP | 5818 Messages

19 avr. 2010, 19:17

C'est vraiment si compliqué for ? :shock: sans oublié que for() ne déplace pas le curseur ... donc dans ton code tu as oublié la fonction pour remettre le curseur au début ... au final c'est pas plus compliqué ...
Non c'est pas que c'est compliqué, c'est juste que c'est plus simple de faire avec foreach quand c'est possible.
Enfin bon c'était juste une remarque en passant :wink:

Sinon, non dans mon code je n'ai rien oublié :
Lorsque foreach démarre, le pointeur interne de fichier est automatiquement ramené au premier élément du tableau. Cela signifie que vous n'aurez pas à faire appel à reset() avant foreach.

devlop78
Invité n'ayant pas de compte PHPfrance

19 avr. 2010, 22:04

C'est vraiment si compliqué for ? :shock: sans oublié que for() ne déplace pas le curseur ... donc dans ton code tu as oublié la fonction pour remettre le curseur au début ... au final c'est pas plus compliqué ...
Non c'est pas que c'est compliqué, c'est juste que c'est plus simple de faire avec foreach quand c'est possible.
Enfin bon c'était juste une remarque en passant :wink:

Sinon, non dans mon code je n'ai rien oublié :
Lorsque foreach démarre, le pointeur interne de fichier est automatiquement ramené au premier élément du tableau. Cela signifie que vous n'aurez pas à faire appel à reset() avant foreach.

Hmmm ... alors ce n'est pas foreach que j'ai du utilisé il y a quelques semaines et qui m'a posé des problèmes ... il ne remettait pas le pointeur au début.

devlop78
Invité n'ayant pas de compte PHPfrance

19 avr. 2010, 22:12

Bien que le tableau soit référencé , foreach travaille sur une copie du tableau spécifié, et pas sur le tableau lui-même. Par conséquent, le pointeur de tableau n'est pas modifié, comme il le serait avec le fonction each , et les modifications faites dans le tableau ne seront pas prises en compte dans le tableau original. Cependant, le pointeur interne du tableau original est avancé avec le traitement du tableau. En supposant sur la boucle foreach effectue tout le traitement, le pointeur interne du tableau sera à la fin du tableau
Autant pour moi, effectivement. Lorsque j'ai repris la programmation, le premier truc que j'ai vu était each avec le magnifique list(). Autant dire que foreach est plus intuitif. Je reste toutefois relativement sur mes positions pour le for qui ne fait de mal à personne ;) sans toutefois enlever le mérite qu'à foreach. Et qu'on me le dise si je me trompe, foreach avance le pointeur du tableau mais modifier les valeurs $key et $value n'a pas d'influence sur le tableau (enfin ça, ca me semblait logique, mais peut-être pas si logique apparemment ;)).

Souhaitez-moi bonne chance je commence ma formation XHTML CSS demain ;)

ViPHP
ViPHP | 5462 Messages

19 avr. 2010, 22:18

si tu peu modifier les valeur en passant par référence avec "&"

devlop78
Invité n'ayant pas de compte PHPfrance

19 avr. 2010, 22:24

Oui mais pas "nativement". sinon un $machin[$key] = htmlentities($value); fonctionne aussi. Mais là on chipote quand même ^^

ViPHP
AB
ViPHP | 5818 Messages

19 avr. 2010, 22:42

Et qu'on me le dise si je me trompe, foreach avance le pointeur du tableau mais modifier les valeurs $key et $value n'a pas d'influence sur le tableau (enfin ça, ca me semblait logique, mais peut-être pas si logique apparemment ;)).

Souhaitez-moi bonne chance je commence ma formation XHTML CSS demain ;)
Ben comme indiqué dans la doc tu peux modifier les valeurs si tu la assigne la valeur par référence avec le &.

Disons que le foreach est pratique puisque c'est la fonction spécifique pour lister les tableaux. Cela t'évite un count() par rapport à ta méthode.
J'ai juste pensé que tu avais fait une petite immersion dans javascript car ta méthode est celle utilisée en js et qu'il n'y a pas cette fonction spécifique comme en php. D'ailleurs comparé à php les fonctions javascript disponibles pour traiter les tableaux sont peu nombreuses (mais on s'arrange).

Alors donc c'est dans XHTML CSS que tu va te plonger demain... donc bonne chance :)
C'est intéressant et ce ne serait pas compliqué si ce langage de description ne dépendait pas des navigateurs, ou plutôt si les navigateurs implémentaient correctement les normes du w3C. Le dernier site que j'ai développé devait être compatible avec les anciens navigateurs FF 2.0 et IE6 et dans ces cas là c'est un peu la galère... #-o

ViPHP
ViPHP | 5462 Messages

19 avr. 2010, 22:58

Le dernier site que j'ai développé devait être compatible avec les anciens navigateurs FF 2.0 et IE6 et dans ces cas là c'est un peu la galère... #-o
mon pauvre :priere: