Avatar billede 4us.dk Nybegynder
20. februar 2003 - 13:00 Der er 24 kommentarer og
2 løsninger

Lave en kalender tabel...

Hejsa,

Jeg har tegnet et lille billede:
http://www.fritidshaver.dk/kalender.jpg

Jeg skal have lavet en tabel, men ved ikke helt hvordan jeg skal sætte den op. Jeg kan lige fortælle hvad den skal kunne.

Tabellen skal indeholde:

- De dage man vælger (og om det er morgen,middag,aften)

- Den skal kunne vise 'dynamisk' en uge frem... altså hvis det er onsdag, står der: On, To, Fr, Lø, Sø, Ma, Ti og hvis det er Torsdag står der: To, Fr, Lø, Sø, Ma, Ti, On.

og den skal slette de indtastede oplysninger ældre end dags dato... hvis der står Onsdag d. 23/5-02 skal den slettes, da den dato er over 1 dag fra dags dato.

Hvis der er spørgsmål, så stil dem endelig.

På forhånd tak.
Avatar billede fn1977 Nybegynder
20. februar 2003 - 17:35 #1
har ikke helt forstået om det er opsætningen af selve tabellen. i en form du ønsker eller om det er det script i php der laver tabelen med de værdier du ønsker
Avatar billede 4us.dk Nybegynder
20. februar 2003 - 19:12 #2
Jeg har fået lavet det med tabellen. Det jeg så skal bruge nu, er på en eller anden måde hvordan man får vist mine 7 dage frem, en uge af gangen...

det jeg mente med "dynamisk" en uge...

Altså vise dagen idag, plus 6 dage frem, skal vises... jeg har 7 dage i databasen... den skal tage den dag i databasen som det er idag, og vise de andre 6 bagefter i den rigtige rækkefølge.

hvis det var lidt bedre forklaret? det er ret svært at forklare...
Avatar billede fn1977 Nybegynder
20. februar 2003 - 20:57 #3
Måske det her kan hjælpe dig på vej.

-----
<?
//number of day wanted i table
$days_to_view = "7";

//creating the days
for ($i = 0; $i < $days_to_view; $i++)
{
$day  = mktime (0,0,0,date("m")  ,date("d")+$i,date("Y"));
echo date(j, $day) . ' ' . date(m, $day) . '<br>';
}
?>

-----
Avatar billede 4us.dk Nybegynder
21. februar 2003 - 00:21 #4
Det er ikke lige det... men jeg vender lige tilbage i morgen engang.
Avatar billede fn1977 Nybegynder
21. februar 2003 - 11:38 #5
jeg har lavet et table der ligner lidt i php som tager højde for ugedag då den sætter dem ind det rigtige sted... så skal knapperne bare ind i stedet for dato..

vender tilbage i aften.
Avatar billede fn1977 Nybegynder
21. februar 2003 - 11:38 #6
då = så
Avatar billede 4us.dk Nybegynder
21. februar 2003 - 16:16 #7
Det jeg har nu, er:

