Avatar billede Slettet bruger
19. februar 2003 - 09:10 Der er 9 kommentarer og
1 løsning

Lave en dropdown med klokken

Hejsa

Jeg skal bruge det php script som danner en dropdown boks, med klokken skrevet sådan:

Onsdag 7:00
Onsdag 7:10
Onsdag 7:20
Onsdag7:30

Men hvis klokken nu er 7:12 så skal den først i dropdown være Onsdag 7:20 altså den næste som ligger efter.

Men den skal altid vise 24 timer frem, så når klokken er 14:20 om onsdagen så skal den sidste være Torsdag 14:10
Avatar billede basicq Nybegynder
19. februar 2003 - 09:34 #1
Opret i JavaScript, php kan ikke lave dropdown menu. PHP bliver afviklet backend og det du skal lave skal afvikles lokalt.
Avatar billede rzj Nybegynder
19. februar 2003 - 09:45 #2
mener du en <select>-box ?
Avatar billede rzj Nybegynder
19. februar 2003 - 09:46 #3
sådan en fætter kan jeg da godt lave til dig....men hvis det er en dropdown-menu, så må du over i JS afdelingen.
Avatar billede rzj Nybegynder
19. februar 2003 - 10:32 #4
her er den. Jeg skal smutte nu og har ikke lige fået rundet minuterne af, men det kan du måske selv kigge på? Ellers kigger jeg på det senere.
<?php
function createOptions(){
$interval = 10 * 60; //antal minuters interval i sekunder
$scope = 24 * (3600/$interval); //antal timer frem
$options = "";

for($i=0;$i<$scope;$i++){
 
  $now = date("H:i", ceil(time()+($interval*$i)));
  list($hours, $minutes) = explode(":", $now);
  $options .= '<option value="'.$hours.':'.$minutes.'">'.$hours.':'.$minutes.'</option>';
}
return $options;
}
echo '<select>';
echo createOptions();
echo '</select>';
?>
Avatar billede rzj Nybegynder
19. februar 2003 - 10:36 #5
ups ! Brug denne:
<?php
function createOptions(){
$interval = 10 * 60; //antal minuters interval i sekunder
$scope = 24 * (3600/$interval); //antal timer frem
$options = "";

for($i=0;$i<$scope;$i++){
 
  $now = date("H:i", time() + ($interval*$i));
  list($hours, $minutes) = explode(":", $now);
  $options .= '<option value="'.$hours.':'.$minutes.'">'.$hours.':'.$minutes.'</option>';
}
return $options;
}
echo '<select>';
echo createOptions();
echo '</select>';

?>
Avatar billede rzj Nybegynder
19. februar 2003 - 13:30 #6
så kan det vist ikke blive meget mere gennemskueligt ;-)
Nedenstående laver også afrundingen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<?php

#---------AFRUNDER MINUTTER------------
function roundUp($minutes){
    //Arbejd med de to ints seperat
  $firstDigit = $minutes{0};
  $lastDigit = $minutes{1};
 
  //Hvis det sidste tal er under 5 rundes første tal IKKE op
  if($lastDigit < 5){
      $firstDigit = $firstDigit;
 
  //Hvis det første tal er 0 så skal den bibeholde sit 00 (eks. kl. 14:00)
  } elseif($firstDigit == 0){
      $firstDigit = 0;
 
  //Så er sidste tal 5 eller størrer og så skal der lægge 1 til det første tal 
  } else {
      $firstDigit = $firstDigit + 1;
  } 
 
  //Sidste tal skal altid være nul
  $minutes = $firstDigit.'0';
 
  //Returner det formaterede tal til kaldet
  return $minutes;
}

#---------GENERERER OPTIONS ELEMENTER------------
function createOptions(){
$interval = 10 * 60; //antal minuters interval i sekunder
$scope = 24 * (3600/$interval); //antal timer frem
$danishDays = array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"); //Array med da dage
$options = ""; //Init var options

//Løkke der generere string options, der indeholder html elementerne <option> og deres værdier
for($i=0;$i<$scope;$i++){
 
  //Få et timestamp og lav det om til et dato format
  $now = date("w:H:i", time() + ($interval*$i));
 
  //Opsplit værdier i datoformat så vi kan arbejde med dem seperat
  list($dayNum, $hours, $minutes) = explode(":", $now);
 
  //Afrund minutter intervaller på 10
  $minutes = roundUp($minutes);
 
  //Generer string med html
  $options .= '<option value="'.$danishDays[$dayNum].':'.$hours.':'.$minutes.'">'.$danishDays[$dayNum].':'.$hours.':'.$minutes.'</option>';
}

//Retuner string options til kaldet
return $options;
}

//Sæt selectbox sammen af HTML samt de options der genereres af funktionen
echo '<select name="foo">';
echo createOptions();
echo '</select>';
?>
</body>
</html>
Avatar billede Slettet bruger
20. februar 2003 - 23:04 #7
Undskyld. Men det er kanont :) Point til dig
Avatar billede Slettet bruger
20. februar 2003 - 23:06 #8
Det virker godt, men der er et lille problem, den må ikke runde ned, når den f.eks er 23:03 så viser den 23:00 som den først, det skal være 23:10
Avatar billede Slettet bruger
04. marts 2003 - 14:21 #9
Ændrede lidt i scriptet, da det ikke virkede 100% med her er dine point.
Avatar billede allandk Nybegynder
04. marts 2003 - 14:47 #10
Hvad har du ændret? Jeg har bemærket, at den også tæller 60'erne med, fx 66, 67 og 68, osv.
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