Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e) (modifié)

Bon bin si j'ai une nouvelle question, j'édite masi je sais pas si vous allez remettre le nez dans se topic :P

 

Donc j'ai une autre question (enfin problème)

 

sur ma page de stats du module, dont voici le code :

 

bloc_head('Stats');


if (get_grade() >= GRD_VISIT) {

  $df_requete = reqmysql("SELECT * FROM	klmclub;");
if(mysql_num_rows($df_requete) > 0)

{
 echo '<br />';
 echo '<center><strong>Stats Général</strong></center>';
	echo '<div class="club_alase">';
	while($df_ligne = mysql_fetch_object($df_requete))

	{
		 echo '<p class="club_clazie"><br>';
		 echo '<br /><strong>'.$df_ligne->pseudo.'</strong>  ';
	 echo 'a réaliser : '.$df_ligne->klm.'Km, sur un objectif de '.$df_ligne->obj.'Km';

	 echo "</p>";

 }
	echo '<hr class="club_pz" /></div>';
}
}

echo "<center><h2>Cela fait donc un total de<strong>$totaluser</strong> Km, pour un objectif global annuel de <strong>$totalclub</strong> Km";


close_table();
?>

 

mais j'ai besoin d'appeler en même temps que "klmclub" l'autre table nommée "klmclub_final" pour faire un calcul tout heuu bête (sauf pour moi)

 

il faut que la valeur de `klm` de chaque users de la table "klmclub" donne un pourcentage d'accomplie du champ `obj` de la table "klmclub_final"

 

ce qui donneras une phrase après (dans le genre) :

 

($pseudo (julkien)) a accompli ($df_ligne->klm(25)) Km de son objectif perso de ($df_ligne->obj(500)) soit $pourcent de l'objectif du club.

 

$pourcent étant égal au pourcentage d'accomplissement, de l'user en %(comme son nom l'indique).

 

Je sais pas si je suis clair, mais bon, je sais pas comment mieux le dire.

 

accessoirement, j'ai chercher comment mettre en graph ses données, mais il faut une librairies GD et compagnie, et j'ai essayer mais sa dépasse largement mon niveau très bas en php....

 

y'a bien une méthode simple en suivant ce lien

 

Mais pareil je n'en comprend pas le fonctionnement...

 

Merci de votre aide ^^

Modifié par julkien

Posté(e)

Actuellement, ta requête revient à faire (oui, j'aime bien avoir explicitement les noms des colonnes) : SELECT pseudo, klm, obj FROM klmclub

 

Pour récupérer un pourcentage représentant le rapport entre klmclub.klm et le total annuel du club, il faut faire une jointure avec klmclub_final (en utilisant l'id comme clé étrangère)

klmclub_final contient plusieurs champ :

`id`

`glob` (anciennement global)

`annu`

Si tu as une colonne "idclub" dans klmclub (on ne sait jamais), tu peux utiliser la requête : SELECT c.pseudo, c.kml, c.obj, ROUND(c.klm / f.annu * 100, 0) as pourcentage FROM klmclub c, klmclub_final f WHERE c.idclub = f.id

 

Si tu n'as pas de colonne "idclub" et que cette info n'est présente que dans la table des ... utilisateurs ? membres des clubs ? alors il faut faire une première jointure entre klmclub et "membres" (on va dire qu'elle s'appelle comme ça) en utilisant le pseudo ou l'id du membre, ainsi qu'une seconde jointure entre membres et klmclub_final en utilisant l'id du club (puisque le rattachement à un club est logiquement fait dans la table membres)...

Posté(e) (modifié)

Ok Kewlcat, encore merci de ton aide, sinon j'en ais une autre un peu différente (de question).

 

je cherche a obtenir un résultat (qu'avec la table klmclub)

 

de manière a faire un total de klm fait par le nombre d'user.

 

enfin pour additionner toutes les entrées dans le champ `klm` entre eux pour avoir un résultat total de tout les klm.

Modifié par julkien
Posté(e)

Je ne suis pas certain d'avoir compris ce que tu veux...

Tu veux le total de km pour tous les membres de tous les clubs ?

SELECT SUM(klm) FROM klmclub

?

Posté(e)
Je ne suis pas certain d'avoir compris ce que tu veux...

Tu veux le total de km pour tous les membres de tous les clubs ?

SELECT SUM(klm) FROM klmclub

?

 

Sum fait le calcul de toutes les entrées dans le champ `klm` ?

Posté(e)

SUM() fait la somme de toutes les valeurs de la colonne (ou de la formule) qui est entre les parenthèses pour tous les enregistrements retournés (donc sans clause WHERE, sur tous les enregistrements de la table)

 

Si tu veux uniquement la somme du club d'id 12, ajoute "WHERE idclub = 12" ...

 

Plus compliqué, si tu veux les sommes pour chaque club, tu peux faire un GROUP BY :

SELECT idclub, SUM(klm) FROM klmclub GROUP BY idclub

Ca te retourne des enregistrements contenant deux colonnes : première colonne l'id du club, seconde colonne la somme des klm de ce club.

 

Vu que tu récupères tes données avec mysql_fetch_object il doit falloir ajouter un alias de colonne :

SELECT idclub, SUM(klm) as somme FROM klmclub GROUP BY idclub

... et tu récupères des enregistrements avec les attributs "idclub" et "somme" : $plop->idclub et $plop->somme (si j'ai bien compris comment marche mysql_fetch_object...)

Posté(e) (modifié)

ok Kewlcat, mais comment tu ressort le chiffres total donnée par Sum ? puisque la df_ligne ne peux pas fonctionner....

 

 

 

EDIT: je sais qu'ont peut limité le nombres de chiffres dérrière la virgule, mais je n'arrive pas a le mettre en ordre (limité a 3 chiffres derrière la virgule).

 

Je sais que c'est une histoire de "number_format($n,2,'.','');" mais je sais pas du tout comment sa fonctionne :P

 

Voici le code concerné :

 

$taille =((($df_ligne->klm/$df_ligne->obj)*100)*4);
$tailler =($taille/4);
$taillefin =(400-$taille);
		 echo '<br />';
		 echo '<img src="modules/km_club/images/leftbar.gif" alt="leftbar" height="15" /><img src="modules/km_club/images/mainbar.gif" alt="mainbar" height="15" width="'.$taille.'" /><img src="modules/km_club/images/rightbar.gif" alt="rightbar" height="15" />';
		 echo '<img src="modules/km_club/images/mainbarb.gif" alt="mainbar" height="15" width="'.$taillefin.'" />';
		 echo '<br /><strong> '.$tailler.' % </strong>de son objectif réussi';
		 echo "</p>";

 

donc $tailler, me donne dans certain calcul, trop de chiffres derrière la virgule..

Modifié par julkien
Posté(e)

Bon, j'ai résolut tout mes problèmes précédament cité, merci a vous.

 

Maintenant j'en ais un autre, et je pense que ça doit être simple a résoudre:

 

J'ai un fichier .txt qu'un script php edit et rajoute des lignes de "log" qui est comme ceci

 

fichier.txt de test

 

donc les lignes s'affichent bien en dessous des une des autres.

 

Voilà mon script qui va chercher ses lignes pour les afficher dans une page php :

 

// ==================================================
// === appelle du fichier texte ou du 22 juin :D ====
// ==================================================

$Fichier = "modules/km_club/test&$id.txt";

if (is_file($Fichier)) {
if ($TabFich = file($Fichier)) {
	for($i = 0; $i < count($TabFich); $i++)
		echo $TabFich[$i];

}
else {
echo "Le fichier ne peut être lu...<br>";

}
}

else {
echo "Désolé le fichier n'est pas valide<br>";

}


// ==========================
// == Fin du fichier texte ==
// ==========================

 

Mais le résultat sur la page php, s'affiche a la suite des une des autres et non plus les une sur les autres.

 

Je cherche donc un moyen de rectifier ça.

 

Merci a ceux qui sauront m'aider.

 

Ps: le fichier .txt est un test d'où une présentation pas très compréhensible :P (un peu comme mon langage)

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...