/** * Permet de convertir un tableau de donnée pour être intégré dans<br> * une clause SQL<br> * @param string $paramTableName Nom de la table * @param array $paramValues tableau clef/donnee où clef est le champs et donnée sa valeur * @param string Opérateur ou séparateur SQL * @return string Partie prête à être insérée dans le WHERE d'une requête SQL */ protected static function convertArrayToSqlClause($paramTableName, $paramValues, $paramOperator) { $operator = " " . $paramOperator . " "; $currentOperator = ""; $statement = ""; foreach ($paramValues as $key => $value) { $statement .= $currentOperator; $statement .= self::convertNameToSqlClause($paramTableName) . "." . self::convertNameToSqlClause($key) . " = " . DatabaseOperation::convertDataForQuery($value) . " "; $currentOperator = $operator; } return $statement; }
function mysql_table_operation($nom_table, $operation) { /* Dictionnaire des variables: * ************************** */ //$bdd = $_SESSION["mysql_database_name"]; //Variable Globale definit dans /lib/session.php et $globalConfig = new GlobalConfig(); //$conf = $_SESSION["globalConfig"]; $bdd = $globalConfig->getConf()->getMysqlDatabaseName(); //$bdd = $conf->mysql_database_name; //represente le nom de la base de donnees $nom_table; //Nom de la table e charger $operation; //update, delete, rewrite, copy, clone ou insert $premiere_virgule_update = 1; //Permet de supprimer les virgules en trop dans la //construction des requetes UPDATE $premiere_virgule_insert = 1; //Permet de supprimer les virgules en trop dans la //construction des requetes INSERT et REWRITE $premiere_operateur_where = 1; //Permet de supprimer les AND en trop dans la //construction des WHERE $premiere_operateur_retour = 1; //Permet de supprimer le '&' en trop dans la //construction du retour de la fonction $return = ''; //Valeur que renvoi la fonction $nom_id = ""; //$list_key_field = array(); //liste des noms des champs étant des clefs /* Corps de la fonction * ******************* */ //Initialisation des requetes $req_update = "UPDATE `" . $nom_table . "` SET "; $req_where = " WHERE "; $req_delete = "DELETE FROM `" . $nom_table . "`"; $req_insert = "INSERT INTO `" . $nom_table . "` ("; $req_insert_values = "VALUES ("; $req_rewrite = $req_delete; $req_copy = $req_insert; $req_copy_values = $req_insert_values; $req_clone; //Reste e creer //Recupération des variables $fields = mysql_list_fields($bdd, $nom_table); $propriete = DatabaseOperation::query("DESC {$nom_table}"); $num_fields = mysql_num_fields($fields); //Recherche des clefs de la table while ($rows1 = mysql_fetch_array($propriete)) { //Creation de la variable potentiellement PRIMARY KEY $primary_key = $rows1["Field"]; //$$primary_key=$_SESSION["$primary_key"]; //Comment récupérer ce qui vient de l'URL ? ${$primary_key} = Lib::isDefined($primary_key); if ($rows1["Key"] == "PRI") { //Enregistrement de la clef (gestion multi-clef non-supporté) $nom_id = $primary_key; } //Est-ce que ce champ est une clef et qu'une variable est definit if ($rows1["Key"] == "PRI" and ${$primary_key} != null) { //$list_key_field[]=$nom_id; //Enregistrement du nom de la clef dans la listes des clefs //Affectation de la valeur de la variables Key if ($operation == 'copy') { $_SESSION["{$primary_key}"] = ''; //$$primary_key = ''; } ${$primary_key} = $_SESSION["{$primary_key}"]; //Intégration de la clef PRIMAIRE dans les requetes $operateur = " AND "; if ($premiere_operateur_where) { $operateur = ''; } $premiere_operateur_where = 0; $req_where .= $operateur . "`" . $primary_key . "`" . "=" . "'" . ${$primary_key} . "'"; //Construction du lien de retour de fonction $operateur = "&"; if ($premiere_operateur_retour) { $operateur = ''; } $premiere_operateur_retour = 0; $return .= $operateur . $primary_key . "=" . ${$primary_key}; //Effacement des clefs pour eviter de les retrouver dans la suite des requetes switch ($operation) { case 'insert': case 'copy': ${$primary_key} = ''; break; } } //Fin de Recherche de la clef sur ce champ } //Fin de recherche des clefs //Integration des variables dans les requetes for ($i = 0; $i < $num_fields; $i++) { //Recuperation du nom des variables $nom_variable = mysql_field_name($fields, $i); //$valeur_variable = "test"; //Verification de la declaration de cette variable, //$valeur_variable=$_SESSION["$nom_variable"]; //Comment récupérer ce qui vient de l'URL ? //$valeur_variable=Lib::isDefined($nom_variable); $valeur_variable = $_SESSION[$nom_variable]; if ($valeur_variable != null) { //Formatage des données pour préparation à intégration dans MySQL // 2009-05-11 BS - Fait planter la duplication d'une FTA: $$nom_variable = "\"" . $GLOBALS[$nom_variable] . "\""; // 2011-04-01 BS - Tentative pour enregistrer dans la base des données "propre": // $valeur_variable = "'" . addslashes($valeur_variable) . "'"; $valeur_variable = DatabaseOperation::convertDataForQuery($valeur_variable); //$$nom_variable = "'" . htmlentities($GLOBALS[$nom_variable]) . "'"; //Le champs peut-il etre NULL $rechercher_not_null = mysql_field_flags($fields, $i); $trouver_not_null = stristr($rechercher_not_null, 'not_null'); if (!$trouver_not_null and $valeur_variable == "''") { $valeur_variable = "NULL"; } //Construction des requetes //Requete UPDATE $virgule = ", "; if ($premiere_virgule_update) { $virgule = ''; } $premiere_virgule_update = 0; $req_update .= $virgule . "`" . $nom_variable . "`=" . $valeur_variable; //Requete INSERT, REWRITE et COPY $virgule = ", "; if ($premiere_virgule_insert) { $virgule = ''; } $premiere_virgule_insert = 0; $req_insert .= $virgule . "`" . $nom_variable . "`"; $req_insert_values .= $virgule . $valeur_variable; } } //Fin de la construction des requetes //Finalisation des requetes //Requete UPDATE: $req_update .= $req_where; //Requete DELETE: $req_delete .= $req_where; //Requete INSERT: $req_insert .= ")" . $req_insert_values . ");"; $req_insert . "<br>"; //Requete REWRITE: // un DELETE, puis un INSERT //Requete COPY: $req_copy = $req_insert; //Requete CLONE: $req_clone; //Execution des requetes switch ($operation) { case 'update': DatabaseOperation::query($req_update); //echo $req_update."<br>"; break; case 'delete': DatabaseOperation::query($req_delete); break; case 'insert': DatabaseOperation::query($req_insert); //echo $req_insert."<br>"; break; case 'rewrite': DatabaseOperation::query($req_delete); DatabaseOperation::query($req_insert); break; case 'copy': DatabaseOperation::query($req_copy); break; case 'clone': DatabaseOperation::query($req_clone); break; } //Renvoi de la fonction switch ($operation) { case 'copy': case 'insert': //$id = "id_" . $nom_table; $id = $nom_id; //Externalisation de la variable (pour une table e 1 clef) $_SESSION[$id] = mysql_insert_id(); $return = $id . "=" . $_SESSION[$id]; break; default: $return; break; } return $return; }
/** * Tableau de DatabaseRecord contenant les processus de cycle de vie * de la FTA * @return array */ public function getArrayIdProcessusFromFtaCycleDeVie() { $sqlDataEtatAbreviationValue = DatabaseOperation::convertDataForQuery($this->getModelFtaEtat()->getDataField(FtaEtatModel::FIELDNAME_ABREVIATION)->getFieldValue()); $sqlDataIdFtaCategorieValue = DatabaseOperation::convertDataForQuery($this->getModelFtaWorkflow()->getKeyValue()); //Sélection de tous les processus appartenant au cycle de vie de la FTA return DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT DISTINCT " . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . " AS " . FtaProcessusModel::KEYNAME . " " . ", " . FtaProcessusCycleModel::FIELDNAME_DELAI . " " . "FROM " . FtaProcessusCycleModel::TABLENAME . ", " . FtaProcessusModel::TABLENAME . " " . "WHERE " . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . "=" . $sqlDataEtatAbreviationValue . " " . "AND " . FtaWorkflowModel::KEYNAME . "=" . $sqlDataIdFtaCategorieValue . " " . "AND " . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . "=" . FtaProcessusModel::KEYNAME . " " . "ORDER BY " . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT); }