Avatar billede ulle55 Nybegynder
02. juli 2003 - 09:26 Der er 21 kommentarer og
1 løsning

Meget simpel kalender

Jeg skal bruge en simpel kalender. Den skal bruges til at indikere om et rum er optaget eller ej. Dvs. der skal være noget DB, hvor man skal kunne skrive en dato, og den dato vises så med rød i kalenderen, da der er optaget.

Jeg har kigget på nogle af de andre spørgsmål der er stillet op ca. det samme, men da jeg ikke er super god til PHP, så ser de lidt forvirende ud, det må da kunne laves simpelt.
Avatar billede exp Juniormester
02. juli 2003 - 09:29 #1
Avatar billede avminarm Juniormester
02. juli 2003 - 09:35 #2
Avatar billede ulle55 Nybegynder
02. juli 2003 - 09:41 #3
Jeg har kigget lidt på dem, men de er ikke særlig simple, og hvis de er, se er der ikke DB med i
Avatar billede avminarm Juniormester
02. juli 2003 - 10:08 #4
kig lidt på http://www.eksperten.dk/spm/361359 - kan du selv bygge videre på evt. ? - den er meget simpel - man man skal selv udfylde databasen med dage, md og år
Avatar billede avminarm Juniormester
02. juli 2003 - 10:10 #5
Avatar billede ulle55 Nybegynder
02. juli 2003 - 10:40 #6
Design messigt er den fin nok, men det er det med at få en DB ind i den jeg ikke kan find ud af
Avatar billede avminarm Juniormester
02. juli 2003 - 12:07 #7
jeg smækker lige noget sammen ;o)
Avatar billede avminarm Juniormester
02. juli 2003 - 14:17 #8
her selve kalender filen - jeg har puttet næste og forrige links på (sikke en service hva ;o]):

Når et lokale er reserveret i DB udskrives et link med rødt - det kan du selv lave mere ved hvis du vil :o)

########## kalender.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Kalender</title>
    <link rel=stylesheet type="text/css" href="style.css">
</head>
<body >

<table>
<tr>
  <td class="main" valign="top">
  <table height="100" cellpadding="0" cellspacing="4">
<?php
  include("config.php");
 
  if(isset($_GET['md']) && isset($_GET['year'])){
    $current_month = $_GET['md'];
    $year = $_GET['year'];

    //næste og forrige links
    if($current_month == 12){
      $mdnext = 1;
      $yearnext = $year+1;
      $mdprev = $current_month-1;
      $yearprev = $year;

    }elseif($current_month == 1){
      $mdnext = $current_month+1;
      $yearnext = $year;
      $mdprev = 12;
      $yearprev = $year-1;
    }else{
      $mdnext = $current_month+1;
      $yearnext = $year;
      $mdprev = $current_month-1;
      $yearprev = $year;
    }

  }else{
    $current_month = date("n");
    $year = date("Y");
    $mdnext = $current_month+1;
    $yearnext = $year;
    $mdprev = $current_month-1;
    $yearprev = $year;
  }


  $dkmdr = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
  $days = date ("t", mktime(0,0,0,1,$month,$year)); //finder antal dage i den valgte måned
  $current_day = date("d"); //dagsda date
  $charmonth = $current_month-1;

  // så laver vi et array "indhold" med de gænse ugedage i 0=søndag, 1= Mandag ... og 6=lørdag
  // men først et par tomme rum, så det kommer til at passe med ugedag...
  $day_of_week = date("w",mktime(0,0,0,$current_month,1,$year)); // finder dag på ugen for første dag i måneden

  //hvor mange tomme dage skal sættes før den 1. i måneden
  switch($day_of_week){
  case '0':
    $dage = 6;
  break;
  case '1':
    $dage = 0;
  break;
  case '2':
    $dage = 1;
  break;
  case '3':
    $dage = 2;
  break;
  case '4':
    $dage = 3;
  break;
  case '5':
    $dage = 4;
  break;
  case '6':
    $dage = 5;
  break;
  }

  for($i=0;$i<$dage;$i++){
    $tomme .= "<td align=\"center\" class=\"" . $class ."\"> </td>";
  }

  echo "<tr><td colspan=\"7\" align=\"center\"><b>".$dkmdr[$charmonth]." ".$year."</b></td></tr>\n";
  echo "<tr><td>Man</td><td>Tir</td><td>Ons</td><td>Tor</td><td>Fre</td><td>Lør</td><td>Søn</td></tr>";
  echo "<tr>";

    if($i <= 7){
    echo $tomme;
    }

    for($i=1;$i<=$days;$i++){
      $qry = mysql_query("SELECT * FROM event WHERE dag = '".$i."' AND md = '".$current_month."'") or die (mysql_error());
        $rows = mysql_num_rows($qry);
      if($rows == "0"){
        $class = "cal";
        $link = "";
        $endlink = "";
      }
        if($i == $current_day){
        $class = "cal-day";
        $link = "";
        $endlink = "";
        }
      if($rows > "0" AND $i == $current_day){
        $class = "cal-event-day";
        $link = "<a href=\"event.php?day=" . $i . "&month=" . $current_month . "\" class=\"callink\">";
        $endlink = "</a>";
      }
      elseif($rows > "0"){
        $class = "cal-event";
        $link = "<a href=\"event.php?day=" . $i . "&month=" . $current_month . "\" class=\"callink\">";
        $endlink = "</a>";
      }

      echo "<td align=\"center\" class=\"" . $class ."\">" . $link . "" . $i . "" . $endlink ."</td>";

        $x = $i+$dage;
        if(!is_float($x/7)){
            echo "</tr>\n<tr>";
        }
    }
