Вывод времени из БД

peretc001

Новичок
Добрый.

Подскажите, как вывести время записи на прием и покрасить его, если данное время занято?

Часы приема с 10 до 18

Вывести могу:
запрос к БД:
Код:
$set_time = mysql_query("SELECT * FROM visit WHERE spec = 'doctor' ");
   while($row = mysql_fetch_array($set_time)) {
      #вывод занятого времени
   }
Вывод времени приема:
Код:
for($i = 10; $i <= 18; $i++)
echo '<li><input type="radio" name="time" value="'. $i .'">'. $i .'-00</li>';
а как связать эти два запроса, чтоб занятое время было с полем disabled не пойму
и выводилось вида
10, 11, 12(занято), 13, 14, 15, 16(занято), 17, 18

Подскажите куда копать? Спасибо
 
Последнее редактирование:

Yarik

Новичок
Создайте пустой массив. В свиче заполните его результатами из базы. В ключи сохраняйте время.
В фор сделайте проверку if (!empty($array[$i]))checked.
Вроде как-то так.
 

peretc001

Новичок
Не пойму

Я создал массив:
Код:
$time_array = array ('10', '11', '12', '13', '14', '15', '16', '17', '18');
как-то сделал switch
Код:
$set_time = mysql_query(" SELECT * FROM visit WHERE spec = 'doctor' ");
function selectTime($set_time)
{
    switch($set_time)
    {
        case '10':
            return "10 ";
        break;
        
        case '11':
             return "11 ";
        break;
        
         case '12':
              return "12 ";
        break;
         case '13':
            return "13 ";
        break;
        
         case '14':
            return "14 ";
        break;
        
        case '15':
            return "15 ";
        break;
                
        case '16':
             return "16 ";
        break;
                
        case '17':
             return "17 ";
        break;
                
        case '18':
              return "18 ";
        break;
                    
        default:       
            $set_time= " ";
    }
}
как в ключ сохранить время?
 

peretc001

Новичок
Что это так сложно?

всего должно быть 9 строк, 2 из них, например, хранятся в бд
простым способ нельзя вывести 9 строк чтоб две из них (которые есть в базе) были отмечены disabled
 

Yarik

Новичок
ой :)
не в свиче, а в while перепутал. простите )))
 
Последнее редактирование:

Yarik

Новичок
$arr= array();
$set_time = mysql_query("SELECT * FROM visit WHERE spec = 'doctor' ");
while($row = mysql_fetch_array($set_time)) {
$arr[row['время']]=row;
}

for($i = 10; $i <= 18; $i++)
echo '<li><input type="radio" ".(!empty($arr[$i]))?"disabled":""." name="time" value="'. $i .'">'. $i .'-00</li>';

по идеи должно работать :)
 

peretc001

Новичок
спасибо

вроде правильно выдает, если проверить через var_dump(empty($arr[$i]))
но не понял '. (!empty($arr[$i]))?"disabled":" " .'
он 9 раз подряд пишет disabled, скорее всего ошибка или в кавычках или в какой мелочи
Код:
echo '<li><input type="radio" '. (!empty($arr[$i]))?"disabled":"" .' name="time" value="'. $i .'">'. $i .'-00</li>';
 

peretc001

Новичок
а все, решил. Спасибо большое
(empty($arr[$i])?:'disabled')
Код:
$arr = array();
$set_time = mysql_query("SELECT * FROM visit WHERE spec = 'doctor' ");
while($row = mysql_fetch_array($set_time)) {
$arr[$row['time']] = row;
}

for($i = 10; $i <= 18;  $i++) 
echo '<li><input type="radio" '. (empty($arr[$i])?:'disabled') .' name="time" value="'. $i .'">'. $i .'-00</li>';
 

peretc001

