132,13 → 132,15 |
} |
|
/** |
* Ajoute plusieurs champs étendus à la fois. |
* Si la clé existe déjà, seule la valeur du champ est mise à jour |
* |
* @param array $champs_etendus tableau d'objets ChampEtendu |
* @return bool true si l'ajout a eu lieu |
*/ |
* Ajoute plusieurs champs étendus à la fois. |
* Si la clé existe déjà, seule la valeur du champ est mise à jour |
* |
* @param array $champs_etendus tableau d'objets ChampEtendu |
* @return bool true si l'ajout a eu lieu |
*/ |
public function ajouterParLots(Array $champs_etendus) { |
if(! $champs_etendus) return TRUE; // le tableau ... vide à été inséré |
|
$lignes = array(); |
foreach ($champs_etendus as $champ_etendu) { |
$id = Cel::db()->proteger($champ_etendu->id); |
148,16 → 150,15 |
|
$lignes[] = "($id, $cle, $label, $valeur)"; |
} |
$values = implode(',', $lignes); |
|
$requete = "INSERT INTO {$this->table_champs_etendus} ". |
"({$this->champ_id}, cle, label, valeur) ". |
"VALUES $values ". |
"ON DUPLICATE KEY UPDATE valeur = VALUES(valeur)"; |
|
// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour |
// où l'on change de sgbd |
$ajout = Cel::db()->executerRequeteSimple($requete); |
$ajout = Cel::db()->executerRequeteSimple(sprintf( |
"INSERT INTO %s (%s, cle, label, valeur) VALUES %s ON DUPLICATE KEY UPDATE valeur = VALUES(valeur) -- %s:%d", |
$this->table_champs_etendus, |
$this->champ_id, |
implode(',', $lignes), |
__FILE__, __LINE__)); |
return ($ajout !== false); |
} |
|