Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Query per la Foto più votata del mese.

    Ciao a tutti!
    Grazie a questo sito la mia conoscenza del php è andata progressivamente crescendo, quindi ne approfitto inanzitutto per ringraziare tutti!

    Ho deciso di aprire un nuovo topic perchè cercando nel forum non ho trovato nulla di utile a risolvere un problema che mi sta facendo impazzire.
    Ho creato un sito dove gli utenti postano le foto, ogni voto può essere votata (in una scala da 1 a 5).
    Nell'index vorrei far apparire la foto più votata del mese.

    Ho una tabella (voto) in cui viene registrato il voto (voto), l'id della foto votata (foto) e l'utente che ha votato.

    Ecco il codice per come l'ho scritto io:

    Codice PHP:
    $query ="SELECT MAX(voto) AS votomax, foto FROM voto WHERE (SELECT AVG(voto) FROM voto) GROUP BY foto";
    $resultmysql_query($query,$conn) or die( " Errore" .mysql_error()); 
    $row mysql_fetch_array($result); 
    echo 
    ' Voto: '.$row['votomax'].' Foto:'.$row['foto'].''
    Il problema è che non mi da neanche errore... proprio non mi appare nulla.
    Sicuramente la query è sbagliata, ma non mi viene nulla in mente... magari voi potreste risolvere il mio problema in un attimo!
    Grazie in anticipo a chi vorrà rispondere.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non mi è chiaro in base a quale criterio vorresti considerare la foto più votata.

    In base alla media, al semplice totale dei voti di ciascuna o cos'altro?

  3. #3
    In base alla media dei voti che ha ricevuto.
    Quindi prima si fa la media dei voti che ha ricevuto ogni singola foto e poi si prende la foto con la media più alta.
    Il problema è che non so come annidare queste due query.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select foto,avg(voto) as media 
    from voto
    group by foto
    order by media desc
    limit 1


    Magari evita di attribuire ad un campo e alla tabella lo stesso nome.

  5. #5
    Già, è stato un errore grossolano. Mi vergogno e mi pento!
    La soluzione era più semplice di quanto avessi pensato.
    Comunque grazie mille Nicola75, sei stato gentilissimo!
    Ora cercherò di arrotondare la media, ci sarà sicuramente un modo per farlo.
    Bye bye!

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Arrotondare a cosa?

  7. #7
    La media viene restituita con 4 decimali, per esempio nel caso del sito che sto progettando la foto del mese ha una votazione media di 4.0000.
    Vorrei che restituisse soltanto il 4 (quindi togliere completamente i decimali).
    Ora tenterò così:

    "
    AVG(CAST(voto AS int))
    AS media
    "

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    truncate(avg(voto),0)

  9. #9
    Il mio tentativo è fallito, il tuo suggerimento mi ha salvata anche stavolta! Ancora grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.