Affichage de la somme des resultat d'une requete

iramirim Messages postés 2 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 16 février 2010 - 15 févr. 2010 à 20:57
iramirim Messages postés 2 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 16 février 2010 - 16 févr. 2010 à 01:53
Bonjour, d'abord, je debute en php, donc, desolé si ma question est trop bête et mes excuses aussi pour les possibles erreurs de français car je suis brésilienne!

j'ai une base de donnes qui garde les noms des fichier JPG pour un site de photos. J'ai comme champs ID, sujet, type, photo01, photo02, photo03, ..., photo12. J'ai fait une page qui affiche combien des photos j'ai pour chaque sujet, donc, la requete compte les champs des photos non vides et affiche le resultat par sujet.

J'essaye aussi d'afficher le nombre total de photos (ou de champs photo non vides, si vous preferez) dans la base, mais je ne sais pas comment le faire.

Voici le code que j'ai :

$req = mysql_query("SELECT * FROM photos ORDER BY type");
while ($rep = mysql_fetch_array($req) )
{
$nom=$rep["sujet"];
$dt=$rep["type"];
echo '<li>'.'Photo de '."$nom".' - '."$dt".' : ';
$nb = 0;

$vide1=$rep["photo01"];
if(!empty($vide1))
{$nb++;

$vide2=$rep["photo02"];
if(!empty($vide2))
$nb++;

$vide3=$rep["photo03"];
if(!empty($vide3))
$nb++;

$vide4=$rep["photo04"];
if(!empty($vide4))
$nb++;

$vide5=$rep["photo05"];
if(!empty($vide3))
$nb++;

$vide6=$rep["photo06"];
if(!empty($vide6))
$nb++;

$vide7=$rep["photo07"];
if(!empty($vide7))
$nb++;

$vide8=$rep["photo08"];
if(!empty($vide8))
$nb++;

$vide9=$rep["photo09"];
if(!empty($vide9))
$nb++;

$vide10=$rep["photo10"];
if(!empty($vide10))
$nb++;

$vide11=$rep["photo11"];
if(!empty($vide11))
$nb++;

$vide12=$rep["photo12"];
if(!empty($vide12))
$nb++;


echo 'Il y en a '.$nb.' photos.'.'
';
}
else
{
print("Pas encore de photo pour ce sujet!").'
';

}
echo "
";
}


Pourriez vous m'aider ???? Je suis vraiment coincé !!!

Je vous remercie enormement !!!

Mel




   La vie est un petit voyage qu'il faut faire en première classe ! 

2 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 févr. 2010 à 22:32
Salut,

[...] car je suis brésilienne!

Ne serait ce pas plutôt pour séduire les beaux mâles de CS et ainsi obtenir une réponse rapide que tu précises cela ??

Pourquoi ne fais tu pas ce traitement directement dans la requête SQL ?
Tu y gagnerai en performance et en simplicité :

SELECT id, 
sujet, 
CAST(photo01 IS NOT NULL AS UNSIGNED) 
+ CAST(photo02 IS NOT NULL AS UNSIGNED) 
+ CAST(photo03 IS NOT NULL AS UNSIGNED) 
+ CAST(photo04 IS NOT NULL AS UNSIGNED) 
+ CAST(photo05 IS NOT NULL AS UNSIGNED) 
+ CAST(photo06 IS NOT NULL AS UNSIGNED) 
+ CAST(photo07 IS NOT NULL AS UNSIGNED) 
+ CAST(photo08 IS NOT NULL AS UNSIGNED) 
+ CAST(photo09 IS NOT NULL AS UNSIGNED) 
+ CAST(photo10 IS NOT NULL AS UNSIGNED) 
+ CAST(photo11 IS NOT NULL AS UNSIGNED) 
+ CAST(photo12 IS NOT NULL AS UNSIGNED) 
AS nb_photo_par_sujet
FROM ta_table
GROUP BY sujet


Cela implique que tes champs photoXX soient définis à NULL s'ils sont vides.
Pour ce qui est de compter le nombre total de photos non vides tu peux exécuter cette requête :

SELECT SUM(CAST(photo01 IS NOT NULL AS UNSIGNED) 
+ CAST(photo02 IS NOT NULL AS UNSIGNED) 
+ CAST(photo03 IS NOT NULL AS UNSIGNED) 
+ CAST(photo04 IS NOT NULL AS UNSIGNED) 
+ CAST(photo05 IS NOT NULL AS UNSIGNED) 
+ CAST(photo06 IS NOT NULL AS UNSIGNED) 
+ CAST(photo07 IS NOT NULL AS UNSIGNED) 
+ CAST(photo08 IS NOT NULL AS UNSIGNED) 
+ CAST(photo09 IS NOT NULL AS UNSIGNED) 
+ CAST(photo10 IS NOT NULL AS UNSIGNED) 
+ CAST(photo11 IS NOT NULL AS UNSIGNED) 
+ CAST(photo12 IS NOT NULL AS UNSIGNED))
AS nb_total_photos
FROM ta_table


Si tu dois déjà passer la première requête dans ta page le mieux reste de faire la somme en php afin de ne pas exécuter la seconde.

Tout cela devrait fonctionner, mais il y a sans doute plus simple ( vais laisser tranquille mon cerveau déjà bien abimé pour ce soir)

Cordialement,

Kohntark -
0
iramirim Messages postés 2 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 16 février 2010
16 févr. 2010 à 01:53
Bonsoir Kohntark ! Tout d'abord, merci pour ta réponse !


[...] car je suis brésilienne!


Ne serait ce pas plutôt pour séduire les beaux mâles de CS et ainsi obtenir une réponse rapide que tu précises cela ??


J'ai plutot pensé à éviter d'être engueulé a causes des mes fautes (comme je vois souvent arriver sur les forums avec des gens qui ecrivent mal) que de vous séduire, mais tu sais que ce n'est pas du tout une mauvaise idée ?! héhé...

Passons au sérieux ! (Cela ne veut pas dire que la seduction ne soit pas un sujet sérieux!)

Je pense que je suis un peu trop debutante pour être ici...

J'ai essayé ton code sur ma table apres avoir changé les paramètres a NULL comme tu m'as expliqué, mais je toujours 2280 photos comme résultat (190 sujets X 12 champs de photos) ou 12 photos par sujet, donc, je fais une betise quelconque ! Voici une copie du parametrage de la table...



Mise a part ce petit probleme que, j'imagine, ce n'est qu'un petit detail que "la blonde" n'a pas bien regle, je me demande comment ajouter la requete SQL dans le php pour que le resultat soit affiche en ligne ...

Je vous avais prévenus, je suis vraiment une debutante et je me mêle toujours des affaires plus complique que ma connaissance arrive a régler !!!

Reposes toi bien !!!

@+


   La vie est un petit voyage qu'il faut faire en première classe ! 
0
Rejoignez-nous