- Home
- Categorie
- Coding e Sistemistica
- Coding
- Possibilità d'uso funzione php ogni ora
-
No... invece mi butta sempre sulla pagina di errore... Quindi prende l'ora sul database che è di standard 0 meno l'ora attuale (viene un numero negativo) e quindi da errore perché è nettamente minore di 0

Quindi il problema ora è il seguente:
Come bisogna impostare il valore nel database al primo click?
-
Ok... ho riletto il codice e ho sostituito il "<" con il ">"...
E ora il database 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 ':34 WHERE id='3'' at line 1 ... Il valore 34 è il minuto dell'esecuzione del codice...
-
Bene sembra allora che i minuti li stia prendendo no?
-
Si, la definizione della differenza in minuti avviene, ho provato anche a modificare a mano il valore nel database e funziona come dovrebbe. Ma il problema è che quando va a scrivere il nuovo orario da quell'errore. Forse non accetta un carattere...
comunque il database è configurato così:
CREATE TABLE
ore_utilizzo_script(
idINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
ora_utilizzo_scriptTEXT NOT NULL
) ENGINE = MYISAM ;CREATE TABLE
soldi_utente(
idINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
deposito_soldiTEXT NOT NULL
) ENGINE = MYISAM ;
-
Uppo in cerca di risposte

-
Il valore che tu scrivi direttamente ed è corretto come è scritto?
-
Ricapitoliamo...
Codice usato:
[PHP]$sql="SELECT ora_utilizzo_script FROM ore_utilizzo_script WHERE id='$id'";
$query = @mysql_query ($sql) or die (mysql_error());while ($row = mysql_fetch_array($query)) {
$ora_ultimo_inserimento="$row[ora_utilizzo_script]"; Function calcolaOre($prima,$seconda) { $vettore1=explode(":",$prima); $vettore2=explode(":",$seconda); $diff=mktime($vettore2[0], $vettore2[1], 0,1,1,2000) - mktime($vettore1[0], $vettore1[1],0,1,1,2000); $minuti=floor($diff/60); return $minuti; } $ora_attuale=date("G:i"); $differenza=calcolaOre($ora_ultimo_inserimento,$ora_attuale); if($differenza>60) { $deposito_aggiungivo = 3 * 2; $sql="UPDATE ore_utilizzo_script SET ora_utilizzo_script=$ora_attuale WHERE id='$id'"; $query = @mysql_query ($sql) or die (mysql_error()); echo " $deposito_aggiungivo $ora_attuale"; $sql="UPDATE soldi_utente SET deposito_soldi=$deposito_aggiungivo WHERE id='$id'"; $query = @mysql_query ($sql) or die (mysql_error()); } else { header('Location: ../errore.php'); exit; } [/PHP]L'echo lo ho inserito per sapere che valori mi andava a scrivere... Ed ecco cosa mi dava la pagina internet dopo l'esecuzione del codice:
6 14:48You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':48 WHERE id='3'' at line 1
-
Grazie, consultando altri topic ho trovato risposta al problema... Bastava mettere delle ' '... Ringrazio il forum perché si rivela sempre una grande fonte di informazione

-
Mannaggia era colpa degli apici?
-
Si... pultroppo si... Però ora facendo girare lo script ho notato una cosa... E' difficile da spiegare e quindi faccio un esempio...
Ora sono le 12:35...
Se l'orario precedente è 11:00 (quindi 1 ora e 25 minuti prima) lo script viene eseguito...
Se l'orario precedente è 14:00 (quindi 1 ora e 25 minuti dopo [quindi è del giorno prima]) lo script mi invia alla pagina di errore..Quindi se il salvataggio è del giorno prima, non esegue la differenza in modo corretto. Se il salvataggio è dello stesso giorno viene eseguito correttamente.
-
Purtroppo non ho fatto i test quindi non saprei... visto che nel campo del database ci potresti salvare la data in formato now quindi estesa.
Potresti effettuare il controllo di restrizione solo se il giorno in cui si fa la richiesta è diverso da quello salvato in database.
In caso sia lo stesso giorno allora controlli i minuti di differenza.
-
Il codice che mi hai fornito fa una vera e propria sottrazione (orario attuale - orario ultimo inserimento) e se l'orario precedente è minore di quello attuale la differenza sarà positiva mentre al contrario sarà negativa... Quindi basta mettere che che la differenza in valore assoluto deve essere maggiore di 60... Ora come ora l'if considera vero solo se la differenza è maggiore di 60 e è positiva... Ora la domanda è... Come si fa a considerare il 60 come un valore assoluto??
-
In che senso valore assoluto?
Se è negativo diventa positivo?
-
Nel senso che guardiamo cosa facciamo fare all'"if"
if($differenza>60)
Se la differenza è un numero negativo darà errore...
Se la differenza è un numero positivo e maggiore di 60 farò eseguire lo script...
-
Beh ma questo accade solo quando il giorno è diverso o sbaglio?
-
Allora... Per capire cosa nn va ho messo un echo di tutte le variabili...
[PHP]
echo "$differenza";
[/PHP]Con varie prove ho visto che assume valori negativi... e nonostante maggiori di 60 l'if non lo riconosce perché vede un - prima del 60... Basta mettere che l'if non legga il possibile - prima del numero e il codice dovrebbe funzionare

-
Basta che funzioni, mi raccomando fai tutti i test delle possibilità che ci sono.
-
OK testato e funziona... grazie 1000 ancora... E alla prossima