CREATE TABLE tidsplan (
  id int(11) NOT NULL auto_increment,
  medarbejderid int(11) NOT NULL default '0',
  man0715 varchar(5) NOT NULL default '',
  tir0715 varchar(5) NOT NULL default '',
  ons0715 varchar(5) NOT NULL default '',
  tor0715 varchar(5) NOT NULL default '',
  fre0715 varchar(5) NOT NULL default '',
  lor0715 varchar(5) NOT NULL default '',
  son0715 varchar(5) NOT NULL default '',
  man1523 varchar(5) NOT NULL default '',
  tir1523 varchar(5) NOT NULL default '',
  ons1523 varchar(5) NOT NULL default '',
  tor1523 varchar(5) NOT NULL default '',
  fre1523 varchar(5) NOT NULL default '',
  lor1523 varchar(5) NOT NULL default '',
  son1523 varchar(5) NOT NULL default '',
  man2307 varchar(5) NOT NULL default '',
  tir2307 varchar(5) NOT NULL default '',
  ons2307 varchar(5) NOT NULL default '',
  tor2307 varchar(5) NOT NULL default '',
  fre2307 varchar(5) NOT NULL default '',
  lor2307 varchar(5) NOT NULL default '',
  son2307 varchar(5) NOT NULL default '',
  oprettet bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;


Altså jeg har et felt for "mandag kl 07-15" og "mandag kl 15-23" og "mandag kl 23-07"

Den virker som sådan fint nok.. med at tilføje dage... men den skal vise dem i den rigtige rækkefølge...

Hvis vi tager udgangspunkt i dagen idag "fredag" så skal den tabel vise:

--> fredag, lørdag, søndag, mandag, tirsdag, onsdag, torsdag <--

og hvis det var lørdag, så skal den vise:

--> lørdag, søndag, mandag, tirsdag, onsdag, torsdag, fredag <--


Håber det kan afklare lidt mere...
Avatar billede nicklasb Nybegynder
21. februar 2003 - 16:32 #8
hvad er det du ikke helt kan finde ud af?? Kan ikke lige forstå det.. Er det om hvordan du putter det ind i databasen?? eller er det om hvordan du printer datoerne ud??

jeg har lavet et lille eksempel : http://www.bornstein.dk/afkryds.php

Når du så submitter har jeg sat den til at tjekke på dags dato kl 23-07.. Så er det vel bare at putte den variabel ind i databasen.. :)
Avatar billede nicklasb Nybegynder
21. februar 2003 - 16:55 #9
nåå.. tror jeg forstår nu.. Du har en database med en masse medarbejdere i.. Og du vil så gerne printe ud i et skrema og der står 1 eller 0 ud fra de forskellige dage og tider?? altså så de kan se hvornår de skal arbejde eller ligende??

Og så vil du gerne have at den sortere efter hvilken dag det er, så den kommer først??

for så kan du vel godt bruge den jeg har lavet der..
så skal du bare sætte en cheked på dem der fx har et 1 -tal i databasen.. Men hvorfor checkboxe?? Skal du kunne rette i den bag efter eller hvad??

og hvad er det du skal have hjælp til?? Er det bare at få listet en kalender på et n antal dage hvor idag er først? eller er det databasen du ikke kan finde ud af??

og hvad står der i fx son2307 varchar(5) NOT NULL default '', siden den er varchar??
Avatar billede 4us.dk Nybegynder
21. februar 2003 - 17:26 #10
Ja, jeg har et system nu, med:

Mandag, tirsdag, onsdag, torsdag, fredag, lørdag, søndag... hvor man kan krydse nogle checkboxe af, og den gemmer dem og udskriver dem og det hele...

Det ENESTE jeg mangler, er faktisk at den skal tage felterne og vise dem i en bestemt rækkefølge... kommer an på hvilken dag det er...

Jeg har det med at man kan gemme og rette osv. og har lavet databasen... det er bare selve den bestemte kode...

Et eksempel på "son2307" er:
2307 den indeholder.... (bare et eller andet indhold, som fortæller at den er krydset af...)
Avatar billede 4us.dk Nybegynder
21. februar 2003 - 17:28 #11
Jeg kan godt vise den pågældende side... men det er kun ved kontakt via email eks.. da siden ikke er offficel endnu, og det er i administrations systemet...
Avatar billede nicklasb Nybegynder
21. februar 2003 - 17:48 #12
ok.. hvis jeg var dig havde jeg så nok lavet det om til int.. Og så tjekket på 1 og 2.. Altså nej kunne være 2 og ja kunne være 1.. Men nok om det..

hvis det bare er at printe dem ud kan det gøres således:

<?php
function DagensNavn($dag_navn)
    {
    if ($dag_navn == "Mon") { return "Ma"; }
    elseif ($dag_navn == "Tue") { return "Ti"; }
    elseif ($dag_navn == "Wed") { return "On"; }
    elseif ($dag_navn == "Thu") { return "To"; }
    elseif ($dag_navn == "Fri") { return "Fr"; }
    elseif ($dag_navn == "Sat") { return "Lø"; }
    elseif ($dag_navn == "Sun") { return "Sø"; }
    else {return $dag_navn; }
}

$oenskede_dage = 7;

