/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Æ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()
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

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408524
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste