Subversion Repositories eFlore/Applications.cel

Rev

Rev 1649 | Rev 1651 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1649 Rev 1650
Line 266... Line 266...
266
			/* debug ici: echo $sql_pattern . "\n"; var_dump($enregistrements, $donnees); die;*/
266
			/* debug ici: echo $sql_pattern . "\n"; var_dump($enregistrements, $donnees); die;*/
Line 267... Line 267...
267
 
267
 
Line 268... Line 268...
268
			$stmt->execute($donnees);
268
			$stmt->execute($donnees);
269
 
-
 
270
			// $stmt->debugDumpParams(); // https://bugs.php.net/bug.php?id=52384
269
 
271
			//$this->bdd->commit();
270
			// $stmt->debugDumpParams(); // https://bugs.php.net/bug.php?id=52384
272
			$dernier_autoinc = $this->bdd->lastInsertId();
-
 
273
			var_dump($dernier_autoinc);
-
 
Line -... Line 271...
-
 
271
			$dernier_autoinc = $this->bdd->lastInsertId();
Line 274... Line 272...
274
			die;
272
			$this->bdd->commit();
275
 
273
 
276
 
274
			if(! $dernier_autoinc) trigger_error("l'insertion semble avoir échoué", E_USER_NOTICE);
277
 
275
 
278
			$obs_ajouts += count($enregistrements);
276
			$obs_ajouts += count($enregistrements);
Line 279... Line 277...
279
			// $obs_ajouts += count($enregistrements['insert']);
277
			// $obs_ajouts += count($enregistrements['insert']);
Line 280... Line 278...
280
			// $obs_maj += count($enregistrements['update']);
278
			// $obs_maj += count($enregistrements['update']);
-
 
279
			$nb_images_ajoutees = self::stockerImages($this, $enregistrements, $images, $dernier_autoinc);
281
			self::stockerImages($this, $enregistrements, $images, $dernier_autoinc);
280
		}
282
		}
281
 
-
 
282
		restore_error_handler();
-
 
283
 
283
 
284
		if($this->bilan) echo implode("\n", $this->bilan) . "\n";
Line 284... Line 285...
284
		restore_error_handler();
285
 		$summary = sprintf("%d observation(s) ajoutée(s)\n%d image(s) attachée(s)",
285
 
286
						   $obs_ajouts,
286
		if($this->bilan) echo implode("\n", $this->bilan) . "\n";
287
						   $nb_images_ajoutees);
Line 375... Line 376...
375
		}
376
		}
376
	}
377
	}
Line 377... Line 378...
377
 
378
 
378
 
-
 
379
	static function stockerImages($cel, $enregistrements, $toutes_images, $lastid) {
-
 
380
		if(! $lastid) $lastid = rand();
-
 
381
 
379
 
382
		$images_insert =
-
 
383
			'INSERT INTO cel_obs_images (id_image, id_observation) VALUES'
-
 
384
			.' %s '
380
	static function stockerImages($cel, $enregistrements, $toutes_images, $lastid) {
Line 385... Line 381...
385
			.'ON DUPLICATE KEY UPDATE id_image = id_image';
381
		$images_insert = 'INSERT INTO cel_obs_images (id_image, id_observation) VALUES %s ON DUPLICATE KEY UPDATE id_image = id_image';
386
		$images_obs_assoc = Array();
382
		$images_obs_assoc = Array();
387
 
383
 
388
		foreach($toutes_images as $images_pour_obs) {
384
		foreach($toutes_images as $images_pour_obs) {
389
			$obs = $enregistrements[$images_pour_obs["obs_pos"]];
385
			$obs = $enregistrements[$images_pour_obs["obs_pos"]];
390
			$id_obs = $lastid // dernier autoinc inséré
386
			$id_obs = $lastid // dernier autoinc inséré
391
				- count($enregistrements) - 1 // correspondrait au premier autoinc
387
				- count($enregistrements) + 1 // correspondrait au premier autoinc
392
				+ $images_pour_obs["obs_pos"]; // ordre d'insertion = ordre dans le tableau $enregistrements
388
				+ $images_pour_obs["obs_pos"]; // ordre d'insertion = ordre dans le tableau $enregistrements (commence à 0)
393
			foreach($images_pour_obs['images'] as $image) {
389
			foreach($images_pour_obs['images'] as $image) {
394
				$images_obs_assoc[] = sprintf('(%d,%d)',
390
				$images_obs_assoc[] = sprintf('(%d,%d)',
395
											  $image['id_image'], // intval() useless
391
											  $image['id_image'], // intval() useless
Line 396... Line 392...
396
											  $id_obs); // intval() useless
392
											  $id_obs); // intval() useless
397
			}
393
			}
398
		}
394
		}
-
 
395
 
399
 
396
		if($images_obs_assoc) {
-
 
397
			$requete = sprintf($images_insert, implode(', ', $images_obs_assoc));
-
 
398
			// debug echo "$requete\n";
400
		if($images_obs_assoc) {
399
			$cel->requeter($requete);
Line 401... Line 400...
401
			$requete = sprintf($images_insert, implode(', ', $images_obs_assoc));
400
		}
402
			echo "$requete\n";
401
 
403
		}
402
		return count($images_obs_assoc);
Line 733... Line 732...
733
		return Array( 
732
		return Array( 
734
			// insert_prefix
733
			// insert_prefix
735
			sprintf('INSERT INTO cel_obs (%s) VALUES ',
734
			sprintf('INSERT INTO cel_obs (%s) VALUES ',
736
					implode(', ', self::$ordre_BDD)),
735
					implode(', ', self::$ordre_BDD)),
Line -... Line 736...
-
 
736
 
737
 
737
 
738
			// insert_ligne_pattern =
738
			// insert_ligne_pattern, cf: self::$insert_ligne_pattern
-
 
739
			'(' .
739
			'(' .
740
			// 3) créé une chaîne de liste de champ à inséré en DB
-
 
741
			implode(', ', array_values(
-
 
742
				// 2) garde les valeurs fixes (de $colonnes_statiques),
740
			implode(', ', array_values(array_map(
743
				// mais remplace les NULL par des "?"
741
				function($item) { return is_null($item) ? '?' : $item; },
744
				array_map(function($item) { return is_null($item) ? '?' : $item; },
-
 
745
						  // 1) créé un tableau genre (nom_sel_nn => NULL) depuis self::$ordre_BDD
742
				array_merge(
746
						  // et écrase certaines valeurs avec $colonnes_statiques (initilisé avec les données utilisateur)
743
					array_map(function() { return NULL; }, array_flip(self::$ordre_BDD)),
-
 
744
					$colonnes_statiques
747
						  array_merge(array_map(function() { return NULL; }, array_flip(self::$ordre_BDD)), $colonnes_statiques
745
				)))) .
748
				)))) .
746
			')'
749
			')'
747
		);
750
		);