for($a=0; $a<$oenskede_dage; $a++) {
$datoer[$a] = date("Ymd", time()+(60*60*24*$a));
$dage[$a] = DagensNavn(date("D", time()+(60*60*24*$a)));
}

echo "
<form action=\"$PHP_SELF\" method=\"post\" name=\"afkryds\">
<table>
<tr>
  <td>&shy;</td>
";

for($a=0; $a<$oenskede_dage; $a++) {
echo "  <td>&nbsp;$dage[$a]</td>
";
}
echo " </tr>
<tr>
  <td>07-15</td>
";

for($a=0; $a<$oenskede_dage; $a++) {
echo "  <td><input type=\"checkbox\" value=\"yes\" name=\"var$datoer[$a]_1\"></td>
";
}
echo " </tr>
<tr>
  <td>15-23</td>
";

for($a=0; $a<$oenskede_dage; $a++) {
echo "  <td><input type=\"checkbox\" value=\"yes\" name=\"var$datoer[$a]_2\"></td>
";
}
echo " </tr>
<tr>
  <td>23-07</td>
";

for($a=0; $a<$oenskede_dage; $a++) {
echo "  <td><input type=\"checkbox\" value=\"yes\" name=\"var$datoer[$a]_3\"></td>
";
}
echo " </tr>
</table>
<input type=\"submit\" value=\"Send formen\" name=\"submit\">
</form>
";
?>

så bliver chekboxene så selv generet ud fra datoen + et nummer alt efter hvilket tidspunkt det er...
men den tager den så datoen kommer først..

Hvis jeg skal hjælpe med at få den til at udskrive krydserne deri bliver du nok nød til at fortælle lidt nærmere om hvad den skal gøre når man fx submitter.. osv..

men håber det hjalp lidt :)
Avatar billede fn1977 Nybegynder
21. februar 2003 - 19:00 #13
Lavet et scrip der køre efter dagen i dag.. lister dagen i dag i første celle i øverste række og sluter med sidste dag i den uge hvis man kan sige det. der efter laver den det antal checkboxe du har ønsket f.eks 20 dage. så tager det højde for om der er månedskift/årsskift og laver dato i krydfeltet ud fra det... scriptet her under er datoen som er value i checkboxen også skrevet ved siden af dato format dd/mm-yyyy.

------------------------------------------------

<html>

<body>
<?
//number of day wanted in table
$days_to_view = "20";
$danish_days = @ array (Søndag, Mandag, Tirsdag, Onsdag, Torsdag, Fredag, Lørdag);

//creating the days
?>

<form>
<table bgcolor="blue" border="1">

<?
// Laver kalender

// laver felter for dage fra d.d.
for ($i = 0; $i < $days_to_view; $i++)
{
$day  = mktime (0,0,0,date("m")  ,date("d")+$i,date("Y"));
$day_of_week = date(w, $day);

// er dette den første række i table
  if ($i == 0)
  {
    echo '<tr>';

    //Lav overskrift
    $hd = $day_of_week;

    //kør 7 gagne for en uge
    for ($nod = 0; $nod <= 6; $nod++)
    {
    echo '<th>' . $danish_days[$hd];

      //er det søndag skift til mandag ellers tæl en op
      if ($hd == 6)
      {
      $hd = 0;
      } else {
      $hd++ ;
      }
    }
  echo '<tr>';
  }

  //skift linje når vi når 7 dage
  if ($i3 == 7)
  {
  echo '<tr>';
  $i3 = 1;
  } else {
  $i3++;
  }

// laver felter i celler
  echo "<td><input type=\"checkbox\" value=\" " . date(j, $day) . '/' . date(m, $day) . '-' . date(Y, $day) . '">' . date(j, $day) . '/' . date(m, $day) . '-' . date(Y, $day);
}
?>

</table>
<input type="submit"> knap til test
</form>
</body>

</html>
Avatar billede 4us.dk Nybegynder
21. februar 2003 - 19:17 #14
Ja, det ser ud af sådan noget slags som jeg kan bruge... er det muligt i kan integrere det i min lille kode (kan ikke helt hitte ud af det :)

