Avatar billede akki Nybegynder
02. april 2003 - 14:50 Der er 1 kommentar

hjælp til dette script

Hey..

Jeg har fået dette kalender script.
Nu har jeg så 2 store problemer.. som jeg håber at nogen herinde kan hjælpe mig med.

det ene er, at jeg meget gerne ville havde at hvis der stod noget på en given dato, skulle det felt havde en anden farve.

nr. 2, er at lige nu kan skal man trykke på en given dag for at tilføje noget.. jeg ville gerne havde det sådan at man kunne vælge en dag, også havde mulighed for at sige at " begivenheden" slutter en helt anden dag....

det er 2 måske ret svære problemer ( især nok den sidste) men jeg håber at nogen kan hjælpe mig.

vil lige tilføje, at scriptet ikke bruger nogle database, men en tekstfil...

-------kalender.php------


<?

//  ************** User settings **************

// Brugernavn og password til siden
      $user = "***";
      $pass = "****";
// Fil, hvori beskederne ligger
      $filnavn = "kalenderbeskeder.txt";

// Formatering af tabellen (kræver lidt HTML kendskab, men hvis du læser det her, kender du det sikkert...)
// ... Gå ned til funktionerne LayoutWeekend og LayoutWorkday, og ændr lidt html strengene, så er du på vej


unset($task);
if(($username == $user) && ($password == $pass))
{
    if($action == "TypedLogin") { $task = "ChooseDayToEdit"; }
    elseif($action == "HaveChosenDayToEdit") { $task = "EditDay"; }
    elseif($action == "HaveEditedMessage") { $task = "SaveMessage"; }
    else { $task = "DontKnowWhatToDo"; }

}
else
{
    if($action == "AttemptingToLogin") { $task = "ShowLogin"; }
    if($action == "TypedLogin") { $task = "ShowLoginWithError"; }
}

echo "<form method=post>";


//Henter kalenderbeskeder til buffer
$fd = @fopen ("$filnavn", "r");
while (!feof ($fd)) {
    $buffer[] = fgets($fd, 4096);
}
fclose ($fd);


// Variable som anviser nuværende dato
$date = getdate();
$CurrentDate = $date['mday'];
$CurrentMonth = $date['mon'];
$CurrentYear = $date['year'];

// Variable som anviser den viste måned, m.m.
if(!(isset($month))) $month = $date['mon'];
if ($month == 0)
{    $month = 12;
    $year--;}
if ($month == 13)
{    $month = 1;
    $year++;}
if(!(isset($year))) $year = $CurrentYear;


// Funktion til at oversætte engelsk til dansk
function Translate($weekday)
{
    switch ($weekday) {
    case 'Monday':         return "Mandag";
    case 'Tuesday':     return "Tirsdag";
    case 'Wednesday':    return "Onsdag";
    case 'Thursday':     return "Torsdag";
    case 'Friday':         return "Fredag";
    case 'Saturday':    return "Lørdag";
    case 'Sunday':        return "Søndag";

    case 'January':        return "Januar";
    case 'February';    return "Februar";
    case 'March';        return "Marts";
    case 'April';        return "April";
    case 'May';            return "Maj";
    case 'June';        return "Juni";
    case 'July';        return "Juli";
    case 'August';        return "August";
    case 'September';    return "September";
    case 'October';        return "Oktober";
    case 'November';    return "November";
    case 'December';    return "December";
        }
}

