Avatar billede morten-1981 Nybegynder
15. august 2008 - 11:17 Der er 5 kommentarer

Håndtering af datoer - muligvis via unix time

Til dem af jer der kender mig: Tak fordi I stadig gider hjælpe mig når jeg sidder fast :)

Jeg er kommet ret langt med en ny side i PHP, men data-håndtering forvirrer mig stadigvæk. Såvidt jeg kan læse mig til er det smarteste at benytte unix-time?

Problemstillingen er: Jeg skal have brugeren til at vælge en dato og et klokkeslet som skal gemmes i databasen sammen med en beskrivelse/event. Dette skal der så "regnes" lidt på og blandt andet sendes en reminder-mail på datoen og events skal fremkomme med rødt når datoen er overskredet.

Er det bedst at bruge unix-time og hvordan giver jeg brugeren mulighed for at vælge en dato? Hvis de får chancen med et tekstfelt bliver datoen jo aldrig korrekt formateret, men omvendt virker 6 dropdown-boxe også voldsomt.
Avatar billede dmdisco Nybegynder
15. august 2008 - 11:26 #1
du kan lave en kalender popup hvor de vælger en dato og indtaster et klokkeslæt, se evt. phpmyadmin den har denne funktion når du skal indsætte data i et datetime felt

<div id="calendarContainer">
    <div id="calendarTools">
        <div>
            <select onchange="calendarGotoMonth(this.options[this.selectedIndex].value, '<?php print $showYear;?>');">
                <option value="01"<?php print ($showMonth == "01") ? " selected" : "";?>>Januar</option>
                <option value="02"<?php print ($showMonth == "02") ? " selected" : "";?>>Februar</option>
                <option value="03"<?php print ($showMonth == "03") ? " selected" : "";?>>Marts</option>
                <option value="04"<?php print ($showMonth == "04") ? " selected" : "";?>>April</option>
                <option value="05"<?php print ($showMonth == "05") ? " selected" : "";?>>Maj</option>
                <option value="06"<?php print ($showMonth == "06") ? " selected" : "";?>>Juni</option>
                <option value="07"<?php print ($showMonth == "07") ? " selected" : "";?>>Juli</option>
                <option value="08"<?php print ($showMonth == "08") ? " selected" : "";?>>August</option>
                <option value="09"<?php print ($showMonth == "09") ? " selected" : "";?>>September</option>
                <option value="10"<?php print ($showMonth == "10") ? " selected" : "";?>>Oktober</option>
                <option value="11"<?php print ($showMonth == "11") ? " selected" : "";?>>November</option>
                <option value="12"<?php print ($showMonth == "12") ? " selected" : "";?>>December</option>
            </select>
        </div>
        <div>
            <select onchange="calendarGotoMonth('<?php print $showMonth;?>', this.options[this.selectedIndex].value);">
<?php
// writing year options
for($year=($showYear-25);$year<($showYear+25);$year++) {
?>
                <option value="<?php print $year;?>"<?php print ($showYear == $year) ? " selected" : "";?>><?php print $year;?></option>
<?php
}
?>
            </select>
        </div>
    </div>
    <div id="calendarTitleContainer">
        <div class="calendarDay1">M</div>
        <div class="calendarDay2">T</div>
        <div class="calendarDay3">O</div>
        <div class="calendarDay4">T</div>
        <div class="calendarDay5">F</div>
        <div class="calendarDay6">L</div>
        <div class="calendarDay7">S</div>
    </div>
    <div id="calendarDayContainer">
<?php
// setting current month
$month = mktime (0, 0, 0, $showMonth, $showDay, $showYear);

// get the number of days in month
$days = cal_days_in_month(CAL_GREGORIAN, (date("m",$month)), date("Y",$month));
// getting 1st day of the week
$day = date("w", mktime(0, 0, 0, date("m",$month ), 1, date("Y",$month )));

// printing the calendar

for ($i=1;$i<=$days;$i++) {
    if ($day == 0) $day = 7;
    // starting a week
    if ($i == 1 || $day == 1) $calendar .= "\t\t<div class=\"calendarWeekContainer\">\n";
   
    //
    $calendar .= "\t\t\t<div class=\"calendarDay".$day."\" style=\"cursor: pointer;\" onclick=\"calendarSetDate('".str_pad($i, 2, "0", STR_PAD_LEFT)."','".$showMonth."','".$showYear."')\">".$i."</div>\n";
   
    $day++;
    // ending a week
    if ($day > 7 || $i == $days) $calendar .= "\t\t</div>\n";
    if ($day > 7) $day = 1;
}

print $calendar;
?>
    </div>
    <div id="calendarTimeContainer">
        <input type="text" value="<?php print date("Y");?>" id="calendarYear" maxlength="2" style="width: 30px"> /
        <input type="text" value="<?php print date("m");?>" id="calendarMonth" maxlength="2" style="width: 15px"> /
        <input type="text" value="<?php print date("d");?>" id="calendarDay" maxlength="2" style="width: 15px"><br>
        <input type="text" value="<?php print date("H");?>" id="calendarHour" maxlength="2" style="width: 15px"> :
        <input type="text" value="<?php print date("i");?>" id="calendarMinute" maxlength="2" style="width: 15px"> :
        <input type="text" value="00" id="calendarSecond" maxlength="2" style="width: 15px"><br>
        <input type="button" value="Indsæt dato" onclick="calenderInsertDate();">
    </div>
</div>

måske kan du bruge koden til noget den er ikke så pæn men den var det jeg kunne finde i "gemmeren"
Avatar billede morten-1981 Nybegynder
15. august 2008 - 11:32 #2
Umiddelbart ser det meget interessant ud. Det ser dog meget rodet ud når det vises i browseren - ligger du også inde med et stylesheet til den?
Avatar billede dmdisco Nybegynder
15. august 2008 - 11:39 #3
hehe du siger noget dette er dem jeg bruger

/* calendar styles */
.calendarDayTitle {
    float: left;
    width: 20px;
}

#calendarTitleContainer {
    position: relative;
    width: 140px;
    height: 16px;
    float: none;
}

#calendarContainer {
    width: 140px;
    text-align: center;
}

#calendarDayContainer {
    width: 140px;
    height: 80px;
}

.calendarWeekContainer {
    position: relative;
    width: 140px;
    height: 16px;
    float: none;
}

.calendarDay1 {
    position: absolute;
    left: 0px;
    width: 20px;
}

.calendarDay2 {
    position: absolute;
    left: 20px;
    width: 20px;
}

.calendarDay3 {
    position: absolute;
    left: 40px;
    width: 20px;
}

.calendarDay4 {
    position: absolute;
    left: 60px;
    width: 20px;
}

.calendarDay5 {
    position: absolute;
    left: 80px;
    width: 20px;
}

.calendarDay6 {
    position: absolute;
    left: 100px;
    width: 20px;
    background: #c0c0c0;
}

.calendarDay7 {
    position: absolute;
    left: 120px;
    width: 20px;
    background: #c0c0c0;
}

#calendarTools {
    position: relative;
    width: 140px;
    height: 50px;
    float: none;
}
Avatar billede morten-1981 Nybegynder
16. september 2008 - 13:49 #4
Fik aldrig lukket - smid et svar. Tak fordi du gad bruge tid på indlægget :)
Avatar billede dmdisco Nybegynder
16. september 2008 - 14:19 #5
svar
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