Bonjour,
Je veux importer des données d'un fichier CSV en vue de les enregistrer en base de données. Les données CSV peuvent être dans un ordre quelconque.
J'ai un formulaire qui permet à l'utilisateur d'établir la correspondance entre les données CSV et celles de la base de données.
Du formulaire résulte un tableau var_dump($post['source']) comme sur cet exemple: array (size=15)
2 => string '0' (length=1)
3 => string '' (length=0)
4 => string '' (length=0)
5 => string '' (length=0)
6 => string '' (length=0)
7 => string '1' (length=1)
8 => string '2' (length=1)
9 => string '' (length=0)
10 => string '' (length=0)
11 => string '' (length=0)
12 => string '' (length=0)
13 => string '' (length=0)
14 => string '' (length=0)
15 => string '' (length=0)
16 => string '' (length=0)
Dans ce tableau, les clés correspondent à l'ordre des colonnes dans la base de données et les valeurs à l'ordre des données sources (CSV).
J'ai un autre tableau $aTargets qui établit la correspondance entre les numéros de colonnes (même clés que dans le tableau précédent) et le nom des colonnes de la table cible de la base de données.
Mon code actuel donne le résultat suivant:array (size=15)
2 =>
array (size=6)
0 => string 'Maguin' (length=6)
1 => string '02800' (length=5)
2 => string 'Charmes' (length=7)
3 => string '4' (length=1)
4 => string 'Marcel' (length=6)
5 => string 'Dupont' (length=6)
3 =>
array (size=6)
0 => string 'Métal Industriel de Chauny' (length=27)
1 => string '02300' (length=5)
2 => string 'Chauny' (length=6)
3 => string '2' (length=1)
4 => string 'Max' (length=3)
5 => string 'Durand' (length=6)
Mais je voudrais obtenir celui-ci:array (size=15)
0 =>
array (size=6)
2 => string 'Maguin' (length=6)
3 => string '' (length=0)
4 => string '' (length=0)
5 => string '' (length=0)
6 => string '' (length=0)
7 => string '02800' (length=5)
8 => string 'Charmes' (length=7)
9 => string '' (length=0)
10 => string '' (length=0)
11 => string '' (length=0)
12 => string '' (length=0)
13 => string '' (length=0)
14 => string '' (length=0)
15 => string '' (length=0)
16 => string '' (length=0)
1 =>
array (size=6)
2 => string 'Métal Industriel de Chauny' (length=27)
3 => string '' (length=0)
4 => string '' (length=0)
5 => string '' (length=0)
6 => string '' (length=0)
7 => string '02300' (length=5)
8 => string 'Chauny' (length=6)
9 => string '' (length=0)
10 => string '' (length=0)
11 => string '' (length=0)
12 => string '' (length=0)
13 => string '' (length=0)
14 => string '' (length=0)
15 => string '' (length=0)
16 => string '' (length=0)
Codes actuels qui ne fonctionnent pas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| /*
while(($data = fgetcsv($in,null,$delimiter)) !== false){
$inData[] = $convertEncoding ?
mb_convert_encoding($data,"UTF-8",$code):
$data;
}
*/
foreach($aTargets as $key=>$value){
$data = fgetcsv($in,null,$delimiter);
$inData[$key] = $convertEncoding ?
mb_convert_encoding($data,"UTF-8",$code):
$data;
}
fclose($in); |
Partager