Stipendi mensili
Stipendi mensili postato il 13/12/2008 12:50:40 nel forum programmazione, open source e hosting
Con gdr-extreme come faccio a settare il ritiro della paga mensilmente invece che giornalmente? Sul codice ho notato che c'è la funzione STRFTIME è forse quella da modificare? Se sì, come? Ho provato a sostituire al codice %M il valore 01 (intendendo con ciò 1 mese) ma non funziona.
Grazie dell'attenzione.
Pagine → 1
13/12/2008 18:47:00
black ha scritto: Esistono le funzioni di data di SQL che ti permettono di andare a prendere i dati con precisione di secondo o di secolo <.< ok che non sono così immediate, ma questo non deve esimerci dallo studiarcele se vogliamo introdurre la dimensione temporale.
Comunque, il problema si risolve facilmente: al login testi su un campo salvato nel DB dove hai memorizzato la data dell'ultimo stipendio, e se è passato un mese allora aggiungi un nuovo stipendio e fai un aggiornamento del valore memorizzato, che poi non toccherai più fino al mese prossimo (ma che testerai ogni volta che il giocatore accede al gioco).
Ciao black,
sinceramente non ho capito bene il tuo suggerimento. Credo si tratti di una soluzione che richiede un controllo periodico (ogni volta che un pg entra), ma immaginavo bastasse una modifica del codice banca.php.
Sono pure corso a studiarmi la funzione STRFTIME ma quando Mr. Faber ha scritto che non c'entrava niente col problema ho lasciato perdere. Adesso sto spulciando il codice in cerca di qualcosa che possa portarmi alla soluzione (la funzione DATA suggerita da cicciokr non c'è).
13/12/2008 19:14:11
sicuramente c'è un confronto tra la data di oggi e quella dell'ultimo ritiro, perciò c'è la funzione per il tempo.
Mhhh... Non conosco la sintassi esatta, ma, comunque, devi fare in modo che la data di oggi sia maggiore di 1 mese a quella dell'ultimo ritiro.
Perciò studiati la funzione del tempo, e poi nella pagina che vuoi (presumibilmente banca.php) il procedimento logico è questo
$oggi è la data che hai preso con la funzione.
$ultimostipendio è l'ultimo ritiro
Se tra oggi e ultimostipendio c'è almeno un mese, allora fai la query. Altrimenti dai errore.
13/12/2008 23:41:16
if ($Somma <= 0) {
echo "<font color=white>Spiacente, lo stipendio di $Somma $par_CurrencyName non è ritirabile.</font>";
} elseif (($UltimoStipendio."") >= strftime("%Y-%m-%d")) {
echo "<font color=white>Spiacente, lo stipendio oggi è già stato ritirato.</font>";
} else { #somma formalmente valida
Dovresti trovare un codice del genere nella pagina banca.php, ad occhio credo che basti togliere
-%d
dalla funzione strftime per far sì che lo confronti solo con il mese e non anche con il giorno, però non ne ho la certezza assoluta in quanto non l'ho provato e non ho letto interamente il codice e le variabili da dove provengono :D spero d'essere stato utile
14/12/2008 11:05:12 e modificato da dyrr il 14/12/2008 11:05:51
Un altro sistema potrebbe essere quwllo di modificare la query che aggiorna la data dell'ultimo stipendio a:
$MySql = "UPDATE Personaggio SET Banca = Banca + $Somma, UltimoStipendio = DATE_ADD(NOW(), INTERVAL 1 MONTH) WHERE Nome = '".pars($_SESSION['Login'])."'";
$Result = mysql_query($MySql);
in questa maniera ti inserisce come data ultimo stipendio la data del mese successivo e visto che il controllo sulla reperibilità dello stipendio viene fatto confrontando se la data odierna è maggiore della data dell'ultimo stipendio non devi modificare altro
17/12/2008 13:57:53
La funzione suggerita da dyrr non va... Ho provato quella di toth che invece sembra funzionare, non appena ritirato lo stipendio è spuntato "Paga già ritirata il [data]". Adesso dovrò attendere un mese, vi saprò dire...
Grazie!
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
RAID Shadow Legends ↗
State of Survival ↗
Enlisted ↗
Wuthering Waves ↗
Raja Dunia ↗
New Orleans ↗