Новичок
Можно еще вопрос. Взял календарь с интернета, не могу сделать чтоб активными датами (ссылками) были только будущие даты, сейчас все активны:
Код:
function my_calendar( $fill = array() ) {
  $month_names = array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
  if (isset($_GET['y'])) { $y = $_GET['y']; }
  if (isset($_GET['m'])) { $m = $_GET['m']; }
  if (isset($_GET['date']) AND strstr($_GET['date'],"-")) { list($y,$m) = explode("-",$_GET['date']); }
  if (!isset($y) OR $y < 1970 OR $y > 2037) { $y = date("Y"); }
  if (!isset($m) OR $m < 1 OR $m > 12)         { $m = date("m"); }
  if (isset($_GET['spec'])) { $spec = $_GET['spec']; }
  if ($spec == '') { $spec = '1'; }
 
  $month_stamp = mktime(0,0,0,$m,1,$y);
  $day_count = date("t",$month_stamp);
  $weekday = date("w",$month_stamp);
  if ($weekday == '0') $weekday = '7';
  $start = -($weekday-2);
  $last = ($day_count+$weekday-1) % 7;
  if ($last == '0') { $end = $day_count; } else { $end = $day_count+7-$last; }
  $today = date('m');
 
  $prev = date('?\m=m&\y=Y',mktime (0,0,0,$m-1,1,$y));
  $next = date('?\m=m&\y=Y',mktime (0,0,0,$m+1,1,$y));
  $i = 0;
 
?>
<table border="1" cellspacing="0" cellpadding="2">
    <tr>
        <td colspan="7">
              <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                    <td align="left">
                        <a href="<?php echo $_SERVER['PHP_SELF']; ?><?php echo $prev; ?>">&lt;</a>
                    </td>
                    <td align="center">
                        <?php echo $month_names[$m-1]," ",$y; ?>
                    </td>
                    <td align="right">
                        <a href="<?php echo $_SERVER['PHP_SELF']; ?><?php echo $next; ?>">&gt;</a>
                    </td>
                </tr>
              </table>
        </td>
        </tr>
        <tr>
            <td>Пн</td>
            <td>Вт</td>
            <td>Ср</td>
            <td>Чт</td>
            <td>Пт</td>
            <td>Сб</td>
            <td>Вс</td>
        <tr>
        <?
          
              $now = sprintf("%02d",$d) .'.'. $m .'.'. $y;
          
              for($d = $start; $d <= $end; $d++) {
        
        
        
                if (!($i++ % 7))
                    echo '<tr>';
                      echo '<td align="center">';
                
                    if ($d < 1 OR $d > $day_count) {
                        echo '&nbsp';
                    } elseif (is_array($fill) AND in_array($now, $fill)) {
                        echo '<b><font color="red">'. $d .'</font></b>';



                    } elseif (------------ Вот тут что-то надо, типа $date > ??????????????) {
                              echo '<a href="'. $_SERVER['PHP_SELF'] .'?spec='. $spec .'&amp;date='. sprintf("%02d",$d) .'.'. $m .'.'. $y .'" style="color:green;">'. $d .'</a>';




                    } else { echo $d; }
                      
                  
                
                      echo '</td>';
              
                if (!($i % 7))  { echo '</tr>'; }
              }
              echo '</table>';
      
      }
      my_calendar(array(date('d.m.Y')));
 
Последнее редактирование:

Фанат

oncle terrible
Команда форума
Чтобы сделать активными только будущие, надо выбирать из БД только будущие
 

peretc001

Новичок
Да вот беда в том, что этот Календарь не хранит даты в базе, да это и не надо, просто происходит переход на дату ссылкой ?date=31.07.2017 а из базы уже выбираются записи за этот день, если есть.

Я не пойму куда запихнуть переменную (и как ее описать) которая бы определила сегодняшнюю дату в календаре и сравнила с date(d.m.Y)
 

peretc001

Новичок
А все решил
Код:
if ($d < 1 OR $d > $day_count) {
                        $now = sprintf("%02d",$d) .'.'. $m .'.'. $y;
                        echo '&nbsp';
                    } elseif (is_array($fill) AND in_array($now, $fill)) {
                        echo '<p class="today"><b><font color="red">'. $d .'</font></b><p>'; 
                    } elseif ($now > $date and $m > $today) {
                              echo '<p class="day"><a href="'. $_SERVER['PHP_SELF'] .'?spec='. $spec .'&amp;date='. sprintf("%02d",$d) .'.'. $m .'.'. $y .'">'. $d .'</a></p>';
                    } else { echo '<p class="last_day">'. $d .'</p>'; }
 
Сверху