Insertion de données sélectionnées

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Insertion de données sélectionnées

Re: Insertion de données sélectionnées

par Patriboom » 13 janv. 2010, 20:48

En fait, je me demande pourquoi tu insères dans une table tierce.


1) Si c'est pour affichage seulement, tu peux tout envoyer à la page même qui a le premier formulaire, mais sélectionnant les données à afficher.

Par exemple, si ton premier formulaire était généré par un SELECT designation, quantite, section,idUser FROM admincom ORDER BY designation ASC
Tu peux, si ta variable POST est pleine, restreindre la sélection, tu auras donc
   $requete  = "SELECT designation, quantite, section,idUser FROM admincom ";
   if (isset($_POST["id_recu"])) { $requete .= " WHERE id_machin IN (".implode(",",$_POST["id_recu"]).")"; }
   $requete .= "ORDER BY designation ASC";
Ensuite, tu affiches le formulaire

2) Si c'est conserver et traiter ensuite, tu peux garder ce que tu as si ça marche, mais ce me semble un peu lourd que de répéter, copier les données d'une table à une autre. Cependant, fonctionner autrement exigerait des changements en profondeur de la structure de travail, tu devrait alors apprendre à manipuler les JOIN ... ON et construire des requètes multi-tables.



Si tu fais ça pour du loisir, tu peux te mettre à apprendre les JOIN .... ON, c'est amusant.
Si c'est pour le travail et qu'il faut que ça marche, que ça sorte et que ça presse, bon ...si ça marche, c'est correct.

Re: Insertion de données sélectionnées

par albius » 13 janv. 2010, 11:13

Pour ma part je préfère le type checkbox
Et c'est bien comme cela que je vois la chose... Et surtout du point de vue de l'utilisateur.
Ok, j'ai donc maintenant ma liste avec à côté de chaque produit un checkbox pour le choix. La personne valide sa sélection et envoie les id à un fichier tiers. Celui-ci récupère les informations correspondantes de chaque id, et les insert dans une table. Ce qui donne concrètement:
foreach ($_POST as $value) {
            $select= 'INSERT INTO boncommandes(designation, quantite, section, idUser) SELECT designation, quantite, section,
            idUser FROM admincom WHERE idCom= "'.$value.'"';
            $requete = mysql_query($select) or die('Erreur SQL!'.$select.'<br>'.mysql_error());
}
C'est fonctionnel, toutefois, j'aurais aimé savoir s'il y avait la possibilité d'améliorer/ optimiser ce code.
merci,

Re: Insertion de données sélectionnées

par Patriboom » 12 janv. 2010, 19:21

Pour ma part je préfère le type checkbox, car je n'ai pas besoin de faire deux opérations de vérifications. En effet, si la boite n'est pas cochée, elle retourne une valeur vide. Si elle est cochée, elle retourne la valeur que je lui ai demandé de retourner, soit la valeur de l'id. D'un seul élément, j'ai donc deux informations. Ensuite, en traitant avec implode, les valeurs vides sont ignorées, je n'ai pas à m'en soucier.

Re: Insertion de données sélectionnées

par jojo1000 » 12 janv. 2010, 18:21

NON!
Il faut que tu crée un input type'hidden' qui prendra pour valeur l'id que tu veux!

Re: Insertion de données sélectionnées

par albius » 12 janv. 2010, 18:15

Ok, je vais étudier ça. Merci,

Re: Insertion de données sélectionnées

par Patriboom » 12 janv. 2010, 02:05

Tu peux faire cela simplement avec un IN dans ta requete et un implode en PHP pour rassembler les id que ton visiteurs a sélectionnés.

Ça donnera ceci

$requete = "SELECT * FROM matable WHERE id IN ".implode(", ", $_POST["nomDelaVariableVenantduFormulaire"])." ) ORDER BY ordreDetri"

Bref: un IN () dans la commande SELECT - voir manuel mysql pour plus de détails
un implode qui rassemble tous les éléments du tableau et les sépare par des virgules.

Insertion de données sélectionnées

par albius » 11 janv. 2010, 16:55

Bonjour,

J'ai un certain nombre d'informations affichées dans un tableau (html), réparties sous plusieurs lignes, et venant déjà d'une requête. L'utilisateur doit pouvoir sélectionner dans cette liste une ou plusieurs lignes, en cochant par exemple des boutons de type 'checkbox'. (Un peu à la manière de phpMyAdmin) Je pense que je peux attribuer pour chaque valeur de checkbox, l'id de l'enregistrement respectif de chaque ligne (pas sûr d'être bien clair, là... :roll: ) Une fois ceci fait, il valide ses choix (en cliquant sur un bouton) et doit voir apparaître une nouvelle liste constituée des choix en question.
Réunir l'ensemble des données voulues par l'utilisateur n'est pas le problème. C'est restituer tous les id et leurs informations correspondantes qui me posent soucis, car je ne vois pas trop comment m'y prendre. L'idée de base que j'ai pour l'instant serait de pousser toutes ces informations dans une nouvelle table, puis de passer à l'affichage par la suite.
. Mais concrètement, comment faire pour les insérer ? En passant par une boucle, qui dirait que pour chaque $_POST[‘id’], j’effectue une insertion dans la table ?
Merci,