webForumDet fria alternativet

Kalendarie, snygga till

PHP

2 svar · 228 visningar · startad av SONICdust

Medlem sedan nov. 2003196 inlägg
Frågan#1

Jag har klipp & klistrat lite för att få ihop ett kalendarie. Det hämtar ut alla poster från nu och listar dom under sin månad.

Så här ser min php-kod ut:

$months = array("Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December");
$curmonth = 0;
$sql = "SELECT * FROM kalendarium WHERE datum >= NOW() ORDER BY datum DESC, kid DESC";
$resultat = @mysql_query($sql) or die ("Kunde ej utföra frågan.");

while ($row = mysql_fetch_array($resultat)) {
	extract($row);
	$nowdate = substr($datum, 5, 2);
	if ($nowdate != $curmonth) {
		echo "<dd><h3>" . $months[$nowdate-1] . "</h3></dd>";
		$curmonth = $nowdate;
	}
	$day = substr($datum, 8, 2);
	$space = "&nbsp;&nbsp;";
	$string = "$day";
	$string = ereg_replace('^0', $space, $string);
	echo "<dt> $string <a href=\"?id={$row["kid"]}\">". (htmlspecialchars($row["rubrik"])) ."</a></dt>";
}

Som ger resultat
Oktober
2 LOREM IPSUM
1 LOREM IPSUM
September
20 LOREM IPSUM
18 LOREM IPSUM
10 LOREM IPSUM
1 LOREM IPSUM

Men jag skulle vilja få det att se ut så här
Oktober
2 LOREM IPSUM
1 LOREM IPSUM

September
20 LOREM IPSUM
18 LOREM IPSUM
10 LOREM IPSUM
1 LOREM IPSUM

Det jag skulle vilja få hjälp med är att få till det så det ser snyggare ut, gärna så här

<dl>
	<dd>Oktober</dd>
 	<dt>12 LOREM IPSUM</dt>
 	<dt> 2 LOREM IPSUM</dt>
</dl>
<dl>
	<dd>September</dd>
	<dt>21 LOREM IPSUM</dt>
	<dt>20 LOREM IPSUM</dt>
</dl>

Så att jag kan göra dom formateringar jag vill med CSSen

Några tips?

Medlem sedan aug. 20002 975 inlägg
#2

Testa något på det här hållet:

$months = array(1=>"Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December");
$calender = array();

$sql = "SELECT * FROM kalendarium WHERE datum >= NOW() ORDER BY datum DESC, kid DESC";
$resultat = @mysql_query($sql) or die ("Kunde ej utföra frågan.");

while ($row = mysql_fetch_assoc($resultat)) {

    $time = strtotime($row['datum']);
    $row['day'] = preg_replace("/^0/", "&nbsp;&nbsp;", date("m", $time));
    $calendar[$months[date("n", $time)]][] = $row;

}

foreach ($calendar as $month => $event) {

    echo "<dl>\n\t<dd><h3>$month</h3></dd>\n";

    foreach ($event as $row) {
        echo "\t<dt> {$row['day']} <a href=\"?id={$row["kid"]}\">". (htmlspecialchars($row["rubrik"])) ."</a></dt>\n";
    }

    echo "</dl>\n";

}
Medlem sedan nov. 2003196 inlägg
#3

Matte skrev:

Testa något på det här hållet:

$months = array(1=>"Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December");
$calender = array();

$sql = "SELECT * FROM kalendarium WHERE datum >= NOW() ORDER BY datum DESC, kid DESC";
$resultat = @mysql_query($sql) or die ("Kunde ej utföra frågan.");

while ($row = mysql_fetch_assoc($resultat)) {

    $time = strtotime($row['datum']);
    $row['day'] = preg_replace("/^0/", "&nbsp;&nbsp;", date("m", $time));
    $calendar[$months[date("n", $time)]][] = $row;

}


foreach ($calendar as $month => $event) {

    echo "<dl>\n\t<dd><h3>$month</h3></dd>\n";

    foreach ($event as $row) {
        echo "\t<dt> {$row['day']} <a href=\"?id={$row["kid"]}\">". (htmlspecialchars($row["rubrik"])) ."</a></dt>\n";
    }

    echo "</dl>\n";

}

Grymt bra, TACK

$row['day'] = preg_replace("/^0/", "&nbsp;&nbsp;", date("d", $time));

Ändrar ...date("m"... till "d" så datumen kommer ut. Tack igen

290 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
165 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)