Visualizzazione risultati 1 fino 7 di 7

Discussione: UPDATE & rand() non funzionano correttamente

  1. #1
    Guest

    Exclamation UPDATE & rand() non funzionano correttamente

    Salve a tutti, sono sempre io, con il mio script per le missioni, dato che ho vistoche qui siete molto preparati, vi pongo un'altro quesito, essendo da poco entrato nel mondo di PHP e MYSQL.

    Il codice seguente non fa altro che dare oro a un giocatore in base ai minuti di missione scelti, il problema è che il codice non mostra errori, ma non compie neanchei l suo compito.


    Qui vi è la funzione che calcola i minuti scelti:



    Codice PHP:
    function min_missione($id_giocatore)
    {

    $sql = "SELECT TIMEDIFF (fine, inizio) FROM missioni WHERE id_giocatore = '$id_giocatore'";
    $min_missione = mysql_query($sql);
    $row = mysql_fetch_array ($min_missione);



    return
    $row[0];


    }

    $min = explode(':', min_missione($_SESSION['id']));
    $minuti = $min[1];
    In questo modo la variabile $minuti contine i minuti scelti, e questo ho constata che attraverso un var_dump(), funziona e contiene esattamente i minuti scelti.

    Ora il problema è nel seguente pezzo di codice, non so, forse ho sbagliato come logica, e non mi inserisce correttamente l'oro, forse ho sbagliato la funziona rand() che fa in modo che in base ai minuti scelti si aumenti l'oro di un valore preso a caso fra due valori espressi nella funzione rand().




    Codice PHP:
    function inserisci_10 ()
    {
    $sql = "UPDATE utenti SET oro = ".$_SESSION['oro']." + rand(10,125) WHERE id = ".$_SESSION['id']." ";
    $risultato = mysql_query($sql);


    }

    function
    inserisci_20 ()
    {
    $sql = "UPDATE utenti SET oro = ".$_SESSION['oro']." + rand(70,150) WHERE id = ".$_SESSION['id']." ";
    $risultato = mysql_query($sql);


    }



    function
    inserisci_30 ()
    {
    $sql = "UPDATE utenti SET oro = ".$_SESSION['oro']." + rand(100,350) WHERE id = ".$_SESSION['id']." ";
    $risultato = mysql_query($sql);


    }




    function
    inserisci_40 ()
    {
    $sql = "UPDATE utenti SET oro = ".$_SESSION['oro']." + rand(125,550) WHERE id = ".$_SESSION['id']." ";
    $risultato = mysql_query($sql);

    }




    function
    inserisci_50 ()
    {
    $sql = "UPDATE utenti SET oro = ".$_SESSION['oro']." + rand(300,700) WHERE id = ".$_SESSION['id']." ";
    $risultato = mysql_query($sql);


    }




    function
    inserisci_60 ()
    {
    $sql = "UPDATE utenti SET oro = ".$_SESSION['oro']." + rand(450,1200) WHERE id = ".$_SESSION['id']." ";
    $risultato = mysql_query($sql);

    }

    var_dump ($minuti);


    /* Oro in base ai minuti di missione scelti */

    if ($minuti == 10)
    {

    inserisci_10();

    }

    elseif (
    $minuti == 20)
    {

    inserisci_20();

    }


    elseif (
    $minuti == 30)
    {

    inserisci_30();

    }

    elseif (
    $minuti == 40)
    {

    inserisci_40();

    }


    elseif (
    $minuti == 50)
    {

    inserisci_50();

    }


    elseif (
    $minuti == 60)
    {

    inserisci_60();

    }


    else

    {

    echo
    "<div align='center'>Non hai eseguito missioni!</div>";

    }

    /* ---------------------------------*/



    ?>

    Qualcuno ha qualche idea, e sa dirmi cosa ho sbagliato, magari fornendomi una soluzione ?

  2. #2
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Intanto prova così:
    Codice PHP:
    $sql = "UPDATE utenti SET oro = ".$_SESSION['oro'] + rand(s1, s2)."
    WHERE id = "
    .$_SESSION['id'];

  3. #3
    Guest

    Predefinito

    In pratica in tutte le funzioni devo sostituire i valori di rand() con s1 ed s2 ?

  4. #4
    Guest

    Predefinito

    C'è un errore nell'utilizzo della funzione RAND().
    http://dev.mysql.com/doc/refman/5.0/...#function_rand

    Ovvero, devi scrivere tutto come

    FLOOR(MINIMO + (RAND() * (MASSIMO - MINIMO)))

  5. #5
    Guest

    Predefinito

    Ora il codice l'ho impostato così e funziona tutto perfettamente:

    Codice PHP:
    function inserisci_10 ()
    {

    $numero = (int) $_SESSION['oro'];
    $random = rand(10, 125);
    $numero = $numero + $random;
    $_SESSION['oro'] = (string) $numero;
    $sql = "UPDATE utenti SET oro = ".$_SESSION['oro']." WHERE id = ".$_SESSION['id'];
    $risultato = mysql_query($sql);

    }

    Dove trasformo $_SESSION['oro'] in intero per eseguire l'operazione con rand(), poi lo ritrasfromo di nuovo in stringa come era originariamente, dopodichè eseguo la query e tutto funziona, ora l'unica cosa che devo ancora implementare è che l'oro si aggiorni sempre senza aggiornare la pagina, quello lo farò con js.
    Ultima modifica di webgame : 28-12-2009 alle ore 00.41.50

  6. #6
    Guest

    Predefinito

    beh, allora hai fatto confusione, visto che da quello che hai scritto volevi usare la funzione rand di PHP. In quel caso era giusta anche la soluzione di andreafallico

  7. #7
    Guest

    Predefinito

    Forse mi sono espresso male, mi scuso, grazie comunque delle risposte...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •