Comment faires des insertion multiples mysql

Fermé
rofinho Messages postés 17 Date d'inscription lundi 30 septembre 2013 Statut Membre Dernière intervention 25 février 2015 - 11 déc. 2013 à 13:58
heliconius Messages postés 539 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 6 janv. 2014 à 14:11
Bonjour,
je suis rebutant en php et mysql, j'ai donc un problème d'insertion ou de update multiple dans une table "agents" qui as déjà tous les agents pré-remplis, et le reste consiste à insérer les données dans la colonne salaire.

 _____________________________________________
|id |colone_preremplie         |salaire       |
-------------------------------------------
|1 |   agent1                 |              | 
|2 |   agent2                 |              |   
|3 |   agent3                 |              |   
|4 |   agent4                 |              |    
|5 |   agent5                 |              |  
|6 |   agent6                 |              |   
|7 |   agent7                 |              |  
|8 |   agent8                 |              | 
|9 |   agent9                 |              | 
|10 | agent10                 |              | 
|11 | agent11                 |              | 
          au
|100| agent100              |              | 
-------------------------------------------

et une interface web qui se présente comme suit permettent d'insérer les données (salaire ) à tous les agents d'un coup du premier ou 100 ème en faisant correspondre le matricule dans le formulaire à la ligne dans la table.

 ___________________________________________
|id |Agent                     |salaire    |
-------------------------------------------
|1 |   agent1                 |            | 
|-- |----------------------- -|---------- |
|2 |   agent2                 |           |   
|-- |----------------------- -|---------- |
|3 |   agent3                 |           |
|-- |----------------------- -|---------- |   
|4 |   agent4                 |           |
|-- |----------------------- -|---------- |    
|5 |   agent5                 |           |
|-- |----------------------- -|---------- |  
|6 |   agent6                 |           |
|-- |----------------------- -|---------- |   
|7 |   agent7                 |           |
|-- |----------------------- -|---------- |  
|8 |   agent8                 |           |
|-- |----------------------- -|---------- | 
|9 |   agent9                 |           |
|-- |----------------------- -|---------- |
|10 | agent10                 |           | 
|-- |----------------------- -|---------- |
|11 | agent11                 |           |
|-- |----------------------- -|---------- | 
          au
|-- |----------------------- -|---------- |
|100| agent100               |            | 
-------------------------------------------



Donc, je ne sais pas comment faire par ce-que jusque là je ne sais qu'écrire un code pour chaque ligne, ce qui est impossible car j'ai 5 autres tables avec différent agents.
alors si quelqu'un as l'idée (boucle etc..)

voila pourquoi je viens solliciter une aide de votre part.
A voir également:

2 réponses

Utilisateur anonyme
11 déc. 2013 à 14:22
bonjour, je suis étudiant en info , et je fais de al abse de donénes en ce moment .
je ne sais pas utiliser mysql , mais tu peux créer un fichier sql tel que celui-ci (exemple pris de mon tp , désolé ^):

insert into cage(numc,lieu,type) values (6,'lieu6','cage6');
insert into cage(numc,lieu,type) values (7,'lieu7','cage7');

insert into soccupe(numg,numc) values (10,1);
insert into soccupe(numg,numc) values (20,1);
insert into soccupe(numg,numc) values (10,2);

ensuite tu éxécute simplement le ficheir sql , et il fera toute les commandes a la suite , et donc en une éxécution tu peux tout remplir.
0
merci, mais ça je sais bien mais le blèm est qu'il faudra écrire près de 400 ligne d'insertion si la table cible contient 400 agents?
0
Utilisateur anonyme
12 déc. 2013 à 12:44
yep , aps d'autre moyens... a ma connaissance. je débute encore.
0
Bonjour,

Tu dis que tu as près de 400 agents, mais de toute manière, ils n'ont pas tous le même salaire ?
Et la liste de tes salaires, se trouvent-elles dans une table tierce ?

Si tu dois insérer pour chaque agents un salaire différent, et que tu n'as pas d'interface, tu vas malheureusement être obliger de tous les faire manuellement.
Sauf si tes salaires sont déjà dans une autre table, ou que tu as un fichier, ou autre ...
0
heliconius Messages postés 539 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 139
Modifié par heliconius le 6/01/2014 à 14:44
Bonjour,

apriori et à défaut d'informations supplémentaires, tu peux passer par un tableau. Il semble bien qu'il y aura 100 zones de saisie pour les salaires des 100 agents. Le nom de la zone pourra être un tableau. Exemple :
<form method="post" ... ...>
<input type="text" name="salaires[]">

Dans le script de traitement, tu récupères un tableau dans $_POST["salaires"]

J'ai déjà utilisé à de nombreuses reprises des tableaux comme noms de zone de saisie et ça marche très bien. Seulement, fait comme cela, les indices de tableau iront de 0 à 99. Et je doute que tu aies un agent n° 0.

Je n'ai pas essayé mais je pense que ça devrait marcher : mettre comme indice de tableau, l'ID de l'agent :
<input type="text" name="salaires[1]">
<input type="text" name="salaires[2]">
<input type="text" name="salaires[n]">

Je suppose que la variable $resultat contient le résultat de la requete suivante :
SELECT id,nom,prenom FROM ta_table_agents ORDER BY nom,prenom;

Avec PHP, la construction du tableau de saisie des salaires dans ton formulaire pourrait être :
echo "<form method='post'
            action='traitement.php'
            onsubmit='return verif()'>\n";
echo "<table border="1">\n";
echo "<tr><th>ID</th><th>Agent</th><th>Salaire</td>\n";
while($r = mysql_fetch_object($resultat)) {
 echo "<tr>";
 echo "  <td>$r->id</td>";
 echo "  <td>$r->nom $r->prenom</td>";
 echo "  <td><input type='text' value='salaires[$r->id]'></td>";
 echo "</tr>\n";
}
echo "<input type='submit' name='submit' value='Enregistrer'>\n";
echo "</table>\n";

NB: le onsubmit="return verif()' exécutera, lors de la soumission du formulaire, la fonction javascript verif() (que tu auras à écrire dans ta page).

Tu pourrais faire (pour vérifier) un fichier de traitement tel que :
if($_POST["salaires"]) { $salaires = $_POST["salaires"]; }
if($salaires) {
 echo "<pre>";
 echo print_r($salaires);
 echo "</pre>";
}

Si à chaque élément de tableau indicé par l'ID de l'agent tu as bien le salaire correspondant, tu pourrais alors, dans le véritable script de traitement, parcourir ton tableau pour enregistrer (ou mettre à jour) le salaire dans une ou plusieurs tables.

Dis-moi s'il y a un souci ou coche comme résolu si cela satisfait ton problème.

Un problème sans solution est un problème mal posé. (Albert Einstein)
0