Petite fonction pour récupérer une seule info dans al base

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

16 oct. 2005, 11:06

Petit fonction inspirer de dlookup de vba (access), elle permet simple d'aller chercher la valeur d'un champ dans une table avec des conditions optionnelles.

Elle évite de se rettaper le code à chaque fois pour une info
function lookup($champ, $table, $condition=""){
	global $connect;

	$sql = "SELECT ".$champ." as valeur FROM ".$table;
	if($condition!="") $sql.= " WHERE ".$condition;
	$result = mysql_query($sql);
	$rst = mysql_fetch_array($result);
	$valeur = $rst['valeur'];
	mysql_free_result($result);
	if($valeur){
		return $valeur;
	}else{
		return false;
	}
}
pour l'utiliser :
$variable = lookup("nomchamp","table","condition");
Exemple:
$variable = lookup("NomUtilisateur","TblUtilisateur","IdUtilisateur=".$IdUtilisateur);
$variable = lookup("count(IdUtilisateur)","TblUtilisateur","");
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Eléphant du PHP | 493 Messages

16 oct. 2005, 11:53

L'idée est interessante mais je te conseille plutot une requete du genre :
if ( empty( $condition ) )
{
    $condition = '1';
}

$sql = 'SELECT * FROM ' . $table . ' WHERE ' . $condition . ' LIMIT 1';
Ensuite du place les resultats du fetch_array() en cache, ce qui te permet de ne pas rééexécuter une requete sur la table pour un autre champ !

J'espere t'avoir aidé pour l'optimisation de ta fonction :)

Eléphant du PHP | 281 Messages

16 oct. 2005, 13:39

Vaedan, je penses pas que ce soit une bonne idée le select * surtout pour un champ ;)

Mammouth du PHP | 19672 Messages

16 oct. 2005, 13:40

Jeu, set et match Ouaibou :langue:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

16 oct. 2005, 16:54

Modération :
Monsieur Cyrano, je vous en prie... [-X
Trop top de modérer un modérateur ! Rhâââ lovely... :langue:




La proposition de Vaedan est quand même intéressante et pertinente :
- avantage : évite de multiplier les appels à la fonction pour plusieurs champs
- inconvénient : le SELECT *

Voici ma suggestion :
Passer un tableau $champs comme paramètre d'entrée de la fonction.
Ce tableau contient alors la liste des champs à placer dans le SELECT.
Bilan : un seul parcours de la table par le SELECT. :pouce:

Sinon, on peut aussi utiliser une simple chaîne dans laquelle
on concatène/déconcatène les noms des champs à sélectionner.
Mais c'est moins élégant...

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

16 oct. 2005, 17:13

"avantage : évite de multiplier les appels à la fonction pour plusieurs champs"
on perd la finalité de ma fonction, elle répond à un besoin bien spécifique. son intérêt c'est de récupérer la valeur d'un champ quelque pars dans la base.

Pratique aussi pour ce genre de cas :
$variable = lookup("count(IdUtilisateur)","TblUtilisateur","TypeUtilisateur='VIPHP'"); 
ou si à un seul endroit du site on a besoin par exemple de l'adresse mail de l'utilisateur en cours. Si on a besoin qu'à un seul endroit et encore si l'internaute va sur la page en question. Inutile de stocker l'adresse mail en session quand l'utilisateur se connecte. Avec ma fonction on va juste cherche l'adresse mail.
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]