Bonjour,
Je réalise un module d'importation de données CSV (source) pour la ventiler en base de données (cibles)
J'utilise un formulaire en 3 étapes.
L'étape 1 permet de sélectionner un fichier CSV et de l'analyser.
L'étape 2 permet d'affecter les colonnes sources aux colonnes cibles au moyen d'une liste d'options où chaque colonne cible figure dans l'étiquette de la liste d'options qui, elle contient les colonnes sources.
L'étape 3 permet de récapituler les sélections de l'étape 2 et d'enregistrer les données en base de données.

Le fichier source contient des données de composition variable avec tout ou partie des éléments disponibles dans la base de données. La seule exigence et que les colonnes sources contiennent au moins le nom de la société.
Note sur la source:
En cas d'interlocuteurs multiples dans une même entreprise, ceux-ci figurent sur deux lignes CSV avec répétition des autres données. Exemple:
Société Truc, Monsieur, Marcel, Machin
Société Truc, Madame, Michèle, Dupont

Notes sur la cible
  • La table dat_customers comprenant les colonnes id/company_name/address/country/zipcode/locality
  • La table dat_infos comprend les colonnes id/capital/turnover/workforce
  • La table dat_employees comprend les colonnes id,id_customer,gender,firstname,familyname

L'id de la table dat_customers est en autoincrément.
L'id de la table dat_infos est le même que celui de la table dat_customers
L'id de la table dat_employees est en autoincrément, l'id_customer est l'id de la table dat_customers

Problème: Je bloque sur l'enregistrement en base de données pour la récupération des id de la table dat_customers et l'appliquer aux deux autres tables de façon à garantir l'intégrité des relations. Ceux-ci n'ont aucune raison de figurer dans le formulaire de l'étape 2 ci-dessous.

Voici un extrait du code source de l'étape 2 nécessaire à la compréhension:
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<form method="post" name="tabForm" class="settings" action="frontend/csvImport.php" style="min-width:1100px">
		<fieldset><legend>Données adresse</legend>
			<label><span>company_name</span><select name='source[0][2]'>
				<option value='' label='&lt; ---- &gt;'></option>
				<option value='0'>company_name</option>
				<option value='1'>zipcode</option>
				<option value='2'>locality</option>
			</select></label><br>
			<label><span>address</span><select name='source[0][4]'>
				<option value='' label='&lt; ---- &gt;'></option>
				<option value='0'>company_name</option>
				<option value='1'>zipcode</option>
				<option value='2'>locality</option>
			</select></label><br>
			<label><span>country</span><select name='source[0][6]'>
				<option value='' label='&lt; ---- &gt;'></option>
				<option value='0'>company_name</option>
				<option value='1'>zipcode</option>
				<option value='2'>locality</option>
			</select></label><br>
			<label><span>zipcode</span><select name='source[0][7]'>
				<option value='' label='&lt; ---- &gt;'></option>
				<option value='0'>company_name</option>
				<option value='1'>zipcode</option>
				<option value='2'>locality</option>
			</select></label><br>
			<label><span>locality</span><select name='source[0][8]'>
				<option value='' label='&lt; ---- &gt;'></option>
				<option value='0'>company_name</option>
				<option value='1'>zipcode</option>
				<option value='2'>locality</option>
			</select></label><br>
		</fieldset>
		<fieldset><legend>Autres infos</legend>
			<label><span>capital</span><select name='source[1][2]'>
				<option value='' label='&lt; ---- &gt;'></option>
				<option value='0'>company_name</option>
				<option value='1'>zipcode</option>
				<option value='2'>locality</option>
			</select></label><br>
			<label><span>turnover</span><select name='source[1][3]'>
				<option value='' label='&lt; ---- &gt;'></option>
				<option value='0'>company_name</option>
				<option value='1'>zipcode</option>
				<option value='2'>locality</option>
			</select></label><br>
			<label><span>workforce</span><select name='source[1][4]'>
				<option value='' label='&lt; ---- &gt;'></option>
				<option value='0'>company_name</option>
				<option value='1'>zipcode</option>
				<option value='2'>locality</option>
			</select></label><br>
		</fieldset>
		<fieldset><legend>Données interlocuteurs</legend>
			<!-- etc. -->
		</fieldset>
	</div>
</form>