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

    Problema somma su campo

    Ciao a tutti, ho questo problemino, uso questo codice per aggiornare il valore del campo "saldo" ovvero il punteggio dell'utente tramite un semplice form, l'unico problema è che aggiungo 20 punti ad un utente che ne ha 0 la somma è di 60!!


    <?
    $db_host = "host";
    $db_user = "usr";
    $db_password = "pass";
    $db_name = "xxx";

    // connessione al database

    $db = mysql_connect ($db_host, $db_user, $db_password) or die ('Impossibile accedere al database!');
    $db_forum = mysql_select_db ($db_name, $db);

    // query update

    $saldo=$_POST[saldo];
    $query = "UPDATE balance SET saldo= saldo+$saldo WHERE username = '$username'";
    if (mysql_query($query, $db))
    echo "Il punteggio per: $username è stato aggiornato;
    else
    echo "Errore durante la modifica";

    $res=mysql_query($query,$db) or die(mysql_error());
    mysql_close($db);
    ?>

    Questa è la tabella:

    CREATE TABLE `balance` (
    `username` varchar(64) NOT NULL default '',
    `saldo` float NOT NULL default '0',
    `last_modified` datetime NOT NULL default '0000-00-00 00:00:00',
    PRIMARY KEY (`username`)
    ) TYPE=MyISAM;

    Dove sto sbagliando???

  2. #2
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    fai fare un ulteriore aggiornamento prima di chiudere la connessione... a che ti serve?

    prova con questo... altrimenti l'errore è da ricercarsi altrove:

    Codice PHP:
    <?
    $db_host 
    "host";
    $db_user "usr";
    $db_password "pass";
    $db_name "xxx";

    // connessione al database
    $db mysql_connect ($db_host$db_user$db_password) or die ('Impossibile accedere al database!');
    $db_forum mysql_select_db ($db_name$db);

    // si recupera il saldo
    $saldo = (float)$_POST['saldo']; // aggiungi gli apici!
    // si prepara la query
    $query "UPDATE balance SET saldo = saldo + ".$saldo." WHERE username = '$username'";
    // esegue la query e se c'è un errore blocca lo script (die)
    mysql_query($query) or die("errore durante la modifica: ".mysql_error());
    echo 
    "Il punteggio per: $username è stato aggiornato";
    ?>

    Questa è la tabella:

    CREATE TABLE `balance` (
    `username` varchar(64) NOT NULL default '',
    `saldo` float NOT NULL default '0',
    `last_modified` datetime NOT NULL default '0000-00-00 00:00:00',
    PRIMARY KEY (`username`)
    ) TYPE=MyISAM;
    Fammi sapere

  3. #3
    Grazie 10000000, cosi' va bene, mi rimane solo un dubbio..... come faccio a verificare se l'utente a cui sto inserendo il nuovo punteggio esista o no sul database ed in caso non esista mi restituisca l'errore " Utente inesistente"

    Di nuovo grazie sei un grande!!

  4. #4
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Puoi prima fare una query che controlli l'esistenza o meno dell'utente e poi fare quella per l'aggionamento del saldo oppure come segue...

    (scrivo di getto... potrebbero esserci degli errori)
    Codice PHP:
    // si recupera il saldo
    $saldo = (float)$_POST['saldo']; // aggiungi gli apici!
    // si prepara la query
    $query "UPDATE balance SET saldo = saldo + ".$saldo." WHERE username = '$username'";

    // esegue la query e se c'è un errore blocca lo script (die)
    mysql_query($query) or die("errore durante la modifica: ".mysql_error());

    /**
    *   In base a quante righe sono state modificate, puoi stabilire se l'utente esiste o meno...
    */
    if (mysql_affected_rows() < 1
      
    // se sono state affette meno di 1 (quindi 0) l'utente non esiste
      
    echo "Utente inesistente";
    else
      echo 
    "Il punteggio per $username è stato aggiornato"
    Spero faccia al caso tuo

  5. #5
    E' perfetto!!!! sei un grandissimo, grazie di nuovo!!!

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.