note 32623 deleted from function.mysql-result by didou
| From: | didou@php.net | Date: | Tue, 03 Jun 2003 10:58:20 +0000 |
| Subject: | note 32623 deleted from function.mysql-result by didou | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-49609@lists.php.net to get a copy of this message | ||
Note Submitter: Boris Sanègre
----
/*
Chargement rapide de toutes les variables d'une table
*****************************************************
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 de créer les variables d'un table MySQL pour un enregistrement
particulier.
Prenons un exemple:
Vous avez une page index.php contenant des objet HTML (liste, text, textarea ...)
Vous souhaitez charger les données d'une Fiche N°23 d'une table "recette".
Solution:
Le nom des variables définissant le valeurs par défaut des objets HTML doivent être
identique au nom des champs de la table:
Nom de la table: recette
Champs:
id_recette
nom_recette
... (et 450 autres champs)
Donc dans votre code, il y a les variables $id_recette,
$nom_recette (...etc.) pour les 'value=' de vos objets HTML
Pour charger l'enregistrement N°23, mettez en début de page
# $nom_table = 'recette';
# $id_recette = '23'; //Cette variable sera INDIRECTEMENT
//reprise par la fonction
# mysql_table_load($nom_table);
La fonction recherche l'existance des clefs et leur valeur
Et toute vos variables sont chargées immédiatement!!
Très utile lorsqu'il y a beaucoup de variables.
Voici la fonction en question à inclure.
Note: Une fois la saisie terminée, vous pouvez utiliser la fonction perso
mysql_table_operation()
Remarque: La seule contrainte est d'être rigoureux dans le nom des champs
MySQL et des variables ... mais la rigeure devient efficacité sur le long terme.
*/
function mysql_table_load($nom_table)
{
/*
Dictionnaire des variables:
***************************
*/
$bdd = $GLOBALS['bdd']; //Variable Globale définissant le nom de la base de
données MySQL
$nom_table; //Nom de la table à charger
$premiere_operateur_where = 1; //Permet de supprimer les AND en trop dans la
//construction des WHERE
/*
Travaux préparatoires:
**********************
*/
//Requête MySQL
$req_where = " WHERE ";
//Recherche des clefs de la table
$propriete = mysql_query("DESC $nom_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 . "'"
;
}//Fin de Recherche de la clef sur ce champ
}//Fin de recherche des clefs
$req1 = "SELECT * FROM $nom_table " . $req_where;
$result1 = mysql_query($req1);
/*
Corps de la fonction
********************
*/
$fields = mysql_list_fields($bdd, $nom_table);
$num_fields = mysql_num_fields($fields);
for ($i = 0; $i < $num_fields; $i++)
{
//Récupération du nom de la variables
$nom_variable = mysql_field_name($fields, $i);
//Exportation de la valeur de la variable dans
//Une variable globale accessible hors de la fonction
$GLOBALS[$nom_variable] = mysql_result($result1, 0, $nom_variable);
}
}//Fin de mysql_table_load()