/** * Retourne les champs dont la valeur est différentes entre 2 enregistrement<br> * en base de données. * @param string $paramTableName1 nom de table de l'enregistrement N°1 * @param string $paramKeyValueTable1 valeur de la clef de l'enregistrement N°1 * @param string $paramKeyValueTable2 valeur de la clef de l'enregistrement N°2 * @param string $paramTableName2 nom de table de l'enregistrement N°2 (optionnel) * @return array Tableau contenant la liste des noms des champs différents */ public static function getArrayFieldsNameForDiffRecords($paramTableName1, $paramKeyValueTable1, $paramKeyValueTable2, $paramTableName2 = NULL) { if ($paramKeyValueTable2 == NULL) { return FALSE; } /** * Si la seconde table n'a pas été communiquée, on considère que les * 2 clefs font référence à la même table, la première. */ if ($paramTableName2 == NULL) { $paramTableName2 = $paramTableName1; } /** * Récupération de l'enregistrement n°1 */ $fieldsArray1 = self::convertSqlStatementFirstRowToArray(self::queryPDO('SELECT ' . $paramTableName1 . '.* FROM ' . $paramTableName1 . ' WHERE ' . DatabaseDescription::getTableKeyName($paramTableName1) . '=' . $paramKeyValueTable1)); /** * Récupération de l'enregistrement n°1 */ $fieldsArray2 = self::convertSqlStatementFirstRowToArray(self::queryPDO('SELECT ' . $paramTableName2 . '. FROM ' . $paramTableName2 . ' WHERE ' . DatabaseDescription::getTableKeyName($paramTableName2) . '=' . $paramKeyValueTable2)); /** * Construction du tableau des différences */ return DatabaseOperation::getArrayFieldsNameForDiffFieldsValue($fieldsArray1, $fieldsArray2); }