Permalänk
Medlem

behöver vägledning i php.

Hej håller på att göra en egen hemsida. Ni kan hitta den på http://www.adamsnook.se
Nu har jag problem som jag skulle bli väldigt glad om jag skulle kunna få lite vägledning om hur jag sak lösa dem.

Det första är kalendern. Om månaden sluter på en söndag, blir det en rad för mycket i IEexplorer samt i Opera. Vilket jag irriterar mig väldigt mycket på.

Det andra är att varje datum ska bli en klickbar länk. Alla lännkar ska komma till samma sida men den sidan ska veta vilken länk användaren har tryckt på. Peka mig abra i rätt riktning.

Det tredje är ett html problem. Min överskrift, skall vara gögst upp i högra hörnet vilken den är i IEexplorer samt Opera. Men i Firefox så blir det inte så. Hur får jag bukt med detta?

Här är koden till kalendern.

<?php function showMonth($advance) { $month1 = date(n); $year1 = date(Y); $month2 = date(n)+1; $year2 = date(Y); IF ($month2 == 13){ $month2 = 1; $year2++; } WHILE ($advance >= 1 ){ $month1++; $month2++; IF ($month1 == 13){ $month1 = 1; $year1++; }; IF ($month2 == 13){ $month2 = 1; $year2++; }; $advance--; }; $date1 = mktime(12, 0, 0, $month1, 1, $year1); $date2 = mktime(12, 0, 0, $month2, 1, $year2); $daysImonth1 = date("t", $date1); $daysImonth2 = date("t", $date2); // calculate the position of the first day in the calendar (sunday = 1st column, etc) $offset1 = date("N", $date1); $offset2 = date("N", $date2); $rows = 1; while($n!=1){ if ($month1==1){ $month1 = Januari; $month2 =Februari; $n=1; }elseif ($month1==2){ $month1 = Februari; $month2 =Mars; $n=1; // Den fortsätter hela året ut, men har klipt bort det för att det är ovesentlig del samt att spara plats. } } $offset1-=1; $offset2-=1; echo "<h1> $month1</h1>\n"; echo "<table border=\"1\">\n"; echo "\t<tr><th>Mån</th><th>Tis</th><th>Ons</th><th>Tor</th><th>Fre</th><th>Lör</th><th>Sön</th></tr>"; echo "\n\t<tr>"; for($i = 1; $i <= $offset1; $i++){ echo "<td> </td>"; } for($day = 1; $day <= $daysImonth1; $day++){ echo "<td>" . $day . "</td>"; if( ($day + $offset1) % 7 == 0 && $day != 1 || $offset1 == 6 && $day ==1){ echo "</tr>\n\t<tr>"; $rows2++; } } while( ($day + $offset1) % 7 !=0 && ($day + $offset1) != 35){ echo "<td> </td>"; $day++; } echo "</tr>\n"; echo "</table>\n"; echo "<h1> $month2</h1>\n"; echo "<table border=\"1\">\n"; echo "\t<tr><th>Mån</th><th>Tis</th><th>Ons</th><th>Tor</th><th>Fre</th><th>Lör</th><th>Sön</th></tr>"; echo "\n\t<tr>"; for($i = 1; $i <= $offset2; $i++){ echo "<td> </td>"; } for($day = 1; $day <= $daysImonth2; $day++){ echo "<td>" . $day . "</td>"; if( ($day + $offset2) % 7 == 0 && $day != 1 || $offset2 == 6 && $day ==1){ echo "</tr>\n\t<tr>"; $rows2++; } } while( ($day + $offset2) % 7 !=0 && ($day + $offset2) != 35){ echo "<td> </td>"; $day++; } echo "</tr>\n"; echo "</table>\n"; } ?>

Vart tänker jag fel?

Mvh Adam

Visa signatur

O o
/¯¯/_o___o___o___o____o__
\__\¯¯o¯¯¯o¯¯¯¯¯¯o¯¯¯¯¯¯o I'M FIREIN MY LAZER!

Permalänk
Medlem

Oj det där var en fruktansvärd massa kod. Finns nog en hel del i det där du kan generalisera till att börja med. Tex behöver du inte ha 12 elseif satser för att definiera vilken månad det är. Ha åtminstone en switch sats där eller en helt annan lösning med array eller extern funktion.

För att sidan du kommer till ska ha rätt info får du skicka med en variabel. enklast med $_GET. tex <a href="sida.php?jagkomfrån=månad12">länk</a>

placering är ett css problem som du säkert löser snabbt och lätt efter lite googling och några små tutorials.

Har inte tid att förklara noggrannare men jag tror du förstår.

Permalänk
Medlem

Skrev ihop lite kod för att visa hur du skulle kunna lösa det på ett lite snyggare sätt (det är snyggare enligt mig iaf, nån kan säkert tycka annorlunda)..

<?php showMonth($_GET["year"],$_GET["month"]); function showMonth($year,$month) { $timeNow=mktime(0,0,0,$month,1,$year); echo "<h1>".date("F",$timeNow)."</h1>"; echo "<table border=\"1\">\n"; echo "<tr>\n"; for($i=0,$timeDay=strtotime("sunday");$i<7;$i++) { $timeDay=strtotime("+1 day",$timeDay); echo "<th>".date("D",$timeDay)."</th>"; } $nrDays=date("t",$timeNow); $blanks=date("N",$timeNow)%7; for($week=0;$week<($nrDays+$blanks)/7;$week++) { echo "<tr>\n"; for($day=0;$day<7;$day++) { $dayTotal=$week*7+$day; $value = ($dayTotal<$blanks)?0:($dayTotal-$blanks+1); $value = ($value>$nrDays)?0:$value; echo "<td>".buildCalDayLink($timeNow,$value)."</td>"; } echo "\n</tr>\n"; } echo "\n</tr>\n"; echo "</table>\n"; echo buildCalNavLink(strtotime("-1 month",$timeNow)); echo buildCalNavLink(strtotime("+1 month",$timeNow)); } function buildCalDayLink($timestamp,$day) { if($day==0) { return " "; } $year=date("Y",$timestamp); $month=date("n",$timestamp); $str='<a href="?year='.$year.'&month='.$month.'&day='.$day.'">'.$day.'</a>'."\n"; return $str; } function buildCalNavLink($timestamp) { $year=date("Y",$timestamp); $month=date("n",$timestamp); $monthName=date("F",$timestamp); $str='<a href="?year='.$year.'&month='.$month.'">'.$monthName.'</a>'."\n"; return $str; } ?>

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk
Medlem

Tack! Har nu skrivit om hela, blev 110 rader kortare. Har inte ordnat länkarna ska börja på det nu, samt nu kan jag blädra bakåt i tiden med och behöver därför inte min fullösning med att ta dissabla bakåtknappen.

Visa signatur

O o
/¯¯/_o___o___o___o____o__
\__\¯¯o¯¯¯o¯¯¯¯¯¯o¯¯¯¯¯¯o I'M FIREIN MY LAZER!

Permalänk
Medlem

det går inte bläddra tidigare än år 2000