Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1649 → Rev 1650

/trunk/jrest/services/ImportXLS.php
268,24 → 268,25
$stmt->execute($donnees);
 
// $stmt->debugDumpParams(); // https://bugs.php.net/bug.php?id=52384
//$this->bdd->commit();
$dernier_autoinc = $this->bdd->lastInsertId();
var_dump($dernier_autoinc);
die;
$this->bdd->commit();
 
if(! $dernier_autoinc) trigger_error("l'insertion semble avoir échoué", E_USER_NOTICE);
 
 
$obs_ajouts += count($enregistrements);
// $obs_ajouts += count($enregistrements['insert']);
// $obs_maj += count($enregistrements['update']);
self::stockerImages($this, $enregistrements, $images, $dernier_autoinc);
$nb_images_ajoutees = self::stockerImages($this, $enregistrements, $images, $dernier_autoinc);
}
 
restore_error_handler();
 
if($this->bilan) echo implode("\n", $this->bilan) . "\n";
// fin: renvoi summary
die("$obs_ajouts observations ajoutées");
$summary = sprintf("%d observation(s) ajoutée(s)\n%d image(s) attachée(s)",
$obs_ajouts,
$nb_images_ajoutees);
 
die("$summary");
}
 
static function detectionEntete($entete) {
377,19 → 378,14
 
 
static function stockerImages($cel, $enregistrements, $toutes_images, $lastid) {
if(! $lastid) $lastid = rand();
 
$images_insert =
'INSERT INTO cel_obs_images (id_image, id_observation) VALUES'
.' %s '
.'ON DUPLICATE KEY UPDATE id_image = id_image';
$images_insert = 'INSERT INTO cel_obs_images (id_image, id_observation) VALUES %s ON DUPLICATE KEY UPDATE id_image = id_image';
$images_obs_assoc = Array();
 
foreach($toutes_images as $images_pour_obs) {
$obs = $enregistrements[$images_pour_obs["obs_pos"]];
$id_obs = $lastid // dernier autoinc inséré
- count($enregistrements) - 1 // correspondrait au premier autoinc
+ $images_pour_obs["obs_pos"]; // ordre d'insertion = ordre dans le tableau $enregistrements
- count($enregistrements) + 1 // correspondrait au premier autoinc
+ $images_pour_obs["obs_pos"]; // ordre d'insertion = ordre dans le tableau $enregistrements (commence à 0)
foreach($images_pour_obs['images'] as $image) {
$images_obs_assoc[] = sprintf('(%d,%d)',
$image['id_image'], // intval() useless
399,8 → 395,11
 
if($images_obs_assoc) {
$requete = sprintf($images_insert, implode(', ', $images_obs_assoc));
echo "$requete\n";
// debug echo "$requete\n";
$cel->requeter($requete);
}
 
return count($images_obs_assoc);
}
 
/*
735,13 → 734,17
sprintf('INSERT INTO cel_obs (%s) VALUES ',
implode(', ', self::$ordre_BDD)),
 
// insert_ligne_pattern =
 
// insert_ligne_pattern, cf: self::$insert_ligne_pattern
'(' .
implode(', ', array_values(array_map(
function($item) { return is_null($item) ? '?' : $item; },
array_merge(
array_map(function() { return NULL; }, array_flip(self::$ordre_BDD)),
$colonnes_statiques
// 3) créé une chaîne de liste de champ à inséré en DB
implode(', ', array_values(
// 2) garde les valeurs fixes (de $colonnes_statiques),
// mais remplace les NULL par des "?"
array_map(function($item) { return is_null($item) ? '?' : $item; },
// 1) créé un tableau genre (nom_sel_nn => NULL) depuis self::$ordre_BDD
// et écrase certaines valeurs avec $colonnes_statiques (initilisé avec les données utilisateur)
array_merge(array_map(function() { return NULL; }, array_flip(self::$ordre_BDD)), $colonnes_statiques
)))) .
')'
);