01. april 2005 - 02:01
Der er
16 kommentarer og 1 løsning
Generer tidsskema
Hej eksperter, Jeg har hele aftenen siddet og funderet over hvordan det følgende kan lade sig gøre - og nu er timerne blevet små... Følgende skema skal frembringes med "klikbare" tider gerne med link som skema.php?tid=unix timestamp 8:00 20 min. pause 10 min. 8:30 20 min. pause 10 min. 9:00 20 min. pause 10 min. 9:30 20 min. ... Pausen og de 20 min. må gerne variabler der kan justeres om nødvendigt. På forhånd tak, M
Annonceindlæg fra Kingston Technology
01. april 2005 - 02:13
#1
altså
if(date("H",time()) == 08)
{
echo "<a href=\"skema.php?tid=".time()."\">8:00</a><br />\n";
}
Men hvad mener du med pauserne ?
www.php.net/date www.php.net/time
01. april 2005 - 02:19
#2
Fra kl. 8:00 skal der være en 20 min. session af en slags, herefter skal der være en pause i skemaet på 10 min. - så igen en 20 min. session og 10 min. pause... Pauserne behøver ikke at være markeret
01. april 2005 - 02:23
#3
prøv at komme for formålet, jeg kan ikke helt se hvordan du vil strukturere det. Kode mæssigt er de enkelte dele bare at bruge time() og date() og evt. $_SESSION Men strukturmæssigt er det lidt underligt, det du har gang i.
01. april 2005 - 02:30
#4
Okay... Man skal kunne booke en tid. tiderne ligge fx. i tidsrummet: 8:00 - 8:20 (pause 10 min) 8:30 - 8:50 (pause 10 min) 9:00 - 9:20 (pause 10 min) Altså en bookning == 20 min.
01. april 2005 - 02:51
#5
Er det sådan noget du vil have? $start = strtotime('2005-04-01 08:00:00'); $end = strtotime('2005-04-01 16:00:00'); do { // Session time $ses_start = date("H:i",$start); $start += 1200; $ses_end = date("H:i",$start); $start += 600; printf("%s - %s\n",$ses_start,$ses_end); } while($start < $end); Den printer ikke selve pause ud.
01. april 2005 - 02:56
#6
Præcis Bromer!!! :) Nu vil jeg så være lidt besværlig... kan du sætte det op i en table, så det ser sådan her ud: <table border="0" cellpadding="0" cellspacing="0" id="cal" width="50%"> <tr> <td style="border-bottom: 2px dashed #CCCCCC;"><strong>Tidspunkt</strong></td> <td style="border-bottom: 2px dashed #CCCCCC;"><strong>Status</strong></td> </tr> <tr> <td width="25%">08:00</td> <td>Ledig</td> </tr> </table>
01. april 2005 - 03:00
#7
Sådan her $pause = 600; // Pause på 10 min $session = 1200; // Session på 20 min $start = strtotime('2005-04-01 08:00:00'); $end = strtotime('2005-04-01 16:00:00'); ?> <table border="0" cellpadding="0" cellspacing="0" id="cal" width="50%"> <tr> <td style="border-bottom: 2px dashed #CCCCCC;"><strong>Tidspunkt</strong></td> <td style="border-bottom: 2px dashed #CCCCCC;"><strong>Status</strong></td> </tr> <? while($start < $end) { // Session time $ses_start = date("H:i",$start); $start += $session; $ses_end = date("H:i",$start); $start += $pause; ?> <tr> <td width="25%"><?=$ses_start;?> - <?=$ses_end;?></td> <td>Ledig</td> </tr> <? } ?> </table>
04. april 2005 - 02:12
#8
Nu virker det her så... Booking tiderne gemmes i en database (starttime og endtime) (unix tid). Hvis jeg nu ikke ønsker de tider listet, der er taget den dag, hvor smider jeg så et check for det?
04. april 2005 - 02:12
#9
Hvordan ser din tabel ud? Og er det kun hele slots a 20 min der kan bookes?
04. april 2005 - 02:15
#10
aid (auto) uid (brugerens id) starttime (text) (unix tids format) endtime (text) (unix tids format) meetup (int) (0 = tiden er ikke overskredet, 1 = Ikke mødt, 2 = mødt) Der eksisterer kun "blokke" af 20 min.
04. april 2005 - 02:20
#11
$pause = 600; // Pause på 10 min $session = 1200; // Session på 20 min $start = strtotime('2005-04-01 08:00:00'); $end = strtotime('2005-04-01 16:00:00'); ?> <table border="0" cellpadding="0" cellspacing="0" id="cal" width="50%"> <tr> <td style="border-bottom: 2px dashed #CCCCCC;"><strong>Tidspunkt</strong></td> <td style="border-bottom: 2px dashed #CCCCCC;"><strong>Status</strong></td> </tr> <? while($start < $end) { // Session time if (mysql_result(mysql_result("select count(1) FROM <bookingtabel> WHERE starttime = " . $start),0) > 0) { $ses_start = date("H:i",$start); $start += $session; $ses_end = date("H:i",$start); $start += $pause; ?> <tr> <td width="25%"><?=$ses_start;?> - <?=$ses_end;?></td> <td>Ledig</td> </tr> <? } } ?> </table> Men denne løsning kræver at du rammer på sekundet og at man kun booker 20 min af gangen.
04. april 2005 - 02:48
#12
$pause = 600; // Pause på 10 min $session = 1200; // Session på 20 min $start = strtotime('2005-04-01 08:00:00'); $end = strtotime('2005-04-01 16:00:00'); ?> <table border="0" cellpadding="0" cellspacing="0" id="cal" width="50%"> <tr> <td style="border-bottom: 2px dashed #CCCCCC;"><strong>Tidspunkt</strong></td> <td style="border-bottom: 2px dashed #CCCCCC;"><strong>Status</strong></td> </tr> <? while($start < $end) { $tmp = $start; $ses_start = date("H:i",$start); $start += $session; $ses_end = date("H:i",$start); $start += $pause; // Session time if (mysql_result(mysql_result("select count(1) FROM <bookingtabel> WHERE starttime = " . $start),0) > 0) { ?> <tr> <td width="25%"><?=$ses_start;?> - <?=$ses_end;?></td> <td>Ledig</td> </tr> <? } } ?> </table>
04. april 2005 - 03:02
#13
hov.. if (mysql_result(mysql_result("select count(1) FROM <bookingtabel> WHERE starttime = " . $start),0) > 0) { skal være if (mysql_result(mysql_query("select count(1) FROM <bookingtabel> WHERE starttime = " . $start),0) > 0) {
04. april 2005 - 03:09
#14
og det skal så være lige omvendt (jeg er ved at blive lidt træt) if (mysql_result(mysql_query("select count(1) FROM <bookingtabel> WHERE starttime = " . $start),0) == 0) {
04. april 2005 - 03:24
#15
og igen en fejl if (mysql_result(mysql_query("select count(1) FROM <bookingtabel> WHERE starttime = " . $tmp),0) == 0) {
04. april 2005 - 03:33
#16
Løsningen blev altså: <? dbConn(); while($start < $end) { $tmp = $start; $ses_start = date("H:i",$start); $start += $session; $ses_end = date("H:i",$start); $start += $pause; list($starthour,$startmin) = split(":",$ses_start); $unixstart = mktime($starthour,$startmin,0,$month,$date,$year); list($endhour,$endmin) = split(":",$ses_end); $unixend = mktime($endhour,$endmin,0,$month,$date,$year); // Session time if (mysql_result(mysql_query("SELECT COUNT(1) FROM <booking table> WHERE starttime = " . $tmp),0) == 0) { ?> <tr> <td width="25%"><a href="user.book.php?start=<?=$unixstart?>&end=<?=$unixend?>"><?=$ses_start;?> - <?=$ses_end;?></a></td> <td>Ledig</td> </tr> <? } else { ?> <tr> <td width="25%"><?=$ses_start;?> - <?=$ses_end;?></td> <td><font color="#FF0000">Optaget</font></td> </tr> <?php } } ?>
04. april 2005 - 04:52
#17
yep.. og her er et svar :)
Vi tilbyder markedets bedste kurser inden for webudvikling