Top 20 uploadeur photo

Credule
Invité n'ayant pas de compte PHPfrance

14 avr. 2012, 16:08

Bonjour,

Je veux en faite faire une page « TOP 20 des uploadeurs images » qui me sera réservée. J'ai fait le principal mais je ne sais pas trop comment dire « Sélectionnez les utilisateurs ayant le plus d'images (décroissant), mais pas plus de 20 ».

En faite, le soucis c'est que cela se passe sur deux tables.
Une table réservée aux images (dans laquelle le champ userid contient l'ID du membre ayant envoyé l'image) et une table réservée aux utilisateurs (avec un champ ID pouvant les identifier). Et avec ces deux champs, je dois trouver le moyen de les afficher. J'ai pensé à une jointure SQL mais je bloque je vous jure. :(



Voici ce que j'ai en vrac (il y a des variables en double et qui ne sont pas utilisées, je bloque donc je teste le maximum de truc) :
<?php

// On séléctionne tous les champs de la table « users ».
$initialisation_utilisateurs = mysql_query("SELECT * FROM users");
$initialisation_images = mysql_query("SELECT * FROM uploaded_images");

$initialisation_classement = mysql_query("SELECT users.id, uploaded_images.userid, FROM users, uploaded_images");
$initialisation_classement2 = mysql_query("SELECT COUNT(file) AS topuser FROM uploaded_images WHERE userid = ' " . mysql_real_escape_string($row1['id']) . " '");

// On effectue un tri (séléctionnez les 20 qui ont le plus d'images).
$top_utilisateur = mysql_query("SELECT COUNT(file) AS top_user FROM uploaded_images WHERE userid = '".mysql_real_escape_string($initialisation_utilisateurs['id'])."' ORDER BY top_user DESC LIMIT 0,10");

while($row1 = mysql_fetch_array($initialisation_utilisateurs))
{

if($row1['status']== 1) {

$row1['status'] = '<span style="color:green;">Activé</span>';

} elseif($row1['status']== 0) {

$row1['status'] = '<span style="color:red;">Désactivé</span>';

} elseif($row1['status']== 2) {

$row1['status'] = '<span style="color:red;">Banni</span>';

} else {

$row1['status'] = 'Inconnu';

}

echo '<tr>';

echo '<td>' . $row1['id'] . '</td>';

echo '<td><a href="members.php?page=admin&sp=users&manage=' . $row1['id'] . '">' . $row1['email'] . '</a></td>';

echo '<td>' . date("d/m/Y",$row1['create_date']) . '</td>';

echo '<td>' . $row1['status'] . '</td>';

$top = mysql_query("SELECT COUNT(file) AS topuser FROM uploaded_images WHERE userid = ' " . mysql_real_escape_string($row1['id']) . " '");

while($row2 = mysql_fetch_array($top)) {
echo '<td>' . $row2['topuser'] . '</td>';
echo '</tr>'; }

} 
Vous pouvez le voir c'est le bordel, mais là je bloque vraiment vraiment.
Pourriez-vous m'aider ?

Merci à tous.

Mammouth du PHP | 790 Messages

14 avr. 2012, 16:26

salut, un truc de ce genre devrait te mettre sur la vois je pense:
'SELECT   
    img.id      AS  id_img,
    img.id_user AS  im_id_user,
                                                
    us.user_id  AS  id_user
                                             
    FROM images AS  img
                                                
    LEFT OUTER JOIN table_user AS  us ON img.id_user = us.id_user
                                               
    // la suite ici... '
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 avr. 2012, 16:35

Manque un group by userid et une limite (20)

@+
Il en faut peu pour être heureux ......