Calendario compatibile
Calendario compatibile postato il 04/11/2013 21:01:48 nel forum programmazione, open source e hosting
Buonasera,
Cerco di spiegarmi brevemente!
Sto creando una land ambientata nel futuro, sto lavorando (non chiedetemi perchè) sia su gdr cd extreme che su gdr cd 5.2.
Dovrei usando un app esterna (scaricabile, o da programmare <se si come?> ) per un calendario dove segnalare le quest, addestramenti, lezioni e quant'altro.
In giro ho trovato molti calendari, tanti in javascript (che non so se sono compatibili con Extreme e 5.2) ma che alla fine o non mi permettono di "spostare la data a tra X anni" e che non mi permettono di "creare un evento" alla fine la data che mi forniscono extreme e 5.2 vanno più che bene. Il motivo per cui mi serve il calendario è unicamente per segnalare e rendere più "giocabile" la land....
Vi ringrazio tanto, fatemi sapere.
Pagine → 1
04/11/2013 21:19:33
la soluzione più semplice è prendere un qualsiasi script per calendari che fa al caso tuo. Capire come prende l'anno probabilmente tramite una funzione php tipo date() o time(). A questo risultato aggiungi il tuo valore esempio
vuoi 3013? fai
$anno = $anno + 1000;
04/11/2013 23:11:03
Guarda, anche io volevo fare una cosa simile per la land che sto creando. Girando su internet ho trovato questo, che permette di fare tutto ciò che vuoi:
http://www.mrwebmaster.it/php/calendario-agenda-php-mysql_7163.html ↗
è lungo (5 pagine) ma basta leggere, e modificarlo cambiando l'anno di partenza è semplicissimo.
Visto che ci sono, ne approfitto per fare una domanda su quel codice. Questa è la parte del codice per creare il calendario:
<?php
function ShowCalendar($m,$y)
{
if ((!isset($_GET['d']))||($_GET['d'] == ""))
{
$m = date('n');
$y = date('Y');
}else{
$m = (int)strftime( "%m" ,(int)$_GET['d']);
$y = (int)strftime( "%Y" ,(int)$_GET['d']);
$m = $m;
$y = $y;
}
$precedente = mktime(0, 0, 0, $m -1, 1, $y);
$successivo = mktime(0, 0, 0, $m +1, 1, $y);
$nomi_mesi = array(
"Gen",
"Feb",
"Mar",
"Apr",
"Mag",
"Giu",
"Lug",
"Ago",
"Set",
"Ott",
"Nov",
"Dic"
);
$nomi_giorni = array(
"Lun",
"Mar",
"Mer",
"Gio",
"Ven",
"Sab",
"Dom"
);
$cols = 7;
$days = date("t",mktime(0, 0, 0, $m, 1, $y));
$lunedi= date("w",mktime(0, 0, 0, $m, 1, $y));
if($lunedi==0) $lunedi = 7;
echo "<table>
";
echo "<tr>
<td colspan="".$cols."">
<a href="?d=" . $precedente . ""><<</a>
" . $nomi_mesi[$m-1] . " " . $y . "
<a href="?d=" . $successivo . "">>></a></td></tr>";
foreach($nomi_giorni as $v)
{
echo "<td><b>".$v."</b></td>
";
}
echo "</tr>";
for($j = 1; $j<$days+$lunedi; $j++)
{
if($j%$cols+1==0)
{
echo "<tr>
";
}
if($j<$lunedi)
{
echo "<td> </td>
";
}else{
$day= $j-($lunedi-1);
$data = strtotime(date($y."-".$m."-".$day));
$oggi = strtotime(date("Y-m-d"));
include 'config.php';
$sql = "SELECT str_data FROM appuntamenti";
$result = mysql_query($sql) or die (mysql_error());
if(mysql_num_rows($result) > 0)
{
while($fetch = mysql_fetch_array($result))
{
$str_data = $fetch['str_data'];
if ($str_data == $data)
{
$day = "<a href="appuntamenti.php?day=$str_data">$day</a>";
}
}
}
if($data != $oggi)
{
echo "<td>".$day."</td>";
}else{
echo "<td><b>".$day."</b></td>";
}
}
if($j%$cols==0)
{
echo "</tr>";
}
}
echo "<tr></tr>";
echo "</table>";
}
ShowCalendar(date("m"),date("Y"));
?>
nell'array dei mesi ho aggiunto un tredicesimo mese (si, mi servono 13 mesi e non 12) ma quando vado a fare le prove non mi riconosce il tredicesimo mese. Come faccio a farglielo capire?
04/11/2013 23:41:25
come hai fatto ad aggiungere il tredicesimo mese?
Da quello che posso vedere quello script usa i mesi reali e quindi dubito che si possa fare qualcosa del genere. Ti conviene svilupparne uno che non abbia riferimenti con i mesi reali. Il mio consiglio è svilupparlo con le settimane. Considerando 52 settimane all'anno sono 28 giorni al mese per 13 mesi
usi il codice sopra date("W") per trovare la settimana corrente e poi la contestualizzi nel mese di riferimento.
Esempio settimana 5 = secondo mese, settimana 22 = sesto mese e così via
05/11/2013 20:02:38 e modificato da astro991 il 05/11/2013 20:23:14
Per rispondere alla tua domanda su come ho aggiunto un tredicesimo mese: ho modificato l'array dei mesi aggiungendo il mese GF in questo modo:
$nomi_mesi = array(
"Mar",
"Apr",
"Mag",
"Giu",
"Lug",
"Ago",
"Set",
"Ott",
"Nov",
"Dic",
"Gen",
"Feb",
"GF"
);
poi, siccome mi serve che il mese GF abbia solo 5 giorni (6 negli anni bisestili) mentre tutti gli altri mesi devono avere 30 giorni, ho fatto così:
if($nomi_mesi[$m] != "GF"){
$t = 30;
}else{
if(($y%400 == 0) OR ($y%4 == 0 AND $y%100 != 0)){
$t = 6;
}else{
$t = 5;
}
}
$days = date($t,mktime(0, 0, 0, $m, 1, $y));
solo che non mi prende il mese GF e mi scombussola tutti i giorni.
proverò a farne uno con le settimane come mi hai consigliato, sperando di riuscirci xD
Però mi si pone un problema: a me serve che mi parta dal primo mese (nel mio caso marzo) il giorno che aprirò la land..ossia giorno_apertura_land = 01 marzo anno I.. modificargli l'anno facendogli scrivere "anno I" invece di 2013 non è un problema..quello che non so fare è fargli capire che deve iniziare a contare da quando aprirò la land (ovviamente la data di apertura della land la dovrò impostare manualmente (immagino))
07/11/2013 07:30:42
In questo caso potresti prendere in considerazione uno script che calcoli di volta in volta la data. Ad esempio dai come giorno 0 il 06-11-2013 e poi da quella data conti i giorni che sono trascorsi e da quello calcoli la data attuale. Il mio unico dubbio è capire quanto può richiedere in termini di risorse. Toccherebbe provare ^^
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!
Exclusive Villa GdR ↗
Crossout ↗
Sea of Conquest ↗
Project Entropy ↗