|
| Ændre variabel ved tryk Fra : Lasse Vestergaard |
Dato : 20-12-05 11:24 |
|
Er der nogen der ved hvordan man ændre en variabel ved at trykke
på en knap?
Jeg er ved at lave en kalender hvor man skal kunne trykke sig
frem og tilbage i tiden.
Den aktuelle måned bliver vist du fra funktionen date('m');
funktionen har jeg sat lig med et variabelnavn $maaned. Min plan
er så at hver gang der bliver trykket på knappen/linket "forrige"
så skal der trækkes 1 fra $maaned.
vh
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jesper H (20-12-2005)
| Kommentar Fra : Jesper H |
Dato : 20-12-05 12:05 |
|
En måde at gøre det på er, at finde ud af om $maaned er defineret
som en del af adressen (GET, vistnok).
Så kan du lave noget kode i retning af
<?PHP
if (isset($_REQUEST['maaned']))
{
$maaned = intval($_REQUEST['maaned']);
// Herefter kan man så lavet noget sanity-check på, om $maaned
har en gyldig værdi (mellem 1 og 12)
}
else
{
$maaned = date('m');
}
?>
Så har du koden til at læse $maaned ind fra adresselinien, og er den
ikke defineret, tilskrives den den aktuelle måned. Du er nok nødt til
at lave lignende kode for $aar, hvis nu nogle skulle finde på at
trykke sig videre frem end december.
Nu kommer så linket. Det kan du lavet således:
<?PHP
// En måned frem
echo '<a href="'.basename($_SERVER['PHP_SELF']).'?maaned='.date('m',
mktime(0,0,0,$maaned+1,1,$aar)).'">et link</a>';
// En måned tilbage
echo '<a href="'.basename($_SERVER['PHP_SELF']).'?maaned='.date('m',
mktime(0,0,0,$maaned-1,1,$aar)).'">et link</a>';
?>
Ved at bruge mktime() tager man automatisk højde for, at der ikke
findes en 13'ende måned og sådan. Du kan se flere praktiske
oplysninger om mktime() på http://dk2.php.net/mktime og om date()
på http://dk2.php.net/manual/en/function.date.php , Begge steder er
der gode eksempler, der viser noget af det, du søger.
--
Mvh Jesper, http://fdf.dk/landsdel1/
| |
Lasse Vestergaard (20-12-2005)
| Kommentar Fra : Lasse Vestergaard |
Dato : 20-12-05 12:40 |
|
Du aner slet ikke hvor glad jeg er for din hjælp. Tusind tak. Det var
lige det jeg manglede
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Lasse Vestergaard (20-12-2005)
| Kommentar Fra : Lasse Vestergaard |
Dato : 20-12-05 15:27 |
|
>Du er nok nødt til
> at lave lignende kode for $aar, hvis nu nogle skulle finde på at
> trykke sig videre frem end december.
Jeg har lige sat og kigget lidt på det, samt jeg har været inde på de
links du skrev i forrige indlæg. Men jeg kan ikke finde ud af hvordan
man får den til at skifte år...
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Kasper Johansen (20-12-2005)
| Kommentar Fra : Kasper Johansen |
Dato : 20-12-05 22:53 |
|
Lasse Vestergaard skrev:
>>Du er nok nødt til
>>at lave lignende kode for $aar, hvis nu nogle skulle finde på at
>>trykke sig videre frem end december.
>
>
> Jeg har lige sat og kigget lidt på det, samt jeg har været inde på de
> links du skrev i forrige indlæg. Men jeg kan ikke finde ud af hvordan
> man får den til at skifte år...
Du kan overveje at bruge unix-timestamps i url'en (i stedet for måned,
år osv.).
<?
if (!$_GET[dato]){
$ligenu = time();
}else{
$ligenu = $_GET[dato];
}
$omEnMaaned = strtotime("+1 month", $ligenu);
$omEtAar = strtotime("+1 year", $ligenu);
$omFemDage = strtotime("5 days", $ligenu);
?>
<a href="minside.php?dato=<?=$omEtAar?>">Gå et år frem</a>
Ved godt at det helt korrekte selvfølgelig ville være mktime(), men
strtotime() er nu dejlig til sådan noget :)
--
Med venlig hilsen
Kasper Johansen
| |
Lasse Vestergaard (21-12-2005)
| Kommentar Fra : Lasse Vestergaard |
Dato : 21-12-05 10:46 |
|
Nu har jeg rodet med nonstop i et par dage, men jeg kan simpelhen
ikke løse mit problem. Hvis jeg går en måned frem og dette så vil
reslutere i at året skifter, så har jeg et problem.
Min kode er:
<?PHP
$year=date('y');
if (isset($_REQUEST['month']))
{
$month = intval($_REQUEST['month']);
$year= intval($_REQUEST['year']);
if($month==13){
$month=1;
$year=$year+1;
}
else if($month==0){
$month=12;
$year=$year-1;
}
}
else
{
$month = date('m');
}
$monthF=$month-1;
$monthN=$month+1;
$num = cal_days_in_month(CAL_GREGORIAN,$month,$year ); // 31
// En måned tilbage
echo '<a href="'.basename($_SERVER['PHP_SELF']).'?month='.$monthF.
'&' . '?year='.$year.'">Forrige</a>';
echo " ";
echo date('F Y', mktime(0,0,0,$month,1,$year));
echo " ";
// En måned frem
echo '<a href="'.basename($_SERVER['PHP_SELF']).'?month='.$monthN.
'&' . '?year='.$year.'">Næste</a>';
echo" <table border='1'>";
echo "<tr
bgcolor='lightblue'><td>M</td><td>T</td><td>O</td><td>T</td><td>F</t
d><td>L</td><td>S</td></tr>";
$ugeDag=date('w', mktime(0,0,0,$month,1,$year));
if($ugeDag==0)
$ugeDag=7;
for ($i=1;$i<=$num;)
{
echo"<tr>";
for($k=0;$k<7 & $i<=7;$k++){
if($k+1<$ugeDag)
echo "<td></td>";
else{
echo "<td>$i</td>";
$i++;
}
}
echo "</tr>";
for($j=0;$j<7 & $i<=$num;$j++)
{
if($i==date(d) & $month==date('m')){
echo "<td bgcolor='yellow'>";
}
else{
echo" <td>";
}
echo $i;
$i++;
echo" </td>";
}
echo"</tr>";
}
echo" </table>";
?>
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Lasse Vestergaard (21-12-2005)
| Kommentar Fra : Lasse Vestergaard |
Dato : 21-12-05 19:47 |
|
> // En måned tilbage
> echo '<a href="'.basename($_SERVER['PHP_SELF']).'?month='.$monthF.
> '&' . '?year='.$year.'">Forrige</a>';
> echo " ";
> echo date('F Y', mktime(0,0,0,$month,1,$year));
> echo " ";
> // En måned frem
> echo '<a href="'.basename($_SERVER['PHP_SELF']).'?month='.$monthN.
> '&' . '?year='.$year.'">Næste</a>';
Jeg har fundet fejlen. Der er et ? for meget i koden hvor jeg gemmer
$year variablen.
Jeg har desuden ændret lidt længere nede i koden. Jeg vil have at den
aktuelle dato er markeret. Så der skal lige tilføjes lidt i koden.
Jeg har tilføjet $year==date('y').
if($i==date(d) & $month==date('m') & $year==date('y')){
echo "<td bgcolor='yellow'>";
Føl jer endelig frie til at bruge koden hvis i står og mangler den
Jeg vil dog sætte pris på hvis i vil sende en mail, så jeg kan se
hvordan i har implementeret den... Bare til inspiration.
Eller hvis der er fejl vil jeg også meget gerne høre
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
|
|