Avatar billede haolan Nybegynder
29. oktober 2005 - 16:45 Der er 39 kommentarer og
1 løsning

start og slut tider

Halløj..

Jeg er ved at udvikle en arrangementtilmelder.
På tilmelderen skal man i administrationen kunne indtaste en start tid og sluttid på arrangementet.

Det jeg gerne vil have er nogle <select> menuer til valg af dato og tid.

I første <select> boks skal der være ugedag,
i næste skal der være dag,
i den næste skal der være måned,
i næste skal der være år,
i næste skal der være timer
og i den sidste skal der være minutter

Sådan nogle bokse skal der gerne være til både start og sluttid.

Hvordan får man lavet sådan nogle select bokse til at definere en dato?
Det må meget gerne være sådan at den gemmer det som en dato i tinytext i mysql, som man kan trække ud ved at definere det med fx: ('d/m Y', $r['opretdato']) kl.: ('hh:mm', $r['opretdato'])
Avatar billede mjl Nybegynder
29. oktober 2005 - 17:50 #1
<?
$sek = date("s");
$kalender_dato = mktime ($timen,$minutet,$sek,$maaneden,$dagen,$aaret);
mysql_query( o.s.v.......
?>

<form action=xxxxxx method=xxxxxx>
<select name='dagen' class=felt>
<option value='<?echo date("d");?>'><?echo date("d");?>
<option value='01'>01
<option value='02'>02
<option value='03'>03
<option value='04'>04
<option value='05'>05
<option value='06'>06
<option value='07'>07
<option value='08'>08
<option value='09'>09
<option value='10'>10
<option value='11'>11
<option value='12'>12
<option value='13'>13
<option value='14'>14
<option value='15'>15
<option value='16'>16
<option value='17'>17
<option value='18'>18
<option value='19'>19
<option value='20'>20
<option value='21'>21
<option value='22'>22
<option value='23'>23
<option value='24'>24
<option value='25'>25
<option value='26'>26
<option value='27'>27
<option value='28'>28
<option value='29'>29
<option value='30'>30
<option value='31'>31
</select>
<select name='maaneden' class=felt>
<option value='<?echo date("m");?>'><?echo date("m");?>
<option value='01'>01
<option value='02'>02
<option value='03'>03
<option value='04'>04
<option value='05'>05
<option value='06'>06
<option value='07'>07
<option value='08'>08
<option value='09'>09
<option value='10'>10
<option value='11'>11
<option value='12'>12
</select>
<select name='aaret' class=felt>
<option value='<?echo date("Y");?>'><?echo date("Y");?>
<option value='<?echo date("Y")+1;?>'><?echo date("Y")+1;?>
</select>
<br><br>
<select name='timen' class=felt>
<option value='<?echo date("H");?>'><?echo date("H");?>
<option value='1'>01
<option value='2'>02
<option value='3'>03
<option value='4'>04
<option value='5'>05
<option value='6'>06
<option value='7'>07
<option value='8'>08
<option value='9'>09
<option value='10'>10
<option value='11'>11
<option value='12'>12
<option value='13'>13
<option value='14'>14
<option value='15'>15
<option value='16'>16
<option value='17'>17
<option value='18'>18
<option value='19'>19
<option value='20'>20
<option value='21'>21
<option value='22'>22
<option value='23'>23
<option value='0'>00
</select>
<select name='minutet' class=felt>
<option value='0'>00
<option value='1'>01
<option value='2'>02
<option value='3'>03
<option value='4'>04
<option value='5'>05
<option value='6'>06
<option value='7'>07
<option value='8'>08
<option value='9'>09
<option value='10'>10
<option value='11'>11
<option value='12'>12
<option value='13'>13
<option value='14'>14
<option value='15'>15
<option value='16'>16
<option value='17'>17
<option value='18'>18
<option value='19'>19
<option value='20'>20
<option value='21'>21
<option value='22'>22
<option value='23'>23
<option value='24'>24
<option value='25'>25
<option value='26'>26
<option value='27'>27
<option value='28'>28
<option value='29'>29
<option value='30'>30
<option value='31'>31
<option value='32'>32
<option value='33'>33
<option value='34'>34
<option value='35'>35
<option value='36'>36
<option value='37'>37
<option value='38'>38
<option value='39'>39
<option value='40'>40
<option value='41'>41
<option value='42'>42
<option value='43'>43
<option value='44'>44
<option value='45'>45
<option value='46'>46
<option value='47'>47
<option value='48'>48
<option value='49'>49
<option value='50'>50
<option value='51'>51
<option value='52'>52
<option value='53'>53
<option value='54'>54
<option value='55'>55
<option value='56'>56
<option value='57'>57
<option value='58'>58
<option value='59'>59
</select>
</form>

Når du henter talet igen fra DB'en skriver du....

Det hentede tal fra DB = $hentet_dato

<?
$hentet_dato = date("d.m.Y - H:s");
echo $hentet_dato;
?>
Avatar billede jaw Nybegynder
29. oktober 2005 - 18:40 #2
Kør en løkke på de select-bokse :)

