Visualizzazione dei risultati da 1 a 9 su 9

Discussione: calcolo della media

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027

    calcolo della media

    buonasera,

    in questa semplicissima operazione sto riscontrando un problema e siccome sto un pò fuso che è tutto il giorno che programmo non riesco a venirne a capo.

    un pò di codice

    codice:
    $col = 'mysql:host=sql.***;dbname=***';
     $db = new PDO($col , '***', '****');
     $sql = $db->prepare("INSERT INTO votazioni (idimmagine,idutente,voto) VALUES (:idimmagine,:idutente,:voto)");
     $sql->execute(array(':idimmagine'=>$_POST['idimg'],':idutente'=>$_POST['idutente'],':voto'=>$_POST['voto']));
     $inner_join = $db->prepare("SELECT * FROM votazioni V INNER JOIN immagini I ON I.id = V.idimmagine");
     $inner_join->execute();
     $res_inner=$inner_join->fetchAll();
     $num_voti = 0;
     $tot_voto = 0;
     foreach($res_inner as $voto){
         $num_voti = $num_voti + 1;
         $tot_voto = $tot_voto + $voto['voto'];
     }
     $media = $tot_voto / $num_voti;
     $ins_media = $db->prepare("UPDATE immagini SET media=? WHERE id=?");
     $ins_media->execute(array($media,$_POST['idimg']));
    non capisco come mai il risultato del campo media all'interno della mia tabella sia sempre 3!

    mi aiutate? Grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Secondo me ti manca la clausola where nella query "Select * from votazioni ... Etc" com'è fatta prendi tutti i record e non solo quei che hanno l'id postato.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    aspetta forse ho sbagliato il calcolo e il foreach, la select è giusta, l'h modificata così:

    SELECT voto FROM votazioni V INNER JOIN immagini I ON I.id = V.idimmagine

    perchè io voglio che selezioni solo il contenuto della colonna voto su tutti i voti dell'immagine legata alla tabella immagini

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ho fatto così ma nulla sempre 3 mi dice

    codice:
     $inner_join = $db->prepare("SELECT * FROM votazioni V INNER JOIN immagini I ON I.id = V.idimmagine");
     $inner_join->execute();
     $res_inner=$inner_join->fetchAll();
     $num_voti = count($res_inner);
     $tot_voto = 0;
     foreach($res_inner as $voto){
         $tot_voto = $tot_voto + $voto['voto'];
     }
     $media = $tot_voto / $num_voti;
     $ins_media = $db->prepare("UPDATE immagini SET media=? WHERE id=?");
     $ins_media->execute(array($media,$_POST['idimg']));

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ho risolto aahahah è il secondo post di oggi dove faccio domande ma poi risolvo da solo
    magari a qualcuno può essere utile quindi ecco il codice
    codice:
     $inner_join = $db->prepare("SELECT voto FROM votazioni V INNER JOIN immagini I ON I.id = V.idimmagine");
     $inner_join->execute();
     $res_inner=$inner_join->fetch();
     $num_voti = count($res_inner);
     $tot_voto = 0;
     foreach($res_inner as $voto){
         $tot_voto = $tot_voto + $voto;
     }
     $media = $tot_voto / $num_voti;

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    scherzavo... non funziona

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    risolto, sbagliavo la query

    codice:
     $inner_join = $db->prepare("SELECT * FROM votazioni WHERE idimmagine = :idimmagine");
     $inner_join->execute(array(':idimmagine'=>$_POST['idimg']));
     $res_inner=$inner_join->fetchAll();
     $tot_voto;
     foreach($res_inner as $voto){
         $tot_voto += $voto['voto'];
     }
     $media = $tot_voto/count($res_inner);

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    E cosa ti avevo detto ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    si hai ragione, devi capire che sono a casa da due giorni con la febbre e la gastrite e sono un pò tanto rincoglionito :')

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.