// Skal her gemme til filen, hvis der er ændringer
if (($user == $username) && ($pass == $password) && ($task=="SaveMessage"))
{
    // Erstatter linjeskift med <br> i Message
    $Message = ereg_replace("\n",'<br>',$Message);

    //Tjecker om der er noget i bufferen i forvejen, og hvilken plads dagen ligger på
    if(sizeof($buffer) > 0)
    {

        for($i=0 ; $i < sizeof($buffer) ; $i++)
            if(ereg($ChosenDay,$buffer[$i]))
                { $PlaceInBuffer = $i; }
    }


    // Lægger den nye besked over i buffer
    if (strlen($Message) > 0)
        if (strlen($PlaceInBuffer) > 0)
            $buffer[$PlaceInBuffer] = $ChosenDay."|".$Message."\n"; // Hvis der ovenfor ikke findes en plads, vil PlaceInBuffer være tom,
        else                                                        // og Message vil blive lagt ind i en ny plads i buffer.
            $buffer[] = $ChosenDay."|".$Message."\n";
    elseif(strlen($PlaceInBuffer) > 0)

        $buffer[$PlaceInBuffer] = ''; // Sletter pladsen, hvis der ikke er en besked


    // Gemmer filen
    $fp = fopen("$filnavn", "w");
    for ($a=0; $a < sizeof($buffer); $a++) {
        if(strlen($buffer[$a] > 0))
              fwrite($fp, $buffer[$a]);
    }
    fclose($fp);
}


function CheckForMessage($Date)
{
global $buffer, $month, $year;
$Date = $Date."/".$month."-".$year;
    if(sizeof($buffer) > 0)
    {
        //Splitter datoer fra beskeder
        for($i=0 ; $i < sizeof($buffer) ; $i++)
        {
            $temp = explode('|',$buffer[$i]);
            $DateArray[] = $temp[0];
            $MessageArray[] = $temp[1];
        }

        for($i=0 ; $i < sizeof($buffer) ; $i++)
        {
            if((ereg($Date,$DateArray[$i])) && (strlen($Date) == strlen($DateArray[$i])))
                {
                    return $MessageArray[$i];
                    break;
                }
        }
    }
    else
        return "";
}

// Funktion hvori layoutet til ugedagene ligger
function LayoutWeekday($date,$weekday)
{
    global $CurrentDate, $CurrentMonth, $CurrentYear, $month, $year;
    global $password, $pass, $username, $user, $task;

    // Hvis brugeren skal redigere
    if (($user == $username) && ($pass == $password) && ($task=="ChooseDayToEdit"))
        $editbutton = "<input type=submit name=ChosenDay value=".$date."/".$month."-".$year.">";

    if((isset($date)) && (strlen($date) > 0) && (isset($weekday)) && (strlen($weekday) > 0)) // En dag i kalenderen
    {
        if(($CurrentDate == $date) && ($CurrentMonth == $month) && ($CurrentYear == $year))
            echo "<center><td width=120 height=80 align=left valign=top  bgcolor=#ff9999><font face=Verdana size=2>".$date." - ".Translate($weekday).$editbutton."<br>".CheckForMessage($date)."</td>\n";
        else
            echo "<center><td width=120 height=80 align=left valign=top bgcolor=#aaaaaa><font face=Verdana size=2>".$date." - ".Translate($weekday).$editbutton."<br>".CheckForMessage($date)."</td>\n";
    }
    else // Uden for kalenderen
        echo "<center><td width=120 height=80 align=center valign=top bgcolor=#aaaaaa>&nbsp;</td>\n";
}

// Funktion hvori layoutet til weekenden ligger
function LayoutWorkday($date,$weekday)
{
    global $CurrentDate, $CurrentMonth, $CurrentYear, $month, $year;
    global $password, $pass, $username, $user, $task;

    // Hvis brugeren skal redigere
    if (($user == $username) && ($pass == $password) && ($task=="ChooseDayToEdit"))
        $editbutton = "<input type=submit name=ChosenDay value=".$date."/".$month."-".$year.">";


    if((isset($date)) && (strlen($date) > 0) && (isset($weekday)) && (strlen($weekday) > 0)) // En dag i kalenderen
    {
        if(($CurrentDate == $date) && ($CurrentMonth == $month) && ($CurrentYear == $year))
            echo "<center><td width=120 height=80 align=left valign=top bgcolor=#ff9999><font face=Verdana size=2>".$date." - ".Translate($weekday).$editbutton."<br>".CheckForMessage($date)."</td>\n";
        else
            echo "<center><td width=120 height=80 align=left valign=top bgcolor=#dddddd><font face=Verdana size=2>".$date." - ".Translate($weekday).$editbutton."<br>".CheckForMessage($date)."</td>\n";
    }
    else // Uden for kalenderen
        echo "<center><td width=120 height=80 align=center valign=top bgcolor=#dddddd>&nbsp;</td>\n";
}


