Avatar billede diablo925 Nybegynder
11. november 2009 - 10:04 Der er 8 kommentarer og
1 løsning

kalender script

hej kloge hoveder ;D

jeg har fundet et kalender script som jeg har modet lidt

men det vil ikke som jeg vil

man skal nemlig indtaste hvornår man gå på ferie og kommer hjem igen

og så skal den så skrive ude for den given dag
ens navn
og ved den dato man kommer hjem skal den også skrive ens navn

har lavet en mysql hvor den gemmer dato i et DATE felt

mit mysql
$query = mysql_query("SELECT user FROM calendar WHERE startdate = '$year-$month-$day_num'") or die(mysql_error());
while($row = mysql_fetch_array($query))
    {   
    $user = $row["user"];
    }

siden side her http://intern.oticket.dk/beta/intern/calendar/test.php

vil gode give en lille sum (100-200) kr for at få det til at virke

skriv lige hvis i vil have hele siden
Avatar billede repox Seniormester
11. november 2009 - 10:21 #1
Umiddelbart kan man ikke - ud fra kildekoden som du har indsat her - se hvorfor scriptet ikke vil som du vil.
Det der er relevant er hvordan du skriver kalenderen ud og hvordan du henter oplysningerne for hver af datoerne, når du henter brugeren ud (selvom jeg godt kan regne ud at sidstnævnte er den snippet du har indsat her).

Det ville også være rart at se din struktur af tabellen calendar samt et par af de entries du har i tabellen.
Avatar billede diablo925 Nybegynder
11. november 2009 - 11:49 #2
id      int(11)
user      varchar(255)
text      text
enddate      date
startdate      date


id     user       text     enddate     startdate
11     diablo925             2009-11-27     2009-11-11
Avatar billede repox Seniormester
11. november 2009 - 11:52 #3
Jeg vil gerne se hvordan du laver din kalender.
11. november 2009 - 13:56 #4
diablo925, afholder du en gaette konkurrence eller har du et problem som du haaber paa en loesning paa? 

Hvis du har et problem saa ville det foroege chancen for et svar hvis du foerst forklarede hvad problemet er.  Hvad precies er det du vil opnaa og hvad sker der i stedet?

(1) Vil du have en kalender for medarbejder (eller bare dig selv) der viser dit navn for startdagen og slutdagen for ferie og intet for de mellemliggende dage?  Og faar du saa i stedet en kalender hvor dit navn vises for hver dag i ferieperioden?

(2) Eller vil du have en kalender hvor du opgiver startdato og slutdato og saa skal dit navn staa for hver dag i ferieperioden?  Og faar du saa i stedet en kalender der viser en forkert ferieperiode?  (Dit tabel eksempel viser ferie fra 11 til 27 november men kalenderen paa dit link fra 11 november og til slutningen af maaneden.)

(3)  Skal kalenderen bruges af adskillige mennesker og skal feltet for en dato saa liste alle navnene hvis der er flere paa ferie ad gangen?

Saa maa du forklare hvad du har gjort saa der er en chance for at finde hvad der skal aendres.  Din sql query tyder paa at du vil have dit navn paa kalenderen for hele ferieperioden, det vil sige hvis din query kaldes i en loekke for hver dag i kalenderperioden.  Det link du viser er for en udfyldt kalenderside.  Hvor er saa koden der udfylder og viser kalendersiden?

Og variablerne i din query hvor kommer de fra?

Endvidere, hvor er koden for hvordan du fylder dine datoer i databasen?

Kom frem med noejagtigt hvad problemet er (hvad du vil og hvad du faar) og hele koden, saa er der en chance at en loesning kan blive fundet.
Avatar billede diablo925 Nybegynder
11. november 2009 - 14:06 #5
Christian_Belgien sorry for at jeg har svært ved at udtrykke mig sprogliget da jeg er ordblind

pt indtater jeg bare selv info ind i min database

og den skal bruges som du skriver i (1) til mit team

<?php
//This gets today's date
$date = time () ;

//This puts the day, month, and year in seperate variables
$day = date('d', $date) ;
$month1 = date('m', $date) ;
$year1 = date('Y', $date) ;
if($_GET["m"]) {
$month = $_GET["m"];
$year = $_GET["y"];
} else {
$month = date('m', $date) ;
$year = date('Y', $date) ;
}
//Here we generate the first day of the month
$first_day = mktime(0,0,0,$month, 1, $year) ;

//This gets us the month name
$title = date('F', $first_day) ;

//Here we find out what day of the week the first day of the month falls on
$day_of_week = date('D', $first_day) ;

//Once we know what day of the week it falls on, we know how many blank days occure before it. If the first day of the week is a Sunday then it would be zero
switch($day_of_week){
case "Sun": $blank = 0; break;
case "Mon": $blank = 1; break;
case "Tue": $blank = 2; break;
case "Wed": $blank = 3; break;
case "Thu": $blank = 4; break;
case "Fri": $blank = 5; break;
case "Sat": $blank = 6; break;
}

//We then determine how many days are in the current month
$days_in_month = cal_days_in_month(0, $month, $year) ;

// change month
if($month == 12){
    $next_month = 1;
    $next_year  = $year + 1;
}else{
    $next_month = $month + 1;
    $next_year  = $year;
}

if($month == 1){
    $prev_month = 12;
    $prev_year  = $year - 1;
}else{
    $prev_month = $month - 1;
    $prev_year  = $year;
}

