New Function

From: Date: Tue, 03 Jun 2003 10:46:54 +0000
Subject: New Function
Groups: php.mirrors 
Request: Send a blank email to php-mirrors+get-18487@lists.php.net to get a copy of this message
Hi. Can you post this function on 'http://www.php.net/manual/fr/function.mysql-result.php' I think it's too long. Thank you very much for your website. Boris Sanègre - FRANCE /* Mise à jour ou insertion d'un enregistrement dans une table MySQL ***************************************************************** Faites vous plaisir, optimsez cette fonction ! Créé par : Boris Sanègre - 2003.06.02 Amélioré par: C'est à vous ... Merci à: HAPedit, www.php.net Cette fonction permet d'effectuer des opérations de base sur un enregistrement d'une table MySQL. Les opérations sont définit par la variable $operation dont voici les possibilités actuelles: - update : Effectue une mise à jour de l'enregistrement - delete : Supprime l'enregistrement - rewrite : Réécrit entièrement l'enregistrement en gardant le "$id_nom_table" - copy : copie l'enregistrement en affectant un nouvel identifiant. Seule la variable "$id_nom_table" est prise en compte - clone : Créé un doublon de l'enregistrement "$id_nom_table" - insert : Créé un nouvel enregistrement. (Ne tient pas compte de la variable "$id_nom_table") */ function mysql_table_operation($nom_table, $operation) { /* Dictionnaire des variables: *************************** */ $bdd = $GLOBALS['bdd']; //Variable Globale définit dans /lib/session.php et //représente le nom de la base de données $nom_table; //Nom de la table à charger $operation; //update, delete, rewrite, copy, clone ou insert $premiere_virgule_update = 1; //Permet de supprimer les virgules en trop dans la //construction des requêtes UPDATE $premiere_virgule_insert = 1; //Permet de supprimer les virgules en trop dans la //construction des requêtes 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 /* Corps de la fonction ******************** */ //Initialisation des requêtes $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; //Reste à créer $req_clone; //Reste à créer //Récupération des variables $fields = mysql_list_fields($bdd, $nom_table); $propriete = mysql_query("DESC $nom_table"); $num_fields = mysql_num_fields($fields); //Recherche des clefs de la table while ($rows1=mysql_fetch_array($propriete)) { //Création de la variable potentiellement PRIMARY KEY $primary_key = $rows1[Field]; //Est-ce que ce champ est une clef et qu'une variable est définit if ( ($rows1[Key]=="PRI") AND (isset($GLOBALS["$primary_key"])) ) { //Affectation de la valeur de la variables $$primary_key = $GLOBALS["$primary_key"]; //Intégration de la clef PRIMAIRE dans les requêtes $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 éviter de les retrouver dans la suite des requêtes switch ($operation) { case 'insert': case 'copy' : $$primary_key = ''; break; } }//Fin de Recherche de la clef sur ce champ }//Fin de recherche des clefs //Intégration des variables dans les requêtes for ($i = 0; $i < $num_fields; $i++) { //Récupération du nom des variables $nom_variable = mysql_field_name($fields, $i); //Vérification de la déclaration de cette variable, if (isset ($GLOBALS[$nom_variable])) { //Déclaration en interne dans cette fonction $$nom_variable = $GLOBALS[$nom_variable]; //Construction des requêtes //Requête UPDATE $virgule = ", "; if ($premiere_virgule_update) { $virgule = ''; } $premiere_virgule_update = 0; $req_update .=$virgule . "`" . $nom_variable . "`='" . $$nom_variable . "' " ; //Requête INSERT et REWRITE $virgule = ", "; if ($premiere_virgule_insert) { $virgule = ''; } $premiere_virgule_insert = 0; $req_insert .=$virgule . "`" . $nom_variable . "`" ; $req_insert_values .=$virgule . "'" . $$nom_variable . "'" ; } }//Fin de la construction des requêtes //Finalisation des requetes //Requête UPDATE: $req_update .= $req_where; //Requête DELETE: $req_delete .= $req_where; //Requête INSERT: $req_insert .= ")" . $req_insert_values . ");" ; //Requête REWRITE: // un DELETE, puis un INSERT //Requête COPY: $req_copy; //Requête CLONE: $req_clone; //Exécution des requêtes switch ($operation) { case 'update' : mysql_query($req_update); break; case 'delete' : mysql_query($req_delete); break; case 'insert' : mysql_query($req_insert); break; case 'rewrite': mysql_query($req_delete); mysql_query($req_insert); break; case 'copy' : mysql_query($req_copy); break; case 'clone' : mysql_query($req_clone); break; } //Renvoi de la fonction switch ($operation) { case 'copy' : case 'insert' : $return = "id_" . $nom_table . "=" . mysql_insert_id(); break; default: $return; break; } return $return; }//Fin de la fonction "operation_mysql"

« previous php.mirrors (#18487) next »