// Laver en query string, hvor resten af variable foruden month og year kommer med
// Derved bibeholdes andre variable, som siden er kaldt med

$query_string = $argv[0]; //Henter variable over i $query_string
$variables = explode('&',$query_string); // opdeler variable i et array
for($i=0 ; $i < sizeof($variables) ; $i ++) // sorterer month og year fra variable
    if (ereg('month',$variables[$i]))
        $variables[$i] = "";
    elseif (ereg('year',$variables[$i]))
        $variables[$i] = "";

unset($query_string);
for($i=0 ; $i < sizeof($variables) ; $i ++) // Skriver resten af variable til $query_string
    if (strlen($variables[$i]) > 1)
        $query_string = $query_string."&".$variables[$i];



$jdday = GregorianToJD($month,1,$year); //Datonummer i Julian Day
$NoInWeek = JDDayOfWeek($jdday,0); //Nummer dag i ugen


// Tæller antal dage i måned
$i = $jdday;
$DaysInMonth = 0;
while(JDMonthName($i++,1) == JDMonthName($jdday,1))
    $DaysInMonth++;


// Tæller dage i første uge
$DaysInFirstWeek = 1;
$i = $jdday;
while(JDDayOfWeek($i++,0) != "Sunday")
    $DaysInFirstWeek++;


// Udskriver Måned og links til forrige og næste måned
echo "<table border=0 cellspacing=0 cellpadding=0 width=780>\n<tr>\n<td valign=top>";
echo "<font face=Verdana size=3><b>".Translate(JDMonthName($jdday,1))." $year</b></font><br>\n";
echo "<font face=Verdana size=2>";
echo "<a href=$PHP_SELF?month=".($month-1)."&year=$year$query_string>Forrige måned</a> - ";
echo "<a href=$PHP_SELF?month=".($month+1)."&year=$year$query_string>Næste måned</a><br><br>";
echo "</font>";
echo "</td><td align=right valign=top>\n";
if(!(isset($action)))
                    {    echo "<input type=submit value='Ret i kalenderen'>";
                        echo "<input type=hidden name=action value=AttemptingToLogin>";
                    }
if($task == "SaveMessage")
                    {
                        echo "<input type=hidden name=username value=$username>";
                        echo "<input type=hidden name=password value=$password>";
                        echo "<input type=submit value='Ret i kalenderen'>";
                        echo "<input type=hidden name=action value=TypedLogin>";
                    }
echo "</td>\n</tr>\n</table>";

//Udskriver starten på tabellen
echo "\n<table border=1 cellspacing=0 cellpadding=0>\n";