//Here we start building the table heads
echo "<table border=1 width=100%>";
echo "<tr><th colspan=7> <center><a href=\"test.php?&m=$prev_month&&y=$prev_year\"><<</a> $title $year <a href=\"test.php?m=$next_month&&y=$next_year\">>></a></center></th></tr>";
echo "<tr><td width=60>$LANG_CALENDER_son</td><td width=60>$LANG_CALENDER_man</td><td width=60>$LANG_CALENDER_tir</td><td width=60>$LANG_CALENDER_ons</td><td width=60>$LANG_CALENDER_tor</td><td width=60>$LANG_CALENDER_fre</td><td width=60>$LANG_CALENDER_lor</td></tr>";

//This counts the days in the week, up to 7
$day_count = 1;

echo "<tr>";
//first we take care of those blank days
while ( $blank > 0 )
{
echo "<td></td>";
$blank = $blank-1;
$day_count++;
}
//sets the first day of the month to 1
$day_num = 1;

//count up the days, untill we've done all of them in the month
while ( $day_num <= $days_in_month )
{
    $query = mysql_query("SELECT user FROM calendar WHERE startdate = '$year-$month-$day_num'") or die(mysql_error());
while($row = mysql_fetch_array($query))
    {   
    $user = $row["user"];
    }   
echo"<td valign=top><a href=\"index.php?page=new&&funk=add&&dnew=$day_num&&mnew=$month&&ynew=$year\">$day_num</a><br />
$user</td>";
$day_num++;
$day_count++;
//Make sure we start a new row every week
if ($day_count > 7)
{
echo "</tr> <tr>";
$day_count = 1;
}
}
//Finaly we finish out the table with some blank details if needed
while ( $day_count >1 && $day_count <=7 )
{
echo "<td></td>";
$day_count++;
}

echo "</tr></table>";
?>
Avatar billede repox Seniormester
11. november 2009 - 14:44 #6
Prøv at skifte dette ud:


$query = mysql_query("SELECT user FROM calendar WHERE startdate = '$year-$month-$day_num'") or die(mysql_error());
while($row = mysql_fetch_array($query))
    { 
    $user = $row["user"];
    } 
echo"<td valign=top><a href=\"index.php?page=new&&funk=add&&dnew=$day_num&&mnew=$month&&ynew=$year\">$day_num</a><br />
$user</td>";



med dette:




echo"<td valign=top><a href=\"index.php?page=new&&funk=add&&dnew=$day_num&&mnew=$month&&ynew=$year\">$day_num</a><br />";

$query = mysql_query("SELECT user FROM calendar WHERE startdate = '$year-$month-$day_num'") or die(mysql_error());
while($row = mysql_fetch_assoc($query))
  echo $row["user"]."<br />";

echo "</td>";

Avatar billede diablo925 Nybegynder
11. november 2009 - 16:18 #7
det virker smid et svar og mange mange tak
11. november 2009 - 17:16 #8
Repox var hurtigst til at finde grunden til at brugernavnet blev repetered for resten af maaneden: $user faar i den gamle kode en vaerdi som den beholder for resten af maaneden med mendre der er en anden user der gaar paa ferie senere i maaneden.  Ved at aendre raekkefoelgen har han loest det.

Jeg er i gang med at laere mig selv php/mysql/css m.m. og jeg har funded det en saerdeles nyttig oevelse at proeve finde svarene til de spoergsmaal der kommer her paa eksperten, normalt ved hjaelp af meget Google og proeven sig frem.  Jeg observerer at diablo i sit oprindelige spoergsmaal ville se startdag og enddag for ferie for de forskellige users.  Jeg har derfor arbejdet videre, genbrugt repox's kode, tilfoejet en query for enddate, og tilfoejet "start" og "end".  Det bliver til nedenstaaende kode.

Jeg lavede en lille hjemmeside til at teste det med, http://christianjorgensen.be/diablo925.php, som du er velkommen til at besoege (og som beviser at repox's kode virker,) og en lille tabel med det foelgende indhold:

id  user  text  enddate  startdate 
      1 user1 text1 2009-11-10 2009-11-01
      2 user2 text2 2009-11-20 2009-11-01
      3 user3 text3 2009-11-11 2009-11-10
      4 user4 text4 2009-11-30 2009-11-12
      5 user5 text5 2009-11-30 2009-11-05
      6 user6 text6 2009-11-29 2009-11-06

Jeg har saaledes soerget for at paa adskillige dage er der mere end en bruger.

Her er saa koden:

while ( $day_num <= $days_in_month )
  {
    echo"<td valign=top><a href=\"index.php?page=new&&funk=add&&dnew=$day_num&&mnew=$month&&ynew=$year\">$day_num</a><br />";
    $query = mysql_query("SELECT user FROM calendar WHERE startdate = '$year-$month-$day_num'") or die(mysql_error());
    while($row = mysql_fetch_assoc($query))  echo $row["user"]." start<br />";
    $query = mysql_query("SELECT user FROM calendar WHERE enddate = '$year-$month-$day_num'") or die(mysql_error());
    while($row = mysql_fetch_assoc($query))  echo $row["user"]." end<br />";

    while($row = mysql_fetch_array($query)) echo $row["user"] . " end<br/>";
    echo "</td>";
    $day_num++;
    $day_count++;
    //Make sure we start a new row every week
    if ($day_count > 7)
    {
      echo "</tr> <tr>";
      $day_count = 1;
    }
  }
Avatar billede repox Seniormester
11. november 2009 - 17:28 #9
Du fik et svar her
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