Fonction PHP aléatoire : compter_sql()

Affichage d'une fonction PHP au hasard. Ré-actualisez la page et une autre fonction PHP. s'affichera !

compter_sql() ajouté le 2009-05-14 22:17:32 par awelty

<?
function compter_sql($table,$where,$id="id") // RETOURNE LE NOMBRE DE RESULTATS DE LA REQUETE
{

if($where=='') { $where=1; }
$tab=explode(",",$table);
$sql = "select $tab[0].$id from $table where $where";
$p = mysql_query($sql)OR DIE("Erreur sur la requete $sql");
return mysql_numrows($p);

}
?> 

Voter pour cette fonction


compter_sql, permet de connaître le nombre de résultats que va retourner une requête SQL.

Pour appeler la fonction compter_sql, rien de plus simple : il suffit de passer en premier paramètre le nom de la table sur laquelle on veut faire notre requête, en second paramètre la condition pour la requête (par exemple "id > 10") et enfin en troisième paramètre (facultatif) le nom du champ sur lequel on veut compter le nombre d'éléments (généralement la clé primaire de la table).

Commentaires sur la fonctions php

fluminis 18/05/2009 à 23:18

Houla, de loin ca me parrait pas tres optimisé comme fonction :
Ta fonction reccupere "toutes" les lignes retournées par la requete SQL et ne fait que renvoyer le nombre de ligne.
Si ta requete retourne 10 000 enregistrements, ta fonction les reccuperes tous, et te renvoie le nombre. En sortie de ta fonction tu fais surement la vraie requete avec plus de champs sans doute donc pas de cache au niveau de la bdd...

Pourquoi ne pas faire une fonction similaire qui fait un COUNT ?

 0)
	return mysql_result($p,0,0);
else
	return 0;

}
?> 

Guile 21/05/2009 à 21:37

De toutes manières, connaître à l'avance le nombre de résultats d'une requête équivaut à lancer la requête. Sauf si le système de base de données est conçu pour permettre la prévision du nombre, il n'est pas possible de faire ça de façon optimale.
Même un select count(...) lancera la recherche en base de données, le calcul sur les index, etc... Bref... pas bien.

Ma philosophie dans en base de données est : "ne pas chercher à savoir le nombre d'enregistrement".

Les seules exceptions sont : afficher un nombre de pages (genre dans un forum qui affiche des textes, ... je n'en trouve pas beaucoup d'autres. Dans tous les cas, faire un "select count" est une bonne solution.