Visa ett inlägg
Oläst 2012-03-07, 15:37 #2
bassan bassan är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 84
bassan bassan är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 84
Citat:
Ursprungligen postat av Pate Visa inlägg
I ditt exempel så kan du alltid loopa igenom $open_hours en gång till om $remaining_open_hours är 0 och då jämföra med morgondagens öppettider istället (glöm inte att kolla minuter också).

Ett tips är att använda DateTime::diff för att jämföra tid med PHP. Då slipper du räkna antal timmar som först återstår av dygnet samt hur många som är kvar till dygnet efter.


Gjorde ett snabbt exempel på funktionen (dock något annorlunda strukturerad):

PHP-kod:

... 
Verkligen super schysst av dig att ge mig tips!
Jag löste det dock på detta sätt och det verkar fungera.

Har dock problem med om det är stängt i 1 eller 2 dagar att räkna ut tiden till nästa öppningsdag. Har du någon idé där som kan hjälpa?


PHP-kod:
      if(empty($type)) $type 'idag';
      if (
$type=='imorgon') {$modifier='+1day +1hours';} else {$modifier='+1hours';}
      
      
$weekdays = array(0=>'söndag',1=>'måndag',2=>'tisdag',3=>'onsdag',4=>'torsdag',5=>'fredag',6=>'lördag');
    
$today_date gmdate("Y-m-d",strtotime($modifier));
    
$today_date_short gmdate("d/n",strtotime($modifier));
    
$today_weekday strftime("%w",strtotime($modifier));
    if (
$today_weekday=='5') {$day_type 'fredag';  $next_day 'lördag'; };
    if (
$today_weekday=='4') {$day_type 'torsdag'$next_day 'fredag'; };
    if (
$today_weekday=='3') {$day_type 'onsdag';  $next_day 'torsdag'; };
    if (
$today_weekday=='2') {$day_type 'tisdag';  $next_day 'måndag'; };
    if (
$today_weekday=='1') {$day_type 'måndag';  $next_day 'tisdag'; };
    if (
$today_weekday=='0') {$day_type 'söndag';  $next_day 'måndag'; };
    if (
$today_weekday=='6') {$day_type 'lördag';  $next_day 'söndag'; };


    
$table_file 'oppettider.txt';
      
$open_hours ot_read_file($table_file,$department);
            
      
$table_file 'oppettider_special.txt';
      
$open_hours_special ot_read_file($table_file,$department);

    switch(
$type) {


        case 
'idag':
        
            foreach(
$open_hours as $row) {
                if(
$day_type == $row[0]) {
                    if(
$row[1]!='Stängt') {
                        
$output '<strong>Idag:</strong> <span style="color: #e57f41;">Öppet</span> '$row[1].'-'.$row[2];
                    } else {
                        
$output 'Idag har vi stängt';
                    }
                }
            }
                

        break;

        case 
'imorgon':

            foreach(
$open_hours as $row) {
                if(
$day_type == $row[0]) {
                    if(
$row[1]!='Stängt') {
                        
$output '<strong>Imorgon:</strong> <span style="color: #e57f41;">Öppet</span> '$row[1].'-'.$row[2];
                    } else {
                        
$output 'Imorgon har vi stängt';
                    }
                }
            }
                
        
        break;
        
        case 
'aterstaende':
    
            foreach(
$open_hours as $row) {
                if(
$day_type == $row[0]) {
                    if(
$row[1]!='Stängt') {
                    
        
                                        
                            foreach(
$open_hours as $row_next) {
                                if(
$next_day == $row_next[0]) {
                                    
$open_hour $row_next[1];
                                }
                            }
                            
                        
$this_hour intval(gmdate('G',strtotime('+0 hour')));
                        
$close_hour intval(substr($row[2],0,2));
                        
$remaining_open_hours $close_hour-$this_hour;
                        
                        
$close_min strtotime($close_hour);
                         
$diff_min $close_min time();
                           
$sek_min $diff_min 60;
                           
$min_min = ($diff_min 60) % 60;
                           
$min_min $min_min 60;
                           
                           
$hour   $remaining_open_hours 1;

                        
                        if (
$remaining_open_hours == 1) {
                            
$output 'Har <span class="orange">öppet</span> i ytterligare '.$min_min.' minuter.';        

                        }
                        
                        elseif (
$remaining_open_hours >= 2) {
                            
                            
$output 'Har <span class="orange">öppet</span> i ytterligare '.$hour.' tim '.$min_min.' min.';            
                        
                        } else {
                        

                        
$open strtotime($open_hour) + 24*60*60;
                          
$diff $open - (time() + (60*60));
                           
$min   = ($diff 60) % 60;
                           
$hour   = ($diff 3600);
                           
$hour   floor($hour);
                                                    
                            if(
$hour == 0){
                            
$output '<span class="orange">Öppnar</span> igen om '.$min.' minuter.';
                            }else{
                            
$output '<span class="orange">Öppnar</span> igen om '.$hour.' tim '.$min.' min.';
                            }
                            
                        }
                        
                    } else {
                        
$output 'b'//idag har vi stängt
                    
}
                }
            }
                
            foreach(
$open_hours_special as $row) {
                if(
$today_date_short == $row[0]) {
                    if(
$row[2]!='Stängt') {
                        
$this_hour intval(gmdate('G',strtotime('+1 hour')));
                        
$close_hour intval(substr($row[3],0,2));
                        
$remaining_open_hours $close_hour-$this_hour;
                        if (
$remaining_open_hours>0) {
                            
$output '<strong>Idag:</Strong> '.$row[1].'<span style="color: #e57f41;">öppet</span> i c:a '.$remaining_open_hours.' timmar  till';    
                        } else {
                            
$output 'a';
                        }
                        
                    } else {
                        
$output 'b';
                    }
                }
            }        
        break; 
bassan är inte uppkopplad   Svara med citatSvara med citat