[PHP] Classer les données de plusieurs tables

YannOuch -  
AssassinTourist Messages postés 7838 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir,

Voilà, pour résumer la situation, je bloque depuis 3 semaines pour regrouper et classer les données de plusieurs tables selon un champ identique sur celles-ci.
Voici le code en question :
<?php
//INFOS DE CONNEXION A LA BDD
$ppo = mysql_query("SELECT fn FROM tasks");
$tak = mysql_fetch_array($ppo);

$ppo = mysql_query("SELECT fcode FROM tasks WHERE fn='.htmlentities($tak['fn']).' ");
$tak = mysql_fetch_array($ppo);

$req=mysql_query('SELECT fid, COUNT(*) AS nb_clic FROM task'.htmlentities($tak['fcode']).' WHERE fdate BETWEEN "2012-01-01" AND "2012-01-31" GROUP BY fid ORDER BY nb_clic DESC LIMIT 0,15');
?>
Pour la petite explication, fcode le numéro de la table task. Elle même présenté/décrite dans la table tasks.
Je récupère donc les numéros des tables sur tasks et les associes a task. Mais lors de l'affichage suivant, pour le clasement, au lieu d'apparaître le nombre d'entrés total/jour additionnés, j'ai le nombre de jour additionnés entre la date de début et date du jour bien entendu.
Voici pour l'affichage de mon classement :
<?php
$i = 0;
while($infos = mysql_fetch_array($req))
{
$i++;
$user_id = $infos['fid'];
$rep = mysql_query("SELECT username FROM users WHERE fid=$user_id");
$user = mysql_fetch_array($rep);

if ($i%2 == 0) { $resultat = '#6CB3DD'; }
else if ($i%2 == 1) { $resultat = '#ADD3FF'; }
?>
<tr>
<td style="background-color:<?php echo $resultat; ?>;border: 1px solid #183F77;"><?php echo $i; ?></td>
<td style="background-color:<?php echo $resultat; ?>;border: 1px solid #183F77;"><?php echo $user['username']; ?></td>
<td style="background-color:<?php echo $resultat; ?>;border: 1px solid #183F77;"><?php echo $infos['nb_clic']; ?></td>
</tr>
<?php
}
?>

Si une ou des personnes aurait une idée de ce qui cloche !
Je vous remercie par avance, et vous souhaite une bonne soirée.
Bien amicalement, Yann.



A voir également:

1 réponse

AssassinTourist Messages postés 7838 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Je n'ai pas compris ce que tu avais comme résultat au final et ce que tu voulais en fait comme résultat au départ.
0
AssassinTourist Messages postés 7838 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Est-ce que le résultat de tes requêtes est bon ? Tu l'as testé directement dans ta base ?
0
YannOuch
 
Bonsoir,
Désolé, entre temps je suis reparti travailler. (Restauration).

Je souhaite obtenir comme résultat le total d'entrées de fid dans les tables task'.htmlentities($tak['fcode']).' entre deux dates. Soit ici entre le 1er et le 31 Janvier 2012.
Or j'ai au final le nombre de jours ou fid est dans task'.htmlentities($tak['fcode']).' du 1er au jour en cours, soit 19 jours si fid est entré 19 fois.

J'ai fais le test sur ma page :
<?php echo $tak['fcode']; ?> : et en effet ça cloche, en place d'avoir tous les numéros j'en ai un seul !
Et quand je teste ma requete ($req) j'ai une erreur également : Ressource ID#44 ..

Pourtant, je récupère de la même façon, les numéros sur une autre page de mon site.

COmment le testé directement dans ma base ? De la même manière ?
En vous remerciant,
Bien amicalement, Yann.
0
AssassinTourist Messages postés 7838 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Avec phpmyadmin, tu as un onglet de ta base qui est SQL il me semble. Tu as un textarea où tu peux faire directement tes requêtes SQL et la base te dira soit tes erreurs soit le résultat complet qu'il récupère.

Et c'est normal que <?php echo $tak['fcode']; ?> renvoie qu'une seule valeur. Tu lui fais en gros un tab[2], càd la valeur dans la case.

Si tu veux faire le calcul sur plusieurs tables, tu ne peux pas mettre plusieurs tables dans ton SELECT FROM. Pour cela, il faut plutôt faire un JOIN de tes tables pour avoir au final qu'une table et faire tes recherches là-dessus. La commande, c'est INNER JOIN (ou OUTER JOIN, ça dépend ce que tu veux)
http://www.areaprog.com/sql/cours-308-les-jointures-inner-join-left-right-et-full-outer-join
http://www.trucsweb.com/Tutoriels/asp/tw104/
Je crois que ça peut le faire même si les tables n'ont (rien en commun)
0