<?php
$henttidsplan = mysql_query("SELECT * FROM tidsplan WHERE medarbejderid = '$valgtemedarbejder'");
$utid = mysql_fetch_array($henttidsplan);
?>
<table cellpadding="0" cellspacing="0" border="0" height="80" width="300" style="padding: 1px;" align="center" valign="top">
    <tr>
        <td>
            &nbsp;
        </td>
        <td>
            <b>Ma</b>
        </td>
        <td>
            <b>Ti</b>
        </td>
        <td>
            <b>On</b>
        </td>
        <td>
            <b>To</b>
        </td>
        <td>
            <b>Fr</b>
        </td>
        <td>
            <b>Lø</b>
        </td>
        <td>
            <b>Sø</b>
        </td>
    </tr>
    <tr>
        <td align="center">
            <b>07-15</b>
        </td>
        <td>
            <input type="checkbox" name="man0715" value="<?=$tiden?>"<? if (!empty($utid[man0715])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="tir0715" value="<?=$tiden?>"<? if (!empty($utid[tir0715])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="ons0715" value="<?=$tiden?>"<? if (!empty($utid[ons0715])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="tor0715" value="<?=$tiden?>"<? if (!empty($utid[tor0715])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="fre0715" value="<?=$tiden?>"<? if (!empty($utid[fre0715])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="lor0715" value="<?=$tiden?>"<? if (!empty($utid[lor0715])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="son0715" value="<?=$tiden?>"<? if (!empty($utid[son0715])) { print " checked"; }?>>
        </td>
    </tr>
    <tr>
        <td align="center">
            <b>15-23</b>
        </td>
        <td>
            <input type="checkbox" name="man1523" value="<?=$tiden?>"<? if (!empty($utid[man1523])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="tir1523" value="<?=$tiden?>3"<? if (!empty($utid[tir1523])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="ons1523" value="<?=$tiden?>"<? if (!empty($utid[ons1523])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="tor1523" value="<?=$tiden?>"<? if (!empty($utid[tor1523])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="fre1523" value="<?=$tiden?>"<? if (!empty($utid[fre1523])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="lor1523" value="<?=$tiden?>"<? if (!empty($utid[lor1523])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="son1523" value="<?=$tiden?>"<? if (!empty($utid[son1523])) { print " checked"; }?>>
        </td>
    </tr>
    <tr>
        <td align="center">
            <b>23-07</b>
        </td>
        <td>
            <input type="checkbox" name="man2307" value="<?=$tiden?>"<? if (!empty($utid[man2307])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="tir2307" value="<?=$tiden?>"<? if (!empty($utid[tir2307])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="ons2307" value="<?=$tiden?>"<? if (!empty($utid[ons2307])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="tor2307" value="<?=$tiden?>"<? if (!empty($utid[tor2307])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="fre2307" value="<?=$tiden?>"<? if (!empty($utid[fre2307])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="lor2307" value="<?=$tiden?>"<? if (!empty($utid[lor2307])) { print " checked"; }?>>
        </td>
        <td>
            <input type="checkbox" name="son2307" value="<?=$tiden?>"<? if (!empty($utid[son2307])) { print " checked"; }?>>
        </td>
    </tr>
</table>
Avatar billede 4us.dk Nybegynder
21. februar 2003 - 19:18 #15
Den ser måske lidt mærkelig ud, hvis I lige tager den i notesblok eller lign. er det lidt mere overskuelig :)
Avatar billede fn1977 Nybegynder
21. februar 2003 - 23:36 #16
jeg kan ikke finde ud af hvad din $tiden er så jeg har sat value til  $tiden og lavet table til at skrive som du ønsker under name i checkbox og så sat feltet $ tiden ind i stedet for dato

--------------------
<html>

<body>
<?
//number of day wanted in table
$days_to_view = "21";
$danish_days = @ array (Sø, Ma, Ti, On, To, Fr, Lø);
$db_days = @ array (son, man, tir, ons, tor, fre, lor);

//creating the days
?>

<form action="calender.php" method="post" name="dagtid">
<table bgcolor="blue" border="1">

<?
// Laver kalender

// laver felter for dage fra d.d.
for ($i = 0; $i < $days_to_view; $i++)
{
$day  = mktime (0,0,0,date("m")  ,date("d")+$i,date("Y"));
$day_of_week = date(w, $day);

// er dette den første række i table
  if ($i == 0)
  {
    echo '<tr><td>';

    //Lav overskrift
    $hd = $day_of_week;

    //kør 7 gagne for en uge
    for ($nod = 0; $nod <= 6; $nod++)
    {
      echo '<th>' . $danish_days[$hd];

      //er det søndag skift til mandag ellers tæl en op
        if ($hd == 6)
        {
          $hd = 0;
        } else {
          $hd++ ;
        }
    }
    echo '<tr><td>07-15';
    $row="0715";
}

//skift linje når vi når 7 dage
if ($i3 == 7)
{
  if ($i4 == 1)
  {
  {
  echo '<tr><td>23-07';
  $row="2307";
  }
  else
  {
  echo '<tr><td>15-23';
  $row="1523";
  $i4++;
  }
$i3 = 1;
} else {
$i3++;
}

// laver felter i celler
echo "<td><input type=\"checkbox\" name=\"" . $db_days[$day_of_week] . $row . "\" value=\" . $tiden . '">';
}
?>

</table>
<input type="submit"> knap til test
</form>
</body>

</html>
                                                                                                    -------------------------------------
Avatar billede fn1977 Nybegynder
21. februar 2003 - 23:49 #17
hov jeg glemte lige at smide dit if statement ind så boksene er tjekket... hvis de står i brugerens database :( og så fik jeg heller ikke det med datbase med ind... men jeg håber jeg fik givet dig det vigtigste :)
Avatar billede 4us.dk Nybegynder
22. februar 2003 - 23:06 #18
Tja... det med databasen kunne jeg nok godt liige bruge :) men ok :)

Og så for resten... så virker scriptet ikke... kan ikke din fejl...

Parse error: parse error, unexpected T_ELSE in line 48

------------------------
  if ($i4 == 1)
  {
  {
  echo '<tr><td>23-07';
  $row="2307";
  } else {    // Linje 48
  echo '<tr><td>15-23';
  $row="1523";
  $i4++;
  }
--------------------
Avatar billede nicklasb Nybegynder
22. februar 2003 - 23:10 #19
if ($i4 == 1)
  {
  echo '<tr><td>23-07';
  $row="2307";
  } else {    // Linje 48
  echo '<tr><td>15-23';
  $row="1523";
  $i4++;
  }
Avatar billede 4us.dk Nybegynder
23. februar 2003 - 00:02 #20
Fejl i linje:

echo "<td><input type=\"checkbox\" name=\"" . $db_days[$day_of_week] . $row . "\" value=\" . $tiden . "\">";
Avatar billede 4us.dk Nybegynder
23. februar 2003 - 00:03 #21
Fejl-navn:
Warning: Unexpected character in input: '\' (ASCII=92) state=1
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';'

I den linje jeg lige postede før...
Avatar billede 4us.dk Nybegynder
24. februar 2003 - 21:42 #22
nicklasb: er du der stadig? :)
Avatar billede nicklasb Nybegynder
24. februar 2003 - 21:59 #23
joo.. alt tid.. :) .. men det er ikke mig der har lavet koden.. tror det ville være lettere hvis det var ham selv der rettede den.. men ok..

echo "<td><input type=\"checkbox\" name=\"" . $db_days[$day_of_week] . $row . "\" value=\"" . $tiden . "\">";

håber den virker ;)
Avatar billede 4us.dk Nybegynder
25. februar 2003 - 02:47 #24
nicklasb: takker.

fn1977: indtil videre ser den ud til at virke, men html koderne er ret sjove.. du afslutter ingen <td> eller <tr>.. :-/

Men får det lige testet af
Avatar billede 4us.dk Nybegynder
25. februar 2003 - 03:14 #25
det jeg lige prøver at finde på nu, er hvordan man får nogle af felterne til "checked" hvis der er indhold i...

kommer tilbage igen i morgen... :)
Avatar billede 4us.dk Nybegynder
25. februar 2003 - 03:21 #26
Hey, har fået det til at virke, takker :)

Har kun et problem nu, ang. det kalender fidus, og den kræver nok sit eget spm. :)

Takker for hjælpen.
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