echo "<select name='dato'>";
for($i = 1; $i < 31; $i++) {
  $checked = ($i == date("d")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo "<select name='minut'>";
for($i = 1; $i < 60; $i++) {
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select>";

Og så fremdeles...
Avatar billede haolan Nybegynder
30. oktober 2005 - 18:58 #3
Jaw: Øhm.. er det meningen nu du skriver det der checked at den så skal være checked på den nuværende dato?

Og i øvrigt når du skal indsætte det i databasen i én tinytekst hvordan vil du så sætte dem ind?
Avatar billede haolan Nybegynder
30. oktober 2005 - 19:04 #4
ahh nu fatter jeg den der checked :)
Avatar billede jaw Nybegynder
30. oktober 2005 - 19:15 #5
Ja, den skulle gerne checke dags dato :)

Og hvordan vil du have det stående i databasen?
Avatar billede haolan Nybegynder
30. oktober 2005 - 20:00 #6
i en tinytext gerne.. så det kan kaldes ud med date(d/m - Y, $dato)
og i en anden date(hh:mm, $dato)
Avatar billede haolan Nybegynder
01. november 2005 - 08:40 #7
Den checker ikke dags dato, vil jeg lige gøre opmærksom på..

og kan stadig ikke få den ind i databasen.. datoen bliver jo delt ud med fire fem forskellige navne, som skal samles i én tabel.
Avatar billede jaw Nybegynder
01. november 2005 - 13:45 #8
Ja, men giv lige et præcist eksempel på, hvordan feltet skal se ud. Skal det være ddmmyyhhii eller hvordan?
Avatar billede haolan Nybegynder
01. november 2005 - 15:16 #9
jeps lige netop sådan som du skrev..
Avatar billede haolan Nybegynder
01. november 2005 - 15:16 #10
eller rettere 4 gange y..
Avatar billede jaw Nybegynder
01. november 2005 - 15:18 #11
$datefelt = $_POST['year'];
$datofelt .= (strlen($_POST['month']) == 1) ? $_POST['month'] : "0".$_POST['month'];

og så fremdeles, indtil $datofelt indeholder det du vil have det skal, og så indsætter du bare dét.
Avatar billede haolan Nybegynder
01. november 2005 - 18:55 #12
øhm nu skriver du en hulens lang sætning til month og kun ganske kort til year. Hvad er forskellen og hvad skal jeg bruge til day, hours og minuts?
Avatar billede jaw Nybegynder
01. november 2005 - 18:57 #13
Det kommer jo an på hvad du gør. Hvis year allerede er 4 cifre, er der jo ingen grund til at gøre mere ved den.

Ved month gør jeg det, at jeg tjekker om længden er 1. Altså om det er tal fra 1-9. Hvis det er tal fra 1-9 sætter den et 0 foran, så det bliver 01, 02 osv.

Det samme bør du så gøre med timer, minutter, sekunder etc., for det skal jo være formater år 4 tegn, måned 2 tegn, dato 2 tegn, timer 2 tegn etc.
Avatar billede haolan Nybegynder
01. november 2005 - 19:02 #14
ahh nice :) jeg prøver
Avatar billede jaw Nybegynder
01. november 2005 - 19:04 #15
Jeg ved ikke hvor meget du kender til det, men denne:
$datofelt .= (strlen($_POST['month']) == 1) ? $_POST['month'] : "0".$_POST['month'];
...er sådan set bare en if/else omskrevet.

