';
echo dossier::hidden();
// Ceci vous permet de revenir ici (voir extension.php)
echo HtmlInput::extension();
echo "Choix de la catégorie de fiche";
$select_cat=new ISelect('fd_id');
$select_cat->value=$cn->make_array('select fd_id,fd_label from fiche_def where frd_id='.
FICHE_TYPE_CLIENT);
echo $select_cat->input();
echo HtmlInput::submit('display_prop','Afficher les propriétés');
echo '';
// on choisit d'afficher les propriétés avant de confirmer l'import
// get parce qu'on interroge
if ( isset($_GET['display_prop'])){
$a=new Fiche($cn);
$prop=$a->to_array($_GET['fd_id']);
foreach ($prop as $key=>$value) echo "Index : $key valeur $value
";
echo '
';
exit;
}
// Il est demandé de démarrer l'importation
// Post parce qu'on sauve
// On image que le fichier CSV n'a que 4 champs
// "nom client","prenom client", "numero client","adresse client"
//
if ( isset($_POST['start_import'])){
$fd_id=$_POST['fd_id'];
$tmp_file=$_FILES['fichier_csv']['tmp_name'];
if ( ! is_uploaded_file($tmp_file))
die ('Je ne peux charger ce fichier');
// on ouvre le fichier
$f=fopen($tmp_file,'r');
// On récupère les propriétés de cette catégorie de fiche
$client=new Fiche($cn);
// $array contient toutes les valeurs nécessaires à Fiche::insert,
$array=$client->to_array($_POST['fd_id']);
while ( ($data=fgetcsv($f))==true) {
// remarque : on a éliminé les traitements d'erreur
// On remet tous les attributs (propriétés) à vide
foreach(array_keys($array) as $key) $array[$key]="";
// Nom et prénom
$array['av_text1']=$data[0].' '.$data[1];
// Numéro de client
$array['av_text30']=$data[2];
// Adresse
$array['av_text14']=$data[3];
// Quickcode
$array['av_text23']="CLI".$data[2];
$client->insert($fd_id,$array);
}
exit;
}
?>
Voici le fichier plugin_client.txt (dans le répertoire dev)
"Nom client1","Prénom","C1","Rue de la boite,55"
"Nom client2","Prénom","C2","Rue du couvercle,55"
"Nom client3","Prénom","C3","Rue de la chaussure,55"
"Nom client4","Prénom","C4","Rue de la couleur,55"
Si vous vérifiez dans VW_CLIENT, vous verrez que toutes vos fiches ont été ajoutées. Dans l'exemple, il faudra rajouter un traitement d'erreur plus élaborée, le fait que si une fiche echoue , l'opération est annulée (Database::rollback) ou alors création d'un fichier avec les enregistrements "ratés"...