// ----------- Udskriver kalenderen ------------
$ok = 1;
while($ok == 1)
{
    echo "<tr>\n";
    for($i=1 ; $i<=7 ; $i++)
    {

        // Skiller month/day/year fra hinanden
        $MonthDayYear = explode('/',JDToGregorian($jdday));


    //Opdeler måneden i to (starten, indenfor de første ugedage, og resten)
        if($MonthDayYear[1] < $DaysInFirstWeek)
        {
            if($NoInWeek <= $i) // Skriver først datoer, fra første korrekte ugedag i måneden
                {
                    if(($i == 6) || ($i == 7)) // Weekend-dage i andre farver
                        LayoutWeekday($MonthDayYear[1],JDDayOfWeek($jdday,1));
                    else
                        LayoutWorkday($MonthDayYear[1],JDDayOfWeek($jdday,1));
                    $NoInWeek++;
                    $jdday++;
                }
            else
                if(($i == 7) || ($i == 6)) // Weekend-dage i andre farver
                    LayoutWeekday('','');
                else
                    LayoutWorkday('','');
        }
        else
        {
            if(($i == 6) || ($i == 7)) // Weekend-dage i andre farver
                LayoutWeekday($MonthDayYear[1],JDDayOfWeek($jdday,1));
            else
                LayoutWorkday($MonthDayYear[1],JDDayOfWeek($jdday,1));

            if($MonthDayYear[1] == $DaysInMonth) // Hér nået til sidste dag i måneden
            {
                for($i ; $i<7 ; $i++)// Udskriver nu resten af kalenderen for dén måned
                {
                    if(($i == 5) || ($i == 6)) // Weekend-dage i andre farver
                        LayoutWeekday('','');
                    else
                        LayoutWorkday('','');
                }
                $ok = 0;
                break;
            }
            $jdday++;
        }

    }
    echo "</tr>";
}
// Udskriver afslutning på tabellen
echo "</table>";


// Udskriver form til
if (($user == $username) && ($pass == $password) && ($task=="ChooseDayToEdit"))
{
    echo "<input type=hidden name=username value=$username>";
    echo "<input type=hidden name=password value=$password>";
    echo "<input type=hidden name=action value=HaveChosenDayToEdit>";
}


// Til redigering af kalenderen
if ($task == "ShowLogin") // Brugeren skal indtaste oplysninger for første gang
{
    echo "<font face=Verdana size=2>";
    echo "<b>Indtast brugeroplysninger</b></font><br>";
}

if ($task == "ShowLoginWithError") // Brugeren har indtastet forkerte logon oplysninger
{
    echo "<font face=Verdana size=2>";
    echo "<b>Forkerte oplysninger. Du har ikke adgang.</b></font><br>";
}
if (($task == "ShowLoginWithError") || ($task == "ShowLogin")) // Fællesnævner for de to ovenstående
{
    echo "<font face=Verdana size=2>";
    echo "Brugernavn: <input type=text name=username><br>";
    echo "Kodeord: <input type=text name=password><br>";
    echo "<input type=hidden name=action value=TypedLogin>";
    echo "<input type=submit value=Send></font></font></form>";
}

if (($user == $username) && ($pass == $password) && ($task=="EditDay"))
{

//Henter kalenderbeskeder til buffer
$fd = @fopen ("$filnavn", "r");
while (!feof ($fd)) {
    $buffer[] = fgets($fd, 4096);
}
fclose ($fd);

if(sizeof($buffer)>0) //Denne blok udføres kun hvis der blev hentet noget fra filen
{

    for($i=0 ; $i < sizeof($buffer) ; $i++)
        if(ereg($ChosenDay,$buffer[$i]))
        {
            $TempBuffer = explode('|',$buffer[$i]);
            $Message = $TempBuffer[1];
        }
}


//Viser besked på skærm
$Message = ereg_replace("<br>","\n",$Message);
echo "<font face=Verdana size=2><b>Dato: $ChosenDay</b></font><br>\n";
echo "<textarea border=0 name=Message rows=5 cols=52>".trim($Message)."</textarea><br>\n";
echo "<input type=hidden name=username value=$username>";
echo "<input type=hidden name=ChosenDay value=$ChosenDay>";
echo "<input type=hidden name=password value=$password>";
echo "<input type=hidden name=action value=HaveEditedMessage>";
echo "<input type=\"submit\" value=\"Tilføj/Ret\"><br>\n";
// Vil herefter hente siden, og gå op til starten af filen
}
echo "</form>";


?>
Avatar billede cronaldo Nybegynder
15. februar 2005 - 12:36 #1
det med dato er vel ikke så svært?:

<?php
if($dato == ""){
echo $endatosomduelvskriver;
} else {
(noget med en baggrundfarve)
} ?>
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