Og læg mærke til .= der tilføjer til $datofelt i stedet for at overskrive den :)
Avatar billede haolan Nybegynder
01. november 2005 - 19:44 #16
Der er en stor fejl et sted.. Når jeg vælger 10/10 2010 10:10 som min dato og tid, så udskriver den: 19/01 2038 kl: 04:14 når jeg kalder det frem igen..
Avatar billede haolan Nybegynder
01. november 2005 - 19:47 #17
indtaster jeg slet intet det vil sige at den får datoen: 1/1 2005 1:1 i både start og slut tid udskriver den:  Fra: 21/08 1970 kl: 03:45 Til: 16/07 2033 kl: 09:01
Avatar billede haolan Nybegynder
01. november 2005 - 19:49 #18
tror det må være det der checked der slår fejl et sted, for den checker heller ikke den nuværende dato.
Avatar billede haolan Nybegynder
01. november 2005 - 19:50 #19
Du får lige hele baduljen for starttiden:

echo "Dato: <select name='startdato'>";
// Start Dato
for($i = 1; $i < 32; $i++) {
  $checked = ($i == date("d")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " / <select name='startmonth'>";
for($i = 1; $i < 13; $i++) {
  $checked = ($i == date("m")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " - <select name='startyear'>";
for($i = 2005; $i < 2011; $i++) {
  $checked = ($i == date("Y")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " Kl.: <select name='starthour'>";
for($i = 0; $i < 25; $i++) {
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select> : ";

echo "<select name='startminut'>";
for($i = 0; $i < 60; $i++) {
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select>";
echo "</td></tr>";
echo "<tr><td>";
echo "Slut tid:";
echo "</td><td>";
echo "Dato: <select name='slutdato'>";
// Slut Dato
for($i = 1; $i < 32; $i++) {
  $checked = ($i == date("d")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";
Avatar billede jaw Nybegynder
01. november 2005 - 20:20 #20
Tror jeg nu ikke, men check hellere dine felt-værdier gennem f.eks. phpMyAdmin. For hvis du bruger date() på den, så er det derfor.
Avatar billede haolan Nybegynder
01. november 2005 - 20:22 #21
øhm.. nu er jeg ikke med mere.. altså jeg kalder dem frem sådan:
$datestart = date('d/m Y', $r['timestart']);
$timestart = date('H:i', $r['timestart']);

$dateend = date('d/m Y', $r['timeend']);
$timeend = date('H:i', $r['timeend']);
Avatar billede jaw Nybegynder
01. november 2005 - 20:25 #22
Og det vil ikke virke.

Men først skal vi være 100% sikker på, at det er de rigtige værdier du har i felterne før vi går videre. Det kan du enten se i phpMyAdmin eller bare at udskrive felterne som:
echo $r['timestart'].$r['timeend']."<br />";
Avatar billede haolan Nybegynder
01. november 2005 - 20:27 #23
så udskriver den: 200511002005110000
Avatar billede jaw Nybegynder
01. november 2005 - 20:29 #24
Og der går jo så noget helt galt, det må du lige se om du kan fikse :)
Avatar billede haolan Nybegynder
01. november 2005 - 21:03 #25
må nok erkende at jeg ikke kan finde nogen fejl nogle steder
Avatar billede jaw Nybegynder
01. november 2005 - 21:04 #26
Og, men så må du også lige smide den del, hvor du sammensætter din variabel, så skal jeg se på det så snart jeg får tid...
Avatar billede jaw Nybegynder
01. november 2005 - 21:05 #27
Det skulle ikke starte med "og", men med "ok" :)
Avatar billede haolan Nybegynder
01. november 2005 - 21:08 #28
$timestart = $_POST['startyear'];
$timestart .= (strlen($_POST['startmonth']) == 1) ? $_POST['startmonth'] : "0".$_POST['startmonth'];
$timestart .= (strlen($_POST['startdato']) == 1) ? $_POST['startdato'] : "0".$_POST['startdato'];

$timestart .= (strlen($_POST['starthour']) == 1) ? $_POST['starthour'] : "0".$_POST['starthour'];
$timestart .= (strlen($_POST['startminut']) == 1) ? $_POST['startminut'] : "0".$_POST['startminut'];

$timeend = $_POST['slutyear'];
$timeend .= (strlen($_POST['slutmonth']) == 1) ? $_POST['slutmonth'] : "0".$_POST['slutmonth'];
$timeend .= (strlen($_POST['slutdato']) == 1) ? $_POST['slutdato'] : "0".$_POST['slutdato'];

$timeend .= (strlen($_POST['sluthours']) == 1) ? $_POST['sluthour'] : "0".$_POST['sluthour'];
$timeend .= (strlen($_POST['slutminuts']) == 1) ? $_POST['slutminut'] : "0".$_POST['slutminut'];
Avatar billede jaw Nybegynder
01. november 2005 - 22:36 #29
Det du postede 19.50.41 med dine select-bokse, det er hvad der er, ikke? Det er kun dem der udgør start og sluttidspunkt?
Avatar billede haolan Nybegynder
01. november 2005 - 22:45 #30
altså hvis jeg poster 1/1 2005 kl. 0:0 i både start og slut fremkommer der nu:
Fra: 10/05 1970 kl: 17:15  Til: 10/05 1970 kl: 17:15
Avatar billede jaw Nybegynder
01. november 2005 - 22:47 #31
Ja, ja, men det har noget med date() at gøre. Men du må paste de præcise select-bokse du bruger til at lave det med, så jeg selv kan afprøve det. Ellers sidder jeg og skyder løsninger af fra nu af og til jul...
Avatar billede haolan Nybegynder
01. november 2005 - 22:49 #32
echo "Dato: <select name='startdato'>";
// Start Dato
for($i = 1; $i < 32; $i++) {
  $checked = ($i == date("d")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " / <select name='startmonth'>";
for($i = 1; $i < 13; $i++) {
  $checked = ($i == date("m")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " - <select name='startyear'>";
for($i = 2005; $i < 2011; $i++) {
  $checked = ($i == date("Y")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " Kl.: <select name='starthour'>";
for($i = 0; $i < 25; $i++) {
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select> : ";

echo "<select name='startminut'>";
for($i = 0; $i < 60; $i++) {
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select>";
echo "</td></tr>";
echo "<tr><td>";
echo "Slut tid:";
echo "</td><td>";
echo "Dato: <select name='slutdato'>";
// Slut Dato
for($i = 1; $i < 32; $i++) {
  $checked = ($i == date("d")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " / <select name='slutmonth'>";
for($i = 1; $i < 13; $i++) {
  $checked = ($i == date("m")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " - <select name='slutyear'>";
for($i = 2005; $i < 2011; $i++) {
  $checked = ($i == date("Y")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " Kl.: <select name='sluthour'>";
for($i = 0; $i < 25; $i++) {
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select> : ";

echo "<select name='slutminut'>";
for($i = 0; $i < 60; $i++) {
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select>";
Avatar billede jaw Nybegynder
01. november 2005 - 23:52 #33
Sådan, beklager det blev lidt sent :)

Først dine forms:
----------------
echo "Dato: <select name='startdato'>";
// Start Dato
for($i = 1; $i < 32; $i++) {
  $checked = ($i == date("d")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " / <select name='startmonth'>";
for($i = 1; $i < 13; $i++) {
  $checked = ($i == date("m")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " - <select name='startyear'>";
for($i = 2005; $i < 2011; $i++) {
  $checked = ($i == date("Y")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " Kl.: <select name='starthour'>";
for($i = 0; $i < 25; $i++) {
    if(strlen($i) == 1)
        $i = "0".$i;
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select> : ";

echo "<select name='startminut'>";
for($i = 0; $i < 60; $i++) {
    if(strlen($i) == 1)
        $i = "0".$i;
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select>";
echo "</td></tr>";
echo "<tr><td>";
echo "Slut tid:";
echo "</td><td>";
echo "Dato: <select name='slutdato'>";
// Slut Dato
for($i = 1; $i < 32; $i++) {
  $checked = ($i == date("d")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " / <select name='slutmonth'>";
for($i = 1; $i < 13; $i++) {
  $checked = ($i == date("m")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " - <select name='slutyear'>";
for($i = 2005; $i < 2011; $i++) {
  $checked = ($i == date("Y")) ? " checked" : "";
  echo "<option value=".$i.$checked.">".$i."</option>";
}
echo "</select>";

echo " Kl.: <select name='sluthour'>";
for($i = 0; $i < 25; $i++) {
    if(strlen($i) == 1)
        $i = "0".$i;
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select> : ";

echo "<select name='slutminut'>";
for($i = 0; $i < 60; $i++) {
    if(strlen($i) == 1)
        $i = "0".$i;
  echo "<option value=".$i.">".$i."</option>";
}
echo "</select>";


Og dernæst dine variabler:
--------------------------
$timestart = $_POST['startyear'];
$timestart .= (strlen($_POST['startmonth']) == 1) ? "0".$_POST['startmonth'] : $_POST['startmonth'];
$timestart .= (strlen($_POST['startdato']) == 1) ? "0".$_POST['startdato'] : $_POST['startdato'];

$timestart .= (strlen($_POST['starthour']) == 1) ? "0".$_POST['starthour'] : $_POST['starthour'];
$timestart .= (strlen($_POST['startminut']) == 1) ? "0".$_POST['startminut'] : $_POST['startminut'];

$timeend = $_POST['slutyear'];
$timeend .= (strlen($_POST['slutmonth']) == 1) ? "0".$_POST['slutmonth'] : $_POST['slutmonth'];
$timeend .= (strlen($_POST['slutdato']) == 1) ? "0".$_POST['slutdato'] : $_POST['slutdato'];

$timeend .= (strlen($_POST['sluthour']) == 1) ? "0".$_POST['sluthour'] : $_POST['sluthour'];
$timeend .= (strlen($_POST['slutminut']) == 1) ? "0".$_POST['slutminut'] : $_POST['slutminut'];

Det var lidt din skyld og lidt min skyld :)
Avatar billede jaw Nybegynder
02. november 2005 - 00:18 #34
En lille fehler igen:
$timestart = $_POST['startyear'];
$timestart .= (strlen($_POST['startmonth']) == 1) ? "0".$_POST['startmonth'] : $_POST['startmonth'];
$timestart .= (strlen($_POST['startdato']) == 1) ? "0".$_POST['startdato'] : $_POST['startdato'];
$timestart .= (strlen($_POST['starthour']) == 1) ? "0".$_POST['starthour'] : $_POST['starthour'];
$timestart .= (strlen($_POST['startminut']) == 1) ? "0".$_POST['startminut'] : $_POST['startminut'];
$timestart .= "00";

$timeend = $_POST['slutyear'];
$timeend .= (strlen($_POST['slutmonth']) == 1) ? "0".$_POST['slutmonth'] : $_POST['slutmonth'];
$timeend .= (strlen($_POST['slutdato']) == 1) ? "0".$_POST['slutdato'] : $_POST['slutdato'];
$timeend .= (strlen($_POST['sluthour']) == 1) ? "0".$_POST['sluthour'] : $_POST['sluthour'];
$timeend .= (strlen($_POST['slutminut']) == 1) ? "0".$_POST['slutminut'] : $_POST['slutminut'];
$timeend .= "00";

Og den nemmest måde du så kan få det til at blive udskrevet pænt, vil jeg mene er:

SELECT felt1, felt2, UNIX_TIMESTAMP(dit_startdato_felt) as tid1, UNIX_TIMESTAMP(dit_slutdato_felt) as tid2

Og så bruge:
date("d.m.Y H.i", $row['tid1']);
date("d.m.Y H.i", $row['tid2']);

Og nu må det være sengetid, godnat :) !
Avatar billede haolan Nybegynder
02. november 2005 - 08:36 #35
altså sådan:
$time = mysql_fetch_array(mysql_query("SELECT * FROM RAID timestart, timeend, UNIX_TIMESTAMP(timestart) as tid1, UNIX_TIMESTAMP(timeend) as tid2")) or die(mysql_error());

$datestart = date("d.m.Y H.i", $time['tid1']);
$dateend = date("d.m.Y H.i", $time['tid2']);

??
Avatar billede haolan Nybegynder
02. november 2005 - 08:44 #36
i så faldt får jeg følgende fejl:

Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\klan\inc\raid.inc on line 30
You have an error in your SQL syntax near 'UNIX_TIMESTAMP(timestart) as tid1, UNIX_TIMESTAMP(timeend) as tid2' at line 1
Avatar billede haolan Nybegynder
02. november 2005 - 10:42 #37
den modtager ihvertfald det rigtige denne gang.. der står 20050101000000 i begge tabeller når jeg skriver 01/01 2005 kl. 00:00
Avatar billede jaw Nybegynder
02. november 2005 - 13:43 #38
Dit udtræk skal være:
$time = mysql_fetch_array(mysql_query("SELECT *, timestart, timeend, UNIX_TIMESTAMP(timestart) as tid1, UNIX_TIMESTAMP(timeend) as tid2 FROM RAID") or die(mysql_error());
Avatar billede haolan Nybegynder
19. november 2005 - 00:48 #39
hmm vi fik da aldrig lagt points ud her :)
Læg svar for points jaw
Avatar billede jaw Nybegynder
19. november 2005 - 12:11 #40
Okey, 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