Fasi giornaliere.
Fasi giornaliere. postato il 12/10/2010 09:31:46 nel forum programmazione, open source e hosting
Salve a tutti, ho un piccolissimo problemuzzo questo è il codice che utilizzo per le fasi giornaliere dentro il gioco:
<?
$ora = (date("G:i"));
if($ora > "06:01" AND $ora < "12:00") {
$fase="Mattino";
} elseif($ora >= "12:01" AND $ora <= "18:00") {
$fase="Pomeriggio";
} elseif($ora >= "18:01" AND $ora <= "19:58") {
$fase="Tramonto";
} elseif($ora >= "19:59" AND $ora <= "06:00"){
$fase="Notte";
}
echo $fase;
?>
Perchè non mi fa vedere più Notte dalle 00:00 mi passa direttamente in Mattino? Così com'è non dovrebbe essere fino alle 06:00 Notte e dalle 06:01 Mattino?
Pagine → 1 2
12/10/2010 11:09:01 e modificato da orientia il 12/10/2010 11:10:21
06 è numericamente inferiore di 19 e tu gli dici:
Se il valore $ora è più grande di 19 e CONTEMPORANEAMENTE più piccolo di 6 allora è notte: penso che la macchina ritenga impossibile che queste due condizioni si avverino in contemporanea. Dovresti riuscire a risolvere sostituendo l'AND con un OR che dice se il valore $ora è maggiore di 19 o è minore di 6 allora è notte.
12/10/2010 11:11:36
Quindi basta sostituire l'ultimo AND con OR e dovrebbe funzionare?
12/10/2010 11:15:20 e modificato da ft_staff il 12/10/2010 11:17:52
Personalmente lo trovo un metodo un po spartano, se vuoi posso suggerirti la seguente soluzione:
<?php
$time = date("G");
$range = ($time != 0)? ceil($time/6) : 1;
$fasi[1] = "Notte";
$fasi[2] = "Mattino";
$fasi[3] = "Pomeriggio";
$fasi[4] = "Sera";
echo $fasi[$range];
?>
Semplice ed efficace: l'ho fatta ora su due piedi, fammi sapere come va ;-)
12/10/2010 11:17:42
ft_staff ha scritto: Personalmente lo trovo un metodo un po spartano, se vuoi posso suggerirti la seguente soluzione:
<?php
$time = date('G');
$range = ($time != 0)? ceil($time/6) : 1;
$fasi[1] = "Notte";
$fasi[2] = "Mattino";
$fasi[3] = "Pomeriggio";
$fasi[4] = "Sera";
echo $fasi[$range];
?>
Semplice ed efficace: l'ho fatta ora su due piedi, fammi sapere come va ;-)
elegante, brava!
12/10/2010 11:18:24
C'è un errore, ora mi segnala notte XD
12/10/2010 11:20:30
io farei il codice leggermente diverso:
<?php
$ora = date("G");
if($ora >= 6 && $ora < 12) {//da 06:00 a 11:59
$fase="Mattino";
} elseif($ora >= 12 && $ora < 18) {//da 12:00 a 17:59
$fase="Pomeriggio";
} elseif($ora >= 18 && $ora < 19) {//da 18:00 a 18:59
$fase="Tramonto";
} elseif(($ora >= 19 && $ora <= 23) || ($ora >= 0 && $ora < 6)){//da 19:00 a 23:59 e da 00:00 a 05:59
$fase="Notte";
}
echo $fase;
?>
cosi' il codice dovrebbe funzionare e dovrebbe essere anche un pò più semplice nei confronti dei valori di $ora
12/10/2010 11:21:46
Eh speravo di correggere in tempo una mia sbadataggine sulla definizione di $time, pardon 😊
Riprova con quello attuale ;-)
Scomodo: ma grazie :-)
12/10/2010 11:23:05
Ho appena caricato questo suggerito:
<?php
$ora = date("G");
if($ora >= 6 && $ora < 12) {//da 06:00 a 11:59
$fase="Mattino";
} elseif($ora >= 12 && $ora < 18) {//da 12:00 a 17:59
$fase="Pomeriggio";
} elseif($ora >= 18 && $ora < 19) {//da 18:00 a 18:59
$fase="Tramonto";
} elseif(($ora >= 19 && $ora <= 23) || ($ora >= 0 && $ora < 6)){//da 19:00 a 23:59 e da 00:00 a 05:59
$fase="Notte";
}
echo $fase;
?>
Vediamo in 24h come và, per ora funziona. ^_^ Grazie ancora della disponibilità a tutti
12/10/2010 11:47:53
il codice:
<?php
$time = date("G");
$range = ($time != 0)? ceil($time/6) : 1;
$fasi[1] = "Notte";
$fasi[2] = "Mattino";
$fasi[3] = "Pomeriggio";
$fasi[4] = "Sera";
echo $fasi[$range];
?>
divide le fasi del giorno in maniera leggermente diversa dalla sua.
Volendo basarsi sul sistema degli array per evitare tutti quegli if e poter cambiare in futuro come vuole i settaggi delle ore si può fare:
<?php
$range = date("G");
$fasi = array (
'Notte',
'Notte',
'Notte',
'Notte',
'Notte',
'Notte',
'Mattino',
'Mattino',
'Mattino',
'Mattino',
'Mattino',
'Mattino',
'Pomeriggio',
'Pomeriggio',
'Pomeriggio',
'Pomeriggio',
'Pomeriggio',
'Pomeriggio',
'Tramonto',
'Tramonto',
'Notte',
'Notte',
'Notte',
'Notte'
);
echo $fasi[$range];
?>
12/10/2010 12:03:58
Col mio intervento non intendevo dare il via ad un discorso di estremizzazione del tipo "o if o array".
Un sapiente uso di entrambi ritengo possa far ottenere la soluzione desiderata senza troppi problemi.
Ci vuole poco a riadattare l'esempio che ho postato in precedenza per adattarlo alle esigenze dell'utente in questione:
<?php
$time = date("G");
$sup = ($time == 19)? 1 : 0;
$range = ($time != 0)? ceil(($time/6)+$sup) : 1;
$fasi[1] = "Notte";
$fasi[2] = "Mattino";
$fasi[3] = "Pomeriggio";
$fasi[4] = "Notte";
$fasi[5] = "Tramonto";
echo $fasi[$range];
?>
Adesso il funzionamento dovrebbe essere simile al suo e non ho ne una valanga di controlli ne una serie smisurata di indici in un array ;-)
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
New Orleans ↗
Tiles Survive ↗
Raja Dunia ↗
Crossout ↗
Neverness to Everness ↗
Sea of Conquest ↗
Wuthering Waves ↗
Exclusive Villa GdR ↗
Fallen Gods ↗