?>
</tr>
<tr>
  <td colspan="7" align="center">
  <?php
  echo '<a href="'.$_SERVER['PHP_SELF'].'?md='.$mdprev.'&amp;year='.$yearprev.'"><< Forrige</a> | <a href="'.$_SERVER['PHP_SELF'].'?md='.$mdnext.'&amp;year='.$yearnext.'">Næste >></a>';
  ?>
  </td>
</tr>
</table>
</td>
</tr>
</table>

############## event.php
Her er filen der tilføjer i databasen

<?php

/******************/
//funktion til måned
/******************/
function maaned(){

echo "<select name=\"md\">";
  $dkmdr = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
  $mdnu = date("m"); //måned med 2 cifre f.eks 01 - 12
  $md = $mdnu; //sættes til næste måned
    for($j = 1; $j <= 9; $j++){
      $x = $j-1; //til brug for måneds array
      if($j == $md){
        echo"<option value=\"0".$j."\" Selected>$dkmdr[$x] ($j)</option>";
      }else{
        echo"<option value=\"0".$j."\">$dkmdr[$x] ($j)</option>";
      }
    }
    for($j = 10; $j <= 12; $j++){
      $x = $j-1; //til brug for måneds array
      if($j == $md){
          echo"<option value=\"$j\" Selected>$dkmdr[$x] ($j)</option>";
      }else{
          echo"<option value=\"$j\">$dkmdr[$x] ($j)</option>";
        }
    }
echo "</select>";

}

/******************/
//funktion til dag
/******************/
function dag(){

echo "<select name=\"dag\">"; //år loop - der er mulighed for at indtaste 1 gamle år
    $dd = date("n"); //dags dato
    for($i = 1; $i <= 31; $i++){
      if($i == $dd){
          echo"<option value=$i Selected>$i</option>";
      }else{
          echo"<option value=$i>$i</option>";
      }
    }
echo "</select>";

}

/******************/
//funktion til år
/******************/
function aar(){

echo "<select name=\"aar\">"; //år loop - der er mulighed for at indtaste 1 gamle år
  $aar = date("Y")-1; //årstal med 4 cife f.eks 2002
  $detteaar = date("Y");
    for($i = $aar; $i < ($aar+5); $i++){
      if($i == $detteaar){
          echo"<option value=$i Selected>$i</option>";
      }else{
          echo"<option value=$i>$i</option>";
      }
    }
echo "</select>";

}  //lin 60
?>

<div align="center">
Tilføj dato hvor lokalet er optaget:
<br><br>
<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">

Vælg Dag:&nbsp;

<?php
dag();
?>
&nbsp;

Vælg Måned:&nbsp;

<?php
maaned();
?>
&nbsp;
Vælg År:&nbsp;

<?php
aar();
?>

<br><br>
<input type="hidden" name="op" value="ds">
<input type="submit" name="submit" value="Indsæt i Database">
</form>
</div>

<?php

  include "config.php"; //lin 100

if($_POST['op'] == "ds"){

$md = $_POST['md'];
$dag = $_POST['dag'];
$aar = $_POST['aar'];

$tjek = mysql_query("SELECT * FROM event WHERE md = ".$md." AND aar = ".$aar." AND dag = ".$dag."") or die (mysql_error());
$antal = mysql_num_rows($tjek);
if($antal >=1){
    echo "<div align=\"center\"><h4>Der er allerede lavet en plan for: DATO: ".$dag.", MÅNED: <b>". $md ."</b>, ÅR: <b>". $aar."</b></h4></div>";
    exit;
}else{
    $sql = "INSERT INTO `event` (`id`, `dag`, `md`, `aar`) VALUES ('', '".$dag."', '".$md."', '".$aar."')";
    mysql_query($sql) or die (mysql_error());
    echo "<div align=\"center\">OK - Databasen blev opdateret med succes for: DATO: <b>".$dag."</b>, MÅNED: <b>". $md ."</b>, ÅR: <b>". $aar."</b></div>";
    exit;
}
}

