webForumDet fria alternativet

Läsa in händelser på datumet?

PHP

8 svar · 1 360 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Frågan#1

Hej, jag undrar hur man läser in händelser från databasen och visar på det aktuella datumet...

	<?
	$date = time();
	$day = date("d", $date);
	$month = date("m", $date);
	$year = date("Y", $date);

	$enable_events = true;

        // Öppna databasen
	require 'includes/database.php';
        
	// Hämta text från dagens datum
	$get = mysql_query("SELECT * FROM kalender");
	while($row = mysql_fetch_array($get)) 
	{
		$id = $row['id'];
		$text = $row['text'];
		$dag = $row['day'];
		$manad = $row['month'];
		$ar = $row['year'];
	}

	// Stäng databasen
	mysql_close($open);

	if(!isset($text) || $dag == $day)
	{
		$event_display = "Inga händelser idag.";
	}
	else
	{
		$event_display = $text;
	}

	$first_day = mktime(0,0,0,$month, 1, $year);
	$title = date("F", $first_day);
	$day_of_week = date("D", $first_day);

	switch($day_of_week)
	{
		case "Sönd": $blank = 0; break;
		case "Mon": $blank = 1; break;
		case "Tis": $blank = 2; break;
		case "Ons": $blank = 3; break;
		case "Tor": $blank = 4; break;
		case "Fre": $blank = 5; break;
		case "Lör": $blank = 6; break;
	}

	$days_in_month = cal_days_in_month(0, $month, $year);

	echo "<table border=\"3\" cellpadding=\"2\" cellspacing=\"4\" style=\"background: #aaa; border: 5px solid #555; color: #000; text-align: center\" width=\"420\">
	<tr>
		<td colspan=\"7\" style=\"background: #ddd; color: #d00;\"><strong>$title, $year</strong></td>
	</tr>
	<tr>
		<td style=\"background: #eee; color: #000\" width=\"60\"><strong>Sön.</strong></td>
		<td style=\"background: #eee; color: #000\" width=\"60\"><strong>Mon.</strong></td>
		<td style=\"background: #eee; color: #000\" width=\"60\"><strong>Tis.</strong></td>
		<td style=\"background: #eee; color: #000\" width=\"60\"><strong>Ons.</strong></td>
		<td style=\"background: #eee; color: #000\" width=\"60\"><strong>Tor.</strong></td>
		<td style=\"background: #eee; color: #000\" width=\"60\"><strong>Fre.</strong></td>
		<td style=\"background: #eee; color: #000\" width=\"60\"><strong>Lör.</strong></td>
	</tr>
	<tr>";

	$day_count = 1;
	$day_number = 1;

	while($blank > 0)
	{
		echo "<td></td>";
		$blank = $blank-1;
		$day_count++;
	}

	while($day_number <= $days_in_month)
	{
		if($day_number < $day)
		{
			echo "<td style=\"background: #bbb; border: 2px solid #ccc; color: #000\">$day_number</td>";
		}
		elseif($day_number == $day)
		{
			echo "<td style=\"background: #fff; border: 2px solid #555; color: #000\"><strong>$day_number</strong></td>";
		}
		else
		{
			echo "	<td style=\"background: #ccc; border: 2px solid #ddd; color: #000\">$day_number</td>";
		}
		$day_number++;
		$day_count++;
	
		if($day_count > 7)
		{
			echo "</tr><tr>";
			$day_count = 1;
		}
	}

	while($day_count > 1 && $day_count <= 7)
	{
		echo "<td></td>"; 
		$day_count++;
	}

	echo "</tr></table><br/><hr/>";

	if($enable_events == true)
	{
		echo "<br/><strong>Händelser för ".$title." ".$day.", ".$year."</strong><br/>";
		echo $event_display."<br/>";
	}
	?>
Medlem sedan juni 20031 837 inlägg
#2

