/** * Modifie plusieurs infos d'une entrée dans la mémoire (permet de vérifier l'intégrité de l'entrée, en terme de colonnes) * @param ARRAY $newInfos Un tableau avec les nouvelles valeurs pour les colonnes de l'entrée * @param BOOLEAN $allowAddCol TRUE pour ignorer les colonnes en trop, FALSE pour permettre l'ajout de colonnes non existantes (default FALSE) * @param BOOLEAN $checkMissing TRUE pour vérifier qu'il ne manque pas de colonne (renvoie une erreur), FALSE pour laisser MySQL remplir les valeurs manquantes (default FALSE) * @param BOOLEAN $forceID TRUE pour obliger la redéfinition de la colonne "id", FALSE pour l'ignorer et laisser MySQL faire son auto-incrément (default FALSE) */ public function setManyInfos($newInfos, $allowAddCol = false, $checkMissing = false, $forceID = false) { if (!is_array($newInfos)) { throw new Exception("Infos::setManyInfos() : \$newInfos must be an array (" . gettype($newInfos) . " found)"); } $tableCols = Infos::getCols($this->table); if ($checkMissing) { $missingRows = array_diff($tableCols, array_keys($newInfos)); sort($missingRows); if (count($missingRows) > 0) { throw new Exception("Infos::setManyInfos() : missing " . count($missingRows) . " columns in array \$newInfos, compared to current table ('{$this->table}'). List of missing columns: " . json_encode($missingRows)); } } if (!$allowAddCol) { $surplusRows = array_diff(array_keys($newInfos), $tableCols); if (count($surplusRows) > 0) { foreach ($surplusRows as $sRow) { unset($newInfos[$sRow]); } } } if (!$forceID) { unset($newInfos['id']); } foreach ($newInfos as $key => $val) { $this->setInfo($key, $val); } }
/** * Modifie plusieurs infos d'une entrée dans la mémoire (permet de vérifier l'intégrité de l'entrée, en terme de colonnes) * @param ARRAY $newInfos Un tableau avec les nouvelles valeurs pour les colonnes de l'entrée * @param BOOLEAN $allowAddRow TRUE pour ignorer les colonnes en trop, FALSE pour permettre l'ajout de colonnes non existantes (default FALSE) * @param BOOLEAN $checkMissing TRUE pour vérifier qu'il ne manque pas de colonne (renvoie une erreur), FALSE pour laisser MySQL remplir les valeurs manquantes (default FALSE) * @param BOOLEAN $forceID TRUE pour obliger la redéfinition de la colonne "id", FALSE pour l'ignorer et laisser MySQL faire son auto-incrément (default FALSE) */ public function setAllInfos($newInfos, $allowAddRow = false, $checkMissing = false, $forceID = false) { if (!is_array($newInfos)) { throw new Exception("Infos::setAllInfos() : {$newInfos} doit être un tableau"); } $tableCols = Infos::getCols($this->table); if ($checkMissing) { $missingRows = array_diff($tableCols, array_keys($newInfos)); if (count($missingRows) > 0) { throw new Exception("Infos::setAllInfos() : Il manque " . count($missingRows) . " colonnes au tableau par rapport à la table courante ({$this->table}).\nListe des colonnes manquantes : " . json_encode($missingRows)); } } if (!$allowAddRow) { $surplusRows = array_diff(array_keys($newInfos), $tableCols); if (count($surplusRows) > 0) { foreach ($surplusRows as $sRow) { unset($newInfos[$sRow]); } } } if (!$forceID) { unset($newInfos['id']); } foreach ($newInfos as $key => $val) { $this->setInfo($key, $val); } }