Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: media MYSQL

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111

    media MYSQL

    Buon giorno a tutti, ho un problema, devo calcolare la media con dei dati presi da mysql ma mi dice che la query e vuota... mi aiutate grazie!!!!

    Codice PHP:
     <?php
    include "config.php";   
    include 
    "connessione.php";  
    // variabile tabella 
    $votopmedia $nome.$cognonme.$pin."votoprivati";

    $votop mysql_query("SELECT $votopmedia, AVG(voto_privati)"); 

    $result mysql_query($votop) or die(mysql_error());

    // stampo il risulatto
    $row mysql_fetch_array($result);
        
        echo 
    "Media ".$row['AVG(voto_privati)'];
        


     
    mysql_close(); ?>
    Magari ho fatto male la tabella... oppure ho usato dei valori sbagliati allego lo script che crea la tabella

    Codice PHP:
    $tab4 $nome.$cognome.$pin."votoprivati";
     
    //CREAZIONE TABELLA
     
    $query4 'CREATE TABLE ' $tab4 '( '.
    'id INT NOT NULL AUTO_INCREMENT, '.
    'voto_privati TEXT(50) NOT NULL, '.
    'email TEXT(50) NOT NULL, '.
    'PRIMARY KEY(id))';
     
    $tabella4 mysql_query($query4); 
    Per interderci la tabella la crea senza problemi. e per lunghezza del codice non l'ho messo completo...

    un grazie anticipato a chi mi aiuta!!!

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    la tabella è semanticamente errata in quanto voto_privati l'hai messo di tipo TEXT quando invece dovrebbe essere un INT

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111
    dici che è per quello che genera un risultato nullo che non lo vede come errore e quindi vuoto... ascolta però il voto potrebbe essere anche con la virgola es 8,5 va bene sempre INT??? o c'è un altro valore in questo caso?

  4. #4
    ...detto questo, è sbagliata la query
    codice:
    SELECT AVG( voto_privati )
    FROM `{$votopmedia}`
    WHERE 1
    Inoltre...se la tabella la chiami $nome.$cognonme.$pin, significa che avrai n tabelle identiche nella struttura ma con dati diversi (e ridondanti...). Forse è meglio fare una tabella unica del tipo

    Voti
    ID (primaria, autoincrement)
    ID_Alunno (mediumint)
    Voto (INT o DECIMAL)

    che agganci a una tabella
    Alunno
    ID (primaria, autoincrement)
    Nome (varchar 30)
    Cognome (varchar 20)
    Pin (boh...dipende...varchar?)
    Email (varchar 50)

    così poi la query diventa
    SELECT a.*, AVG( v.Voto ) as Media FROM Alunno a straight_join Voti v ON v.ID_Alunno = a.ID WHERE 1

    (straight_join se ogni alunno ha almeno un voto, inner join se vuoi solo quelli che hanno voti, left join se vuoi anche quelli senza voti)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111
    ok, vedrò se funziona, altrimenti ritornerò! per il resto lo script è giusto?

  6. #6
    Nì.
    Andrebbe fatto così
    Codice PHP:
    <?php
    include "config.php";   
    include 
    "connessione.php";  
    // variabile tabella 
    $votopmedia $nome.$cognonme.$pin."votoprivati";

    $votop "SELECT AVG(voto_privati) as Media FROM {$votopmedia} WHERE 1";

    $result mysql_query($votop) or die(mysql_error());

    // stampo il risultato
    if (mysql_num_rows($result)) {
        
    $row mysql_fetch_assoc($result);
        echo 
    "Media: {$row["Media"]}";
    } else {
        echo 
    "Media: 0";
    }

    mysql_close();
    ?>
    Il campo dei voti, dato quel che dici, andrebbe impostato come decimal(4,2) unsigned (4 = totale cifre, 2 = numero decimali, quindi in questo caso da 00,00 a 99,99. Vero che sopra il 10,00 non si va, ma non c'è altro modo, a meno di inserire i voti "moltiplicati per 100", ma ti obbliga a dover dividere e moltiplicare ogni volta che devi stampare un voto o una media

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111
    nulla mi da sempre questo risultato, nonostante le modifiche descritte sopra "Query was empty"
    mi dice la query che è vuota...che non lo è affatto!!
    mah

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111
    ho provato il tuo script mi da questo errore:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #10' at line 1

    cmq avevi dimenticato una parentesi chiusa

    if(mysql_num_rows($result){

    cmq non è per quello che non va...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    111
    ho notato che non avevi messo le 'tra {$votopprivati} cosi li ho inseriti e ritorno ancora con Query was empty

    non capisco perchè non calcola la media...

  10. #10
    Uste...non avevo visto che in realtà tu fai due query...

    $votop = mysql_query("SELECT $votopmedia, AVG(voto_privati)");

    $result = mysql_query($votop) or die(mysql_error());

    La seconda ovviamente ti va in errore perchè gli passi un "resource"
    Ho corretto lo script, riprovalo

    (le ' tra {$votopprivati} non servono)

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.