bassebhuMedlem sedan nov. 20016 480 inlägg Halloj!
Jag håller på med en kalender och har till att börja med två stora frågor.
Som minst så visar den just nu 28 dagar (februari utan skottår) och skriver ut händelser i varje kalenderruta/dag, på de dagar där det finns något inlagt vill säga.
Hur ska man utföra hämtningen från databasen? Just nu så loopar jag ut alla datum med en vanlig for-loop och sedan loopas en sql-fråga för varje dag som hämtar dennes händelser. Det funkar, men känns osnyggt och borde bli segare och segare med tiden ju mer som lagras. Bör man hämta alla händelser i en sql-fråga för de aktuella dagarna och sedan lägga in värdena på rätt ställen i kalendern? Om det är så man borde göra, hur får man till det? Jag behöver bara lite riktlinjer...
Just nu så skriver jag bara aktuella månadens dagar, men det vore snyggt att få med ev. tidigare/senare dagar från kringliggande månader, för att fylla ut de nu tomma platserna som hamnar i min kalender.
Jag har byggt vidare på ett annat kalenderscript så jag har inte riktigt koll på hur mitt eget fungerar rent tekniskt ;)
Lite riktlinjer hur man bör tänka för att få det att se ut som wF-kalendern längst ner till vänster här
Tackar för svar! :bire
tydalMedlem sedan juni 20034 013 inlägg
bassebhu skrev:
Bör man hämta alla händelser i en sql-fråga för de aktuella dagarna och sedan lägga in värdena på rätt ställen i kalendern?
Ja. Du kan använda BETWEEN i SQL-frågan:
$result = mysql_query("SELECT datum, handelse FROM kalender WHERE datum BETWEEN '2006-02-01' AND '2006-02-28'");
Sen kan du ju fylla en array med alla händelser:
$handelser = array();
while ($r = mysql_fetch_array($result))
{
$handelser[$r['datum']] = $r['handelse'];
}
Slutligen loopar du igenom alla datum för utskrift och skriver ut $handelser[AKTUELLT_DATUM_I_LOOPEN].
Exempelvis.
bassebhu skrev:
Just nu så skriver jag bara aktuella månadens dagar, men det vore snyggt att få med ev. tidigare/senare dagar från kringliggande månader, för att fylla ut de nu tomma platserna som hamnar i min kalender.
Du kan ju använda mktime från igår genom att dra bort och lägga till dagar för att få de korrekta datumen.
bassebhuMedlem sedan nov. 20016 480 inlägg Jag fick det att fungera med array-grejen Jag skrev ut det med foreach sedan. Det här verkar rätt va?
$c_sql = "SELECT * FROM c_events WHERE e_date BETWEEN '" . date("Y-m-d", mktime(0,0,0,$date['mon'],$date['mday'],$date_today_o['year'])) . "' AND '" . date("Y-m-d", mktime(0,0,0,$date2['mon'],$date2['mday']-1,$date2['year'])) . "' ORDER BY e_date ASC, e_title ASC";
$c_result = mysql_query($c_sql);
if(!(mysql_num_rows($c_result) == 0)) {
$events = array();
while($c_row = mysql_fetch_array($c_result)) {
$events[$c_row['e_id']]['title'] = $c_row['e_title'];
$events[$c_row['e_id']]['date'] = $c_row['e_date'];
}
}
// ...
foreach($events as $e => $v) {
if($v['date'] == date("Y-m-d", mktime(0,0,0,$month,$day,$year))) {
echo $v['title'];
}
}
Ska kolla lite på hur jag kan lösa fråga 2). Återkommer.