Page 1 sur 1

Condition sur un comptage

Posté : 25 juil. 2009, 22:04
par cmoi
Bonjour,

ce code
$nb = mysql_num_rows(mysql_query("SELECT id FROM $table"));
	echo '<font face="Verdana, Arial, Helvetica, sans-serif" size="2">('.$nb.')</font>'; 
compte et affiche un nombre d'enregistrements.

Comment faire pour compter et afficher certains de ces enregistrements en fonction d'une condition ? La condition est qu'un champ "valid" soit sur 1 ou sur 0. Je ne sais pas comment écrire cela.

Merci pour l'aide.

Posté : 25 juil. 2009, 22:26
par niuxe
Salut,
...
Comment faire pour compter et afficher certains de ces enregistrements en fonction d'une condition ? La condition est qu'un champ "valid" soit sur 1 ou sur 0. Je ne sais pas comment écrire cela.
...
Apparemment, c'est simple :
//prenons le cas d'une case à cocher
//<input type="checkbox" name="uneCheckbox[]" value="ok" />
if($_REQUEST['uneCheckbox'][0] == "ok"){
	$nb = mysql_num_rows(mysql_query("SELECT id FROM $table"));
	echo '<font face="Verdana, Arial, Helvetica, sans-serif" size="2">('.$nb.')</font>';
}
Si c'est au niveau de la requête SQL :
//prenons toujours le cas de case à cocher
//<input type="checkbox" name="uneCheckbox[]" value="ok" />
$sqlCondition = "";
if($_REQUEST['uneCheckbox'][0] == "ok"){
	$sqlCondition = "WHERE unChamp ='uneValeur' ";
	$sqlCondition .= "OR unAutreChamp = 'uneAutreValeur'";	
}
$nb = mysql_num_rows(mysql_query("SELECT id FROM $table".$sqlCondition));
echo '<font face="Verdana, Arial, Helvetica, sans-serif" size="2">('.$nb.')</font>';
}
<<<EDIT
Si tu veux le faire un peu plus dynamique, regarde ceci en exemple :
$sql = "SELECT nom,prenom,age FROM personne ";
$sqlCondition = "WHERE ";
$and = "AND ";
$condition = array();

while(list($clef,$valeur) = each($_REQUEST['couleurCheuveux'])){
    switch($valeur){
        case "blond":
            $condition[] = "blond = 'true' ";
            break;
        case "brun" :
            $condition[] = "brun = 'true' ";
            break;
        case "chatain":
            $condition[] = "chatain = 'true' ";
            break;
        default :
            unset($condition); 
    }
}
$sqlCondition .= (isset($condition))? implode($and,$condition): "";
$sql .= $sqlCondition;

echo $sql;
EDIT;
++

Posté : 26 juil. 2009, 10:35
par cmoi
je me suis mal exprimé :oops:
Le champ "valid" ne provient pas d'un formulaire mais d'une base mysql.

Posté : 26 juil. 2009, 12:59
par niuxe
Alors, c'est dans ta « query » qu'il faille mettre une condition :

/*
 * SELECTION nom,prenom,age DE LA TABLE personne
 * SI cheuveux SONT blond
 */

$sql = "SELECT nom,prenom,age FROM personne "; 
$sql .= "WHERE cheuveux = 'blond'";


Posté : 26 juil. 2009, 15:32
par cmoi
c'est encore plus simple que ça :
 $nb = mysql_num_rows(mysql_query("SELECT id FROM $table WHERE validation=1"));
Merci pour la piste.