Vad gör ditt skript idag?
försöker du hämta händelser och får fel?
beskriv gärna lite mer vad som händer och om du får några fel eller om du bara vill att vi ska bygga om skriptet för dig.

Jag personligen orkade inte sitte och läsa genom skriptet för att se vad du gör och om det är något fel.

Vad vill du göra med följande kod?

    while($row = mysql_fetch_array($get))
    {
        $id = $row['id'];
        $text = $row['text'];
        $dag = $row['day'];
        $manad = $row['month'];
        $ar = $row['year'];
    }

du loopar över alla träffar men och sparar värdena i nya variabler so mdu sedan inte göra något med utan sparar över de igen?

Medlem sedan jan. 20011 140 inlägg
#3

Tjenare, nej scriptet visar en kalender med alla datum för månaden. Har man lagt till någon event på dagens datum så skrivs det ut under kalendern. Men jag vill ha klickabara länkar på dagar där det finns events tillagda. Det vill jag ha hjälp med, kodexempel, pointers, vad som helst =)

Medlem sedan jan. 20011 140 inlägg
#4

Bump! Någon som har några ideer?

Medlem sedan juni 20031 837 inlägg
#5

Antingen kan du hämta ut alla händelser för månaden spara de i array:er innan du börjar att rita kalendern eller kan du hämta ut händelser för varje dag medans du ritar upp kalenderna men då kommer du göra många förfrågningar till databasen.
Ska du ha flera händelser för varje dag?
Ska det visas på olika sätt om det finns flera händerlser på en dag, d.v.s. ska det finns flera länkar att klicka på eller bara en länk per dag oavsett antal händelser för den dagen?
Ska händelsen skrivas ut i kalendern eller bara visas som markering att det finns händelse?

Medlem sedan jan. 20011 140 inlägg
#6

- Man ska kunna ha flera händelser för varje dag.
- Klickar man på ett datum visas alla händelser tillsammans.
- Det finns bara en länk på varje dag.
- Händelsen ska skrivas ut med att datumet är klickbart, annars visas bara datumet som en vanlig text.

Jag antar att då är bäst att spara månadens händelser i arrayer?

Medlem sedan juni 20031 837 inlägg
#7

då kan vi börja med att bygga upp arrayn med händelser för månaden.
Det hade varit bra o mdu kunde skicka med en skiss över tabellen för kalendern.

    $show_month = 5;
    $events = array();
    $get = mysql_query("SELECT * FROM kalender where month=$show_month group by day");  // hämta endast ut händelser för denna månaden, grupper per dag för vi är bara intresserade av ifall det finns en händelse för respektive dag
    while($row = mysql_fetch_array($get))
    {
        $events[$row['day']] = true; // markera att det finns en händelse
    }

tittar lite på där du ska ange ifall det finns händelse.

        $day_text = $day_number;

        if(isset($events[$day_number]) && $events[$day_number])
        {
            $day_text = "<a href=\"cal_show_day.php?show_day=$day_number\">$day_number</a>";
        }

        if($day_number < $day)
        {
            echo "<td style=\"background: #bbb; border: 2px solid #ccc; color: #000\">$day_text</td>";
        }
        elseif($day_number == $day)
        {
            echo "<td style=\"background: #fff; border: 2px solid #555; color: #000\"><strong>$day_text</strong></td>";
        }
        else
        {
            echo "    <td style=\"background: #ccc; border: 2px solid #ddd; color: #000\">$day_text</td>";
        }

Där har du lite mer hjälp, försök nu göra resten själv.

Observera att jag inte har testat koden utan utgått ifrån din egen kod.

Medlem sedan mars 20115 inlägg
#8

fick du det att funka?, jag behöver med ett event kalender :(.

Medlem sedan jan. 20011 140 inlägg
#9

Tja, jag tror inte att jag gjorde klart detta tyvärr. Kanske något man får kolla på vid tillfälle. Meddela gärna om du hittar på någon lösning.

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)