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 |
)))) . |
')' |
); |