############## Database struktur:
CREATE TABLE event (
  id int(11) NOT NULL auto_increment,
  dag int(2) NOT NULL default '0',
  md int(2) NOT NULL default '0',
  aar int(4) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

############## og til sidst style filen: style.css
A.callink:link
{
  color: red;
  text-decoration: none;
  background-color: inherit; 
}
A.callink:visited
{
  color: red;
  text-decoration: none;
  background-color: inherit; 
}
A.callink:hover
{
  color: darkred;
  text-decoration: none;
  background-color: inherit;
}
.cal
{
  width: 50px;
  height: 25px;
  border: 1px solid black;
  background-color: #EEEEEE;
  color: inherit;
}
.cal-event
{
  width: 50px;
  height: 25px;
  border: 1px solid black;
  background-color: #DDDDDD;
  color: red;
  font-weight: bold;
}
.cal-event-day
{
  width: 50px;
  height: 25px;
  border: 1px solid black;
  background-color: gray;
  color: red;
  font-weight: bold;
}
.cal-day
{
  width: 50px;
  height: 25px;
  border: 1px solid black;
  background-color: #666666;
  color: white;
  font-weight: bold;
}
Avatar billede ulle55 Nybegynder
02. juli 2003 - 14:53 #9
den siger noget med en config.php fil den ikke kan finde, er det mig der er helt dum, eller er den her ikke?
Avatar billede avminarm Juniormester
02. juli 2003 - 14:57 #10
min fejl - her er config.php:

//MySql settings
$mysql_host = "localhost"; // What is your host for MySQL?
$mysql_user = "bruger"; // What is your username?
$mysql_pass = "password"; // What is your password?
$mysql_db = "database"; // What is your Database name


mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_select_db($mysql_db);
Avatar billede ulle55 Nybegynder
02. juli 2003 - 15:55 #11
det jeg får ud af det er
http://cal.ulle.dk/kalender.php

men man kan ikke se at der er optaget den 2,7 og 8. juli 2003
Avatar billede avminarm Juniormester
02. juli 2003 - 21:22 #12
Prøv at ændre function maaned til:

function maaned(){

echo "<select name=\"md\">";
  $dkmdr = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
  $mdnu = date("m"); //måned med 2 cifre f.eks 01 - 12
  $md = $mdnu; //sættes til næste måned
    for($j = 1; $j <= 12; $j++){
      $x = $j-1; //til brug for måneds array
      if($j == $md){
        echo"<option value=\"".$j."\" Selected>$dkmdr[$x] ($j)</option>";
      }else{
        echo"<option value=\"".$j."\">$dkmdr[$x] ($j)</option>";
      }
    }
echo "</select>";

}
Avatar billede ulle55 Nybegynder
03. juli 2003 - 08:26 #13
Det er det samme. Ikke nogle amrkering med at der er optaget
Avatar billede avminarm Juniormester
03. juli 2003 - 11:54 #14
hejsa - der havde indsneget sig et par småfejl - jeg har lavet helt op selve kalender og event script, samt databasestrukturen - du kan finde det hele her:

http://wagners.users.whitehat.dk/kalender/
Avatar billede ulle55 Nybegynder
03. juli 2003 - 13:03 #15
Det er jo lavet lige efter mit hoved, tak skal du have. Hvis jeg kunne finde ud af hvordan man satte flere points på spørgsmålet, havde du fået det.
Avatar billede avminarm Juniormester
03. juli 2003 - 13:33 #16
det gør man under "funktioner" oppe til venstre - der er en der hedder "afsæt flere points" - så ved du det :o)
Avatar billede ulle55 Nybegynder
03. juli 2003 - 14:40 #17
Er det let at lave sådan et man kan booke over en længere periode?
Fra Dato til Dato
Avatar billede avminarm Juniormester
03. juli 2003 - 14:59 #18
hmmh - det kan da nok laves evt. så man kan booke x - antal dage frem
Avatar billede ulle55 Nybegynder
08. marts 2004 - 15:52 #19
Nu står jeg og skal bruge den funktion, hvor man kan booke x - antal dage frem, er der en der kan hjælpe med den???
Avatar billede avminarm Juniormester
09. marts 2004 - 21:21 #20
jeg har ikke lige tid pt, men opret et nyt sprg og henvis til dette
Avatar billede ulle55 Nybegynder
10. marts 2004 - 09:06 #21
Avatar billede ulle55 Nybegynder
30. marts 2005 - 12:43 #22
nu står jeg virkelig og mangler den funktion, har du evt tid til at hjælpe mig???
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester