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

Discussione: Out of range value...

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    120

    Out of range value...

    Ciao a tutti quando provo a inserire dei dati nel db mi da questo errore: Out of range value adjusted for column 'media_voti' at row 1

    Codice PHP:
    $new_count = ($row['voti_totali'] + 1);
    $tut_rating2 = ($row['media_voti'] * $row['voti_totali']);
    $new_rating = (($rating $tut_rating2) / ($new_count));
    $new_rating2 number_format($new_rating2'.''');

    $update "UPDATE $templates SET media_voti = '$new_rating2', voti_totali = '$new_count' WHERE id = '" .$_POST['id']. "'"
    media_voti è un campo FLOAT(2,2) default '0.00'

    ho già provato a togliere gli apici a $new_rating2 ma non funziona lo stesso

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    E' come se l'indeice medisa_voti non esistesse in quell'array.

    Sei sicuro di estrarlo correttamente? dal DB? (presumo tu lo prenda da li)
    Prova a postare il codice precedente a questo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    120
    prima di tutto grazie per la risposta
    forse è un problema di compatibilità con mysql5? perchè con il 4 nn mi dava questo problema

    Codice PHP:
    $rating = (int)$_POST['scelta'];

    $poll "SELECT nome, media_voti, voti_totali FROM $templates WHERE id = '" .$_POST['id']. "'";
    $result $db->sql_query($poll);
    $row $db->sql_fetchrow($result);

    $new_count = ($row['voti_totali'] + 1);
    $tut_rating2 = ($row['media_voti'] * $row['voti_totali']);
    $new_rating = (($rating $tut_rating2) / ($new_count));
    $new_rating2 number_format($new_rating2'.''');

    $update "UPDATE $templates SET media_voti = '$new_rating2', voti_totali = '$new_count' WHERE id = '" .$_POST['id']. "'"
    questa invece è la tabella nel db
    Codice PHP:
    `idTINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
    `
    nomeVARCHAR(30NOT NULL,
    `
    autoreVARCHAR(20),
    `
    descrizioneVARCHAR(250),
    `
    img_urlVARCHAR(100),
    `
    file_urlVARCHAR(100NOT NULL,
    `
    dateDATETIME,
    `
    scaricatoSMALLINT UNSIGNED default '0',
    `
    media_voti`  FLOAT(2,2) default '0.00',
    `
    voti_totaliSMALLINT UNSIGNED default '0',
    `
    postsSMALLINT UNSIGNED default '0',
    PRIMARY KEY (id

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Prova ad usare mysql_fetch_array invece del fetch_row. Il Fetch_row restituisce un array ad indici numerici, mentre tu ne vuoi uno associativo con indici a stringa.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    float(2,2) vuol dire che e' nella forma .00 senza numeri prima della virgola, immagino che il problema sia quello.....

    No pvt per sollecitare risposte, grazie.

  6. #6
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    non credo...

    float(2,2) significa in formato 00,00 (du cifre prima e dopo la virgola).

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    120
    ok risolto era il float
    grazie 1000 x l'aiuto

  8. #8
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Quindi FLOAT(2,2) corrisponde al formato .00 ?

    EDIT: Ah già...il primo è il numero TOTALE di cifre...e non il numero di cifre intere. ^^'

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Originariamente inviato da Il_Drugo
    non credo...

    float(2,2) significa in formato 00,00 (du cifre prima e dopo la virgola).
    Mica ho sparato a caso eh........... fidati che e' come dico io.....
    No pvt per sollecitare risposte, grazie.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Per chi volesse verificare....

    http://dev.mysql.com/doc/refman/5.0/...-overview.html

    M is the total number of digits and D is the number of digits following the decimal point. If M and D are omitted, values are stored to the limits allowed by the hardware. A single-precision floating-point number is accurate to approximately 7 decimal places.
    No pvt per sollecitare risposte, grazie.

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.