fonctions MySQL simplifiées

Eléphant du PHP | 153 Messages

11 sept. 2005, 01:00

Donc petite explication :

Ces fonctions ont surtout pour but de ne pas se trimbaler avec toutes les fonctions de mysql dans la tête, et permet de récupérer un tableau, que je trouve pour ma part, très pratique car il contiendra les noms des champs en nom de colonne. Et enfin, elles permettent la gestion de petites statistiques afin de savoir la durée maximale d'ouverture de la base de donnée.

Le défaut que je viens de trouver (en parcourant le forum), c'est que ces fonctions sont très utiles s'il n'y a qu'une seule base... mais ca doit bien pouvoir se modifier s'il y en a plusieurs... (le pire c'est que mon précédent script le faisait)... il suffit en fait de mettre le global $reference_bd_ouverte dans l'argument des fonctions.

my (pour mysql oh c'est original !! et aussi parce que c'est moi qui l'est faite) + operation

open = ouvrir ;)
exec = executer
close = fermer
dernid = valeur du dernier element ajouté.

A noté qu'il s'agit de mysql 4.1 (mysqli) dans l'exemple par défaut, mais passer à une version mysql il suffit de remplacer les commandes mysql par celles qui sont en commentaire :)

Fonction pour se connecter (un peu de forcing... :oops: )
<?
function myopen()
{
	global $duree_ouverture_bd, $reference_bd_ouverte, $nb_de_requete;
	$duree_ouverture_bd = explode(" ",microtime());
        $nb_de_requete = 0;

	$hostname_base = "";
	$database_base = "";
	$username_base = "";
	$password_base="";

	if($reference_bd_ouverte = @mysqli_connect($hostname_base, $username_base, $password_base, $database_base))
		return $reference_bd_ouverte;
	else
		return myopen();

/* MYSQL 4.0 et inf
	if($reference_bd_ouverte = @mysql_connect($hostname_base, $username_base, $password_base))
	{
		mysql_select_db($database_base);
		return $reference_bd_ouverte;
	}
	else
		return myopen();
*/
}
Fonction pour exécuter une requete, renvoyer un tableau, afficher une erreur,
function myexec($commande,$chut=false)
{ // $commande = requete sql, $chut = si vrai => si erreur aucun affichage
	global $nb_de_requete,$reference_bd_ouverte;
	$nb_de_requete++;
	if(!$reference_bd_ouverte)
		$reference_bd_ouverte = myopen();

	$tableau = @mysqli_query($reference_bd_ouverte,$commande);
	if(mysqli_error($reference_bd_ouverte))
	{
		if(!$chut)
			print ("<br />".mysqli_error($reference_bd_ouverte)."<br />Commande : ".$commande."<br />");
		$contenu['chut']=1;
	}

	$i=1;
	while($ligne = @mysqli_fetch_assoc($tableau))
		$contenu[$i++]=$ligne;

/* MYSQL 4.0 et inf
	$tableau = @mysql_query($commande,$reference_bd_ouverte);
	if(mysql_error($reference_bd_ouverte))
	{
		if(!$chut)
			print ("<br />".mysql_error($reference_bd_ouverte)."<br />Commande : ".$commande."<br />");
		$contenu['chut']=1;
	}

	$i=1;
	while($ligne = @mysql_fetch_assoc($tableau))

		$contenu[$i++]=$ligne;
*/
	return $contenu;
}
Fonction pour fermer la connection (et faire un peu de statistiques)
function myclose()
{
	global $duree_ouverture_bd,$reference_bd_ouverte;
	if($reference_bd_ouverte)
	{
		mysqli_close($reference_bd_ouverte);
/* MYSQL 4.0 et inférieur
		mysql_close($reference_bd_ouverte);
*/
		$duree_ferm = explode(" ",microtime());
		$duree_ouverture_bd[0] =  $duree_ferm[0]- $duree_ouverture_bd[0];
		$duree_ouverture_bd[1] =  $duree_ferm[1]- $duree_ouverture_bd[1];
		if($duree_ouverture_bd[0]+$duree_ouverture_bd[1]>file_get_contents("tps_connection_bd.txt"))
		{
			$f = fopen("tps_connection_bd.txt","w");
			fputs($f,$duree_ouverture_bd[0]+$duree_ouverture_bd[1]);
			fclose($f);
		}
	}
}
Renvoyer le dernier id ajouté (rien d'exceptionnelle celle là, mais j'arrivais jamais à me souvenir du nom entier de la fonction :oops: ...)
function mydernid()
{ // retourne la valeur du dernier enregistrement ajouté
	global $reference_bd_ouverte;
	return mysqli_insert_id($reference_bd_ouverte);
/* MYSQL 4.0 et inférieur
	return mysql_insert_id($reference_bd_ouverte);
*/
}
?>
Pitié soyez indulgeant !!! Massacrez pas mon espoir d'avoir fait un truc bien !!!!! :D Ca vous plait sinon ? Qu'est ce qui pourrait être amélioré ?
http://gl2.delcedo.com/ Galaxialord 2 !

Eléphant du PHP | 493 Messages

11 sept. 2005, 10:55

Je ne comprend pas une chose.
En quoi les fonctions sont simplifiées ?! Au contraire ton code me semble bien plus difficile à cerner ! Pourquoi tu utilises pas plutot une class qu'une suite de fonctions ? Je t'invite à venir voir ma source.