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

Discussione: differenza minuti

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379

    differenza minuti

    ragazzi premetto che sto per implodere, trp tentativi e tutti inutili

    illustro quindi il mio problema:

    Sto scrivendo uno script, per qualto inutilmente complesso sia, [premetto di essere un primino del php] che attraverso un random elabora un valore, un numero; che verra in seguito scritto in un db nelle varie tabelle. Il fatto è, che non vorrei che un utente eseguisse lo script piu di una volta al minuto... quindi ho fatto in modo, che se questo riceve i soldi [ovvero il numero rand], la data viene impressa nel database. volevo quindi richiamare questa data connfrontandola a NOW() e fare la differenza dei valori. Se quest' ultimo ottenuto supera il minuto volevo fare in modo, che solo in tal caso l'utente potesse risquotere il proprio denaro.

    Provando e riprovando continuo a non farcela. so che postare tutto uno script non è una delle migliori cose da fare, ma magari puo servire per capire il mio fasullo ragionamento. diciamo che non sn alla ricerca di uno che mi faccia il lavoro, ma che mi dia una dritta!!

    Scusate il disturbo, spero qualcuno possa aiutarmi; vi ringrazio anticipatamente!

    Codice PHP:
    <? session_start();
    include (
    'inc/parametri.inc.php');
    include (
    'inc/controllo.php');
    include (
    'inc/open2.php');
    include(
    "inc/controlloesilio.php");
    function 
    Tempo($tim) {
        return(
    strftime("%d/%m/%Y %H:%M"strtotime($tim)));
    }
    include (
    "inc/header.html.inc.php");

    #
    $sold=array('0','0','0','10','0','0','0','30','0','0','0','30','45','10');
    $sold1=rand(1,14);
    $soldi=$sold[$sold1];
    #
    if($soldi=="0"){
    $sx="nessuna";
    $sx1="Non hai";
    $sx2="moneta";
    }elseif(
    $soldi=="10"){
    $sx="10";
    $sx1="Hai";
    $sx2="monete";
    }elseif(
    $soldi=="30"){
    $sx="30";
    $sx1="Hai";
    $sx2="monete";
    }elseif(
    $soldi=="45"){
    $sx="45";
    $sx1="Hai";
    $sx2="monete";
    }

    ?>
    <html>

    <head>
    <title>Miniera Narsil</title>
    </head>

    <body bgcolor="#000000">





    </p>
    <table border="1" width="55%" id="table1" align="center" bgcolor="#000000">
        <tr>
            <td height="226">
            <p align="center">[img]img/miniera/md1.jpg[/img]
    <font color="#FF6600" size="7" face="Times New Roman">[img]img/miniera/ms1.jpg[/img]Miniera di Narsil</font>
            <p align="center">


    [img]img/miniera/min1.gif[/img]        
          <p align="center">
    <?
    $MySql 
    "SELECT UltimoMiniera FROM personaggio WHERE Nome = '".pars($Login)."'";
    $Result mysql_query($MySql);
    $rs mysql_fetch_array($Result);
    $LM $rs["UltimoMiniera"];
    $rs->close;

    $diff=(int)(abs(strtotime ("$LM") - strtotime ("NOW()"))/(60));

    echo 
    '<center>'.$LM.'
    '
    .$diff.'</center>';

    if (
    $diff 1){    
        echo 
    "<script language='javascript'>
        alert('Puoi fare una azione ogni minuto, riprova piu tardi.');
        </script>"
    ;
    }else{

    echo 
    '<center><font color=\"#FF6600\" size=\"1\">'.$sx1.' trovato '.$sx.' '.$sx2.' d\'oro...</font></p></center>';

    if(
    $soldi >= 10){
    $sql01="UPDATE Personaggio SET UltimoMiniera = NOW(), Soldi = Soldi + '$soldi' WHERE Nome = '".pars($Login)."'";
    $Result mysql_query($sql01);
                
                
    $MySql "INSERT INTO LogFinanza (Nome, Somma, Tipo, DataEvento, Nota)";
                
    $MySql .= " VALUES('".pars($Login)."', '".$sx."',";
                
    $MySql .= "'8', '".strftime("%Y-%m-%d %H:%M:%S")."',";
                
    $MySql .= "'Ricavo Miniera Narsil')";
                
    $Result mysql_query($MySql);
    }
    $MySql "UPDATE Personaggio SET UltimoMiniera = NOW() WHERE Nome = '".pars($Login)."'";
    $Result mysql_query($MySql);
    }
    ?>
    </td></tr></table></body></html>
    PSS.: Sicuramente ci sara' modo di rendere lo script piu leggibile XD piu semplice e piu versatile. e vi giuro che se ne fossi di competenza non sciuperei in tal modo i vostri occhi

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    Nessuno?

  3. #3
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:
    <?php
    session_start
    ();

    include (
    'inc/parametri.inc.php');
    include (
    'inc/controllo.php');
    include (
    'inc/open2.php');
    include (
    'inc/controlloesilio.php');

    function 
    Tempo($tim
    {
        return(
    strftime("%d/%m/%Y %H:%M"strtotime($tim)));
    }

    include (
    "inc/header.html.inc.php");

    $sold=array('0','0','0','10','0','0','0','30','0','0','0','30','45','10');
    $sold1=rand(1,14);
    $soldi=$sold[$sold1];

    switch(
    $soldi)
    {
        case 
    0:
            
    $sx="nessuna";
            
    $sx1="Non hai";
            
    $sx2="moneta";
            break;
            
        case 
    10:
        case 
    30:
        case 
    0:
            
    $sx=$soldi;
            
    $sx1="Hai";
            
    $sx2="monete";
            break;
    }    

    ?>

    <html>

    <head>
    <title>Miniera Narsil</title>
    </head>

    <body bgcolor="#000000">





    </p>
    <table border="1" width="55%" id="table1" align="center" bgcolor="#000000">
        <tr>
            <td height="226">
            <p align="center">[img]img/miniera/md1.jpg[/img]
    <font color="#FF6600" size="7" face="Times New Roman">[img]img/miniera/ms1.jpg[/img]Miniera di Narsil</font>
            <p align="center">


    [img]img/miniera/min1.gif[/img]        
          <p align="center">
          
    <?php

    $MySql 
    "SELECT UltimoMiniera FROM personaggio WHERE Nome = '".pars($Login)."'";
    $Result mysql_query($MySql);
    $rs mysql_fetch_array($Result);
    $LM $rs["UltimoMiniera"];
    $rs->close;

    function 
    check_time($time)
    {
        
    $timeouts 60;
        
    $timeout time() - $timeouts;
        if(
    $time $timeout)
            return 
    true;
        else
            return 
    false;
    }


    // $lm deve essere in formato UNIX TIME STAMP
    if (!check_time($lm))
    {    
        echo 
    "<script language='javascript'>alert('Puoi fare una azione ogni minuto, riprova piu tardi.');</script>";
    }
    else
    {
        echo 
    "<center><font color=\"#FF6600\" size=\"1\">".$sx1." trovato ".$sx." ".$sx2." d'oro...</font></p></center>";
        
        if(
    $soldi >= 10)
        {
            
    $sql01="UPDATE Personaggio SET UltimoMiniera = NOW(), Soldi = Soldi + '$soldi' WHERE Nome = '".pars($Login)."'";
            
    $Result mysql_query($sql01);
            
            
    $MySql "
            INSERT INTO LogFinanza (Nome, Somma, Tipo, DataEvento, Nota) 
            VALUES('"
    .pars($Login)."', '".$sx."', '8', '".strftime("%Y-%m-%d %H:%M:%S")."', 'Ricavo Miniera Narsil')";
            
            
            
    $Result mysql_query($MySql);
        }
        
    $MySql "UPDATE Personaggio SET UltimoMiniera = NOW() WHERE Nome = '".pars($Login)."'";
        
    $Result mysql_query($MySql);
    }

    ?>

    </td></tr></table></body></html>
    Se hai memorizzato la data di accesso come TIMESTAMP allora cosi dovrebbe funzionare, altrimenti stai poco a convertirla.


  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    "$lm deve essere in formato UNIX TIME STAMP"

    scusa la mia ignoranza^^ ma non saperi come fare una variabile in time stamp diciamo puoi darmi un altra manina

    la data che viene estratta dal db ovvero $LM è sotto formato (time)


    PS.:grazie mille per aver' risposto!!

  5. #5
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    tanto per chiarirci....scrivimi una data $LM di esempio cosi vediamo se è compatibile con la funzione.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    la data che stama $LM è 2007-04-12 00:25:43 per es^^

  7. #7
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    allora prova cosi:

    Codice PHP:
    <?php
    session_start
    ();

    include (
    'inc/parametri.inc.php');
    include (
    'inc/controllo.php');
    include (
    'inc/open2.php');
    include (
    'inc/controlloesilio.php');

    function 
    Tempo($tim)
    {
        return(
    strftime("%d/%m/%Y %H:%M"strtotime($tim)));
    }

    include (
    "inc/header.html.inc.php");

    $sold=array('0','0','0','10','0','0','0','30','0','0','0','30','45','10');
    $sold1=rand(1,14);
    $soldi=$sold[$sold1];

    switch(
    $soldi)
    {
        case 
    0:
            
    $sx="nessuna";
            
    $sx1="Non hai";
            
    $sx2="moneta";
            break;
            
        case 
    10:
        case 
    30:
        case 
    0:
            
    $sx=$soldi;
            
    $sx1="Hai";
            
    $sx2="monete";
            break;
    }    

    ?>

    <html>

    <head>
    <title>Miniera Narsil</title>
    </head>

    <body bgcolor="#000000">





    </p>
    <table border="1" width="55%" id="table1" align="center" bgcolor="#000000">
        <tr>
            <td height="226">
            <p align="center">[img]img/miniera/md1.jpg[/img]
    <font color="#FF6600" size="7" face="Times New Roman">[img]img/miniera/ms1.jpg[/img]Miniera di Narsil</font>
            <p align="center">


    [img]img/miniera/min1.gif[/img]        
          <p align="center">
          
    <?php

    $MySql 
    "SELECT UltimoMiniera FROM personaggio WHERE Nome = '".pars($Login)."'";
    $Result mysql_query($MySql);
    $rs mysql_fetch_array($Result);
    $LM $rs["UltimoMiniera"];
    $rs->close;

    function 
    check_time($time)
    {
        list(
    $data$ora) = explode(" "$time);
        list(
    $anno$mese$giorno) = explode("-"$data);
        list(
    $ore$min$sec) = explode(":"$ora);
        
    $time mktime($ore$min$sec$mese$giorno$anno);    
        
    $timeouts 60;
        
    $timeout time() - $timeouts;
        if(
    $time $timeout)
            return 
    true;
        else
            return 
    false;
    }


    // $lm deve essere in formato UNIX TIME STAMP
    if (!check_time($lm))
    {    
        echo 
    "<script language='javascript'>alert('Puoi fare una azione ogni minuto, riprova piu tardi.');</script>";
    }
    else
    {
        echo 
    "<center><font color=\"#FF6600\" size=\"1\">".$sx1." trovato ".$sx." ".$sx2." d'oro...</font></p></center>";
        
        if(
    $soldi >= 10)
        {
            
    $sql01="UPDATE Personaggio SET UltimoMiniera = NOW(), Soldi = Soldi + '$soldi' WHERE Nome = '".pars($Login)."'";
            
    $Result mysql_query($sql01);
            
            
    $MySql "
            INSERT INTO LogFinanza (Nome, Somma, Tipo, DataEvento, Nota)
            VALUES('"
    .pars($Login)."', '".$sx."', '8', '".strftime("%Y-%m-%d %H:%M:%S")."', 'Ricavo Miniera Narsil')";
            
            
            
    $Result mysql_query($MySql);
        }
        
    $MySql "UPDATE Personaggio SET UltimoMiniera = NOW() WHERE Nome = '".pars($Login)."'";
        
    $Result mysql_query($MySql);
    }

    ?>

    </td></tr></table></body></html>

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    Grazie mille sei un grande!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    ora scusami ma sn un po confuso :master: il secondo script che mi hai postato in localhost funziona perfettamente, appena lo metto su altervista tutto va in palla e fa come se non ci fosse la funzione

  10. #10
    Io invece di usare quella funzione proverei a gestire la cosa tramite database...nel senso che farei fare la query al database indicando nella clausola where anche la relazione sul tempo in modo che se mi restituisce qualche risultato vorrà dire che quell'utente ha già effettuato una richiesta prima di 1 minuto...

    codice:
    $MySql = "SELECT UltimoMiniera FROM personaggio WHERE Nome = '" .pars($Login) ."' AND (UltimoMiniera + INTERVAL 1 MINUTE) > NOW()";
    $result = mysql_query($MySql);
    
    if ( mysql_get_num_rows() == 0 ) 
          ....allora tutto ok...
    else
          ....hai fatto la tua richiesta meno di un minuto fa....

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.