/**
  * 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);
     }
 }
Exemple #2
0
 /**
  * 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);
     }
 }