- Home
- Categorie
- Coding e Sistemistica
- Coding
- Azione temporizzata
-
Azione temporizzata
Ciao ragazzi,
volevo una manina con uno script:
in pratica questo script dovrebbe farmi un comando sql ad ogni passaggio di giorno ora vi spiego meglio
ho creato la mia bella tabella
Users Datault punti
dove :
User è il nome utente
Datault è la data dell'ultimo invio
Punti il numero di punti che aggiungo con un altro script^_^a questo punto vorrei fare in modo che questi punti si vadano ad aggiornare in una altra tabella ogni giorno quindi dovrebbe fare un controllo sull'ultima data "Datault" e verificare se sia passato un giorno e poi farmi l'aggiunta di punti se è andato a buon fine.... ovviamente dovrebbe anche settarmi l'orario nuovamente...... spero di essere stato chiaro e spero di ricevere un aiuto veloce.. perchè mi sono un po' imballato....
ringrazio tutti anticipatamente!
-
ragazzi un aiutino veloce dai...
-
facciamo così
a me serve questo:stampo la data
setlocale (LC_TIME,"it_IT");
$DATA1 = time();$date_time_array = getdate($DATA1); $hours = $date_time_array['hours']; $minutes = $date_time_array['minutes']; $seconds = $date_time_array['seconds']; $month = $date_time_array['mon']; $day = $date_time_array['mday']; $year = $date_time_array['year']; $DATA1 = mktime($hours,$minutes,$seconds,$month,$day,$year);
$DATAINGWAR = strftime('%H : %M - %d/%m/%y',$DATA1);
ora la vado a fare il select nel db
$sql = "SELECT USERS,Datault,Punti FROM USER WHERE USERS = '$USERS'";
una volta fatto questo devo dire al mio script di confrontare le date
quindi deve fare un confronto tra $DATAINGWAR e Datault(appositamente trasformata in variabile) come faccio a far capire che il confronto si deve basare sul passaggio delle 24 ore?(quindi un giorno)? vi ringrazio
-
Allora... Preciso che ti andrebbe bene l'utilizzio del CRON, ma se non lo hai o non sai come utilizzarlo ti conviene inserire in una pagina una cosa del genere:
[php]
/*
- Inserisci l'orario in cui vuoi aggiornare
- il tutto. (in un databese/file/altro) e lo
- richiami ( qui ho usato una funzione tanto
- per fare qualcosa
*/
$tempo=richiama_tempo();
// Controlli se l'orario corrente è maggiore.
if ($tempo>=time()){aggiorna_quelchefai(); /* * Aggiorna l'orario del prossimo aggiornamento * (poi sta a te capire come (se via db, file, * pinco pallino, ecc. */ aggiorna_tempo();
}
[/php]
Tutto qui. Non mi dilungo sul codice xkè non ho idea di cosa ti serva specificatamente.
-
@massimux said:
facciamo così
a me serve questo:stampo la data
setlocale (LC_TIME,"it_IT");
$DATA1 = time();$date_time_array = getdate($DATA1); $hours = $date_time_array['hours']; $minutes = $date_time_array['minutes']; $seconds = $date_time_array['seconds']; $month = $date_time_array['mon']; $day = $date_time_array['mday']; $year = $date_time_array['year']; $DATA1 = mktime($hours,$minutes,$seconds,$month,$day,$year);
$DATAINGWAR = strftime('%H : %M - %d/%m/%y',$DATA1);
ora la vado a fare il select nel db
$sql = "SELECT USERS,Datault,Punti FROM USER WHERE USERS = '$USERS'";
una volta fatto questo devo dire al mio script di confrontare le date
quindi deve fare un confronto tra $DATAINGWAR e Datault(appositamente trasformata in variabile) come faccio a far capire che il confronto si deve basare sul passaggio delle 24 ore?(quindi un giorno)? vi ringrazio
Questo non l'avevo visto.
Ma non ti conviene fare un controllo tra Datault e Data1?
[php]
if (($datault+3600*24) >$Data1){
[/php]Non è più semplice?
-
<?PHP
include ('config.inc.php');
$DATA1 = date("j/n/Y");
$sql="SELECT DATAULT FROM USERS WHERE USERNAME='$_SESSION[USERNAME]'";
$query = mysql_query ($sql, $connessione) or die(mysql_error());
while ($row=mysql_fetch_array($query)){
$SC_data=$row["DATAULT"];$conronto= ($DATA1 - $SC_data)/(606024);
if ($confronto >=1 ) {
echo il tuo cane è brutto;
else {
echo porca troia
?>mi da un errore parse.... potete aiutarmi? grazie è un periodo nero.... ringrazio anche per il procedimento di prima
-
se questo codice è vero nel senso che lo hai usato, mancano un po' di chiusure:
{ echo il tuo cane è brutto; else { echo porca troia ?>
dovrebbe essere:
{ echo "il tuo cane è brutto"; } else { echo "porca troia"; } ?>
e poi la variabile che definisci è $conronto, non $confronto
mi sa che hai bisogno di svagarti un po'
-
si ma mi da un errore parse nella procedura sql ed ora colgo anche l'occasione per scusarmi dei termini utilizzati....
sono davanti al pc da 32 ore ormai.....senza fermarmi un attimo
mi potete controllare tutta la procedura?
-
Questo il tuo codice della query:
$sql="SELECT DATAULT FROM USERS WHERE USERNAME='$_SESSION[USERNAME]'"; $query = mysql_query ($sql, $connessione) or die(mysql_error());
intanto potresti provare staccando l'apice singolo di chiusura della variabile dai doppi apici di chiusura
poi prova a fare separatamente le query $sql e $connessione così vediamo dove sta l'errore.
-
Prova così:
$sql="SELECT DATAULT FROM USERS WHERE USERNAME='" . $_SESSION['USERNAME'] . "'";
-
proseguendo e trovato l'errore eccovene un'altro
[PHP]<?PHP
session_start();
include "config.inc.php";
$DATA1 = date("j/n/Y");
$DATA10 = mktime($DATA1);$sql="SELECT UltimaEsp FROM USERS WHERE USERNAME='$_SESSION[USERNAME]'";
$query = mysql_query ($sql, $connessione) or die(mysql_error());
while ($row=mysql_fetch_array($query)){
$SC_data=$row["UltimaEsp"];$DATA0 = mktime($SC_data);
echo "$DATA1 espressa normalmente<br>";
echo "$DATA10 in secondi<br>";
echo"$DATA0 in secondi<br>";$confronto= ($DATA10 - $DATA0)/('86400');
echo "$confronto";
if ($confronto >='0.04' ) {
echo "aggiornami";
}
else {echo "non devi essere aggiornato";
}}
@mysql_close ($connessione);
?> [/PHP]ragazzi è una cosa complicatuccia in pratica l'mktime non mi tiene conto ne dei mesi e ne degli anni;
mi spiego meglio.... sul database ho una data stampata così 21/7/2005 ok?
ora la porto a confronto passandola tramite mktime e nulla assolutamente nulla anzi dice che le due date sono uguali cosa impossibile dato che una è //2006 e l'altra //2005 aiutatemi
-
ragazzi è una cosa complicatuccia in pratica l'mktime non mi tiene conto ne dei mesi e ne degli anni;
mi spiego meglio.... sul database ho una data stampata così 21/7/2005 ok?
ora la porto a confronto passandola tramite mktime e nulla assolutamente nulla anzi dice che le due date sono uguali cosa impossibile dato che una è //2006 e l'altra //2005 aiutatemiIl formato della data nel DB com'è ?
la data per essere riconosciuta correttamente deve essere in un campo DATE, ed è formattata in modo specifico.
Se l'hai inserita in un campo varchar o text non ti viene riconosciuta come una data.
-
quindi dovrei metterla in un campo date e formattarla nel modo che ho formattato la data che leggo con lo script?
[php]
<?PHP
session_start();
include "config.inc.php";
$DATA1 = date("Y-m-j");
$DATA10 = mktime($DATA1);$sql="SELECT UltimaEsp FROM USERS WHERE USERNAME='$_SESSION[USERNAME]'";
$query = mysql_query ($sql, $connessione) or die(mysql_error());
while ($row=mysql_fetch_array($query)){
$SC_data=$row["UltimaEsp"];
$DATA11 = mktime($SC_data);echo "$DATA1<br>";
echo "$SC_data<br>";
echo "$DATA10<br>";
echo "$DATA11<br>";
$confronto= ($DATA10 - $DATA11)/('86400');echo "$confronto";
if ($confronto >='1' ) {
echo "aggiornami";
}
else {echo "no aggiorna";
}}
@mysql_close ($connessione);
?> [/PHP]ora ho modificato ma ecco il nuovo problema i due mktime con date diverse una che sarebbe quella corrente ed una impostata nel db diversa 2006-07-29 mi da gli stessi valori..... come è possibile? uff...
-
ora vi ringrazio e vi spiego come ho risolto pe tutti coloro che vorrebbero riuscirci^_^
[php]<?
session_start();
include "config.inc.php";
function Tempo($tim) {
return(strftime("%d/%m/%Y %H:%M", strtotime($tim)));
}
?><html>
<head>
<link rel="stylesheet" href="stile.css" type="text/css">
</head>
<?
$MySql = "SELECT UltimaEsp FROM USERS WHERE USERNAME='$_SESSION[USERNAME]'";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
$UltimaEsp = $rs["UltimaEsp"];
$rs->close;
#echo strftime("%Y-%m-%d")."==".$UltimaEsp."<hr>";
if (strftime("%Y-%m-%d")!=$UltimaEsp) {$MySql = "UPDATE USERS SET UltimaEsp = '".strftime("%Y-%m-%d 00:00:00")."' WHERE USERNAME='$_SESSION[USERNAME]'";
$Result = mysql_query($MySql);echo "hai aggiornato la data^_^";
}
?>
<?@mysql_close ($connessione); ?>[/php]
grazie a tutti
-
Grazie a te massimux per aver postato la soluzione funzionante