Файл index.php
require_once 'include/design.php'; // храним куски дизайна
require_once 'include/config.php';
write_header();
// создание массива дня недели и даты для вывода в шапке и запоминания для следующих вычислений
$names = array("Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб");
//для подписывания дней недели при выводе
$days_name = array(); $days_date = array(); // обнуляем массивы
$k = 0;
$iddata = 0;
while ($k < 7){
//выводим ближайшие 7 рабочих дней без учета выходных; выводим начиная с текущего (по возможности) дня.
$iday = strtotime ('+'.$iddata.' day');
if (!((date('w', $iday) == '0') OR (date('w', $iday)== '6'))){
//если не воскресенье и не суббота (выходные дни)
$days_name[] = $names[date('w', $iday)];
//получаем краткое название дня недели из $names
$days_date[] = date('d.m', $iday);
// запоминаем краткую дату дня недели (без года)
$k++;
}
$iddata++;
}
echo '<h2>Запись на прием.</h2><hr />';
echo '<p>Для того, чтобы записаться на прием, совершите ряд действий:</p>';
echo '<ol>
<li><p>Выберите врача, к которому Вы хотели бы попасть на прием, и посмотрите ближайщие доступные дни.</p></li>
<li><p>Выберите время приема, и перейдите по ссылке к регистрационной анкете</p></li>
<li><p>Правильно заполните поля анкеты и отправьте свои данные. В случае успешной записи вы увидите сообщение.</p></li>
</ol>';
echo '<table class="pure-table-bordered pure-table">
<thead>
<tr><th>ФИО</th><th ROWSPAN="2">Каб.</th>';
for ($i = 0; $i<=6; $i++)
echo '<th>'.$days_name[$i].'</th>';
echo '</tr><tr><th>должность</th>';
for ($i = 0; $i<=6; $i++)
echo '<th>'.$days_date[$i].'</th>';
echo '</tr></thead><tbody>';
$q = db_query('SELECT * FROM doctors');
$i = 1;
while ($row = mysql_fetch_array($q, MYSQL_ASSOC)) {
write_rasp($row, $i);
++$i;
}
echo "</tbody></table>";
write_footer();
// печать новой строки в таблице-расписании
function write_rasp($row, $id)
{
// сначала печатаем номер, ФИО, должность, кабинет
echo '<tr>
<td><strong>'.$row['d_fio'].'</strong><br />'.$row['d_post'].'</td>
<td>'.$row['d_cabinet'].'</td>';
// затем печатаем расписание, начиная с сегодня
$k = 0;
$iddata = 0;
while ($k < 7){
$iday = strtotime ('+'.$iddata.' day');
$iddata++;
if ((date('w', $iday) == '0') OR (date('w', $iday)== '6'))
continue;
$k++;
$wday = date('Y-m-d', $iday);// переводим новую дату в читабельный вид
$WDay = getdate($iday); // разбиваем дату на составляющие для определения четности/нечетности дня
// запоминаем нужное расписание в зависимости от четности дня для того,
// чтобы на основе этих данных и запроса об исключении этого дня
// вывести доступные часы
if ($WDay['mday'] % 2 == 0) {
$rasp_begin = $row['d_even_b'];
$rasp_end = $row['d_even_e'];
} else {
$rasp_begin = $row['d_odd_b'];
$rasp_end = $row['d_odd_e'];
}
$t_b_hour = get_hour($rasp_begin);
$t_e_hour = get_hour($rasp_end);
$q_hours = db_query('SELECT oh_hour, oh_id, oh_del FROM option_hour WHERE oh_del = false');
$rasp = ''; // текст блока ссылок на расписание
while ($hours = mysql_fetch_array($q_hours, MYSQL_BOTH))
{
// если попадает в диапозон графика работы
$oh_hour = get_hour($hours['oh_hour']);
$oh_min = get_minute($hours['oh_hour']);
if (($oh_hour >= $t_b_hour) AND ($oh_hour < $t_e_hour))
{
$q_zapis = db_query("SELECT * FROM schedule WHERE sh_doc = {$row['d_id']} AND sh_day = '{$wday}' AND sh_oh = {$hours['oh_id']}");
if (mysql_num_rows($q_zapis) == 0)
$rasp = $rasp."<a class='zap_a' href = 'register.php?doc={$row['d_id']}&day={$iddata}&hour={$hours['oh_id']}'>{$oh_hour}:{$oh_min}</a><br />";
else
$rasp = $rasp.'Занято <br />';
}
}
// если не назначено расписание на этот день по причине отсутствия записи в этот день
echo '<td>'.$rasp.'</td>';
}
echo '</tr>';
}
это php форма вызовы списка врачей, где выводится ФИО/кабинет/должность/
А это форма регистрации на прием к врачам
Файл register.php
session_start();
require_once 'include/design.php';
require_once 'include/config.php';
write_header();
$doc = str_clear($_GET["doc"]);
$day = str_clear($_GET["day"]);
$hour = str_clear($_GET["hour"]);
settype($hour, "int");
settype($doc, "int");
settype($day, "int");
$iday = strtotime ('+'.($day-1).' day');
$day = date('Y-m-d', $iday);
if (!isset($doc) OR !isset($day) OR !isset($hour)) {
echo write_url_error('Ссылка больше не действительна. Обратитесь пожалуйста к администратору ');
exit;
}
// проверка что такой записи еще нет, что она вообще возможна
$q = db_query("SELECT * FROM schedule WHERE sh_doc = {$doc} AND sh_day = '{$day}' AND sh_oh = {$hour}");
if (mysql_num_rows($q) > 0){
echo write_url_error('На данное время уже есть запись. Попробуйте другое время.');
exit;
}
// проверка что такая дата разрешена
// запрос имени доктора, вывод этих данных на экран
$q =db_query("SELECT * FROM doctors WHERE d_id = {$doc}");
if (mysql_num_rows($q) == 0){
echo write_url_error('Внутренняя ошибка, попробуйте еще раз.');
exit;
}
$row = mysql_fetch_array($q, MYSQL_ASSOC);
$WDay = getdate(strtotime($day));
// разбиваем дату на составляющие для определения четности/нечетности дня
// запоминаем нужное расписание в зависимости от четности дня для того,
// чтобы на основе этих данных и запроса об исключении этого дня
// вывести доступные часы
if ($WDay['mday'] % 2 == 0) {
$rasp_begin = $row['d_even_b'];
$rasp_end = $row['d_even_e'];
} else {
$rasp_begin = $row['d_odd_b'];
$rasp_end = $row['d_odd_e'];
}
// конец блока проверки исключения на этот день
$t_b_hour = get_hour($rasp_begin);
$t_e_hour = get_hour($rasp_end);
$q_hours = db_query("SELECT oh_hour, oh_id FROM option_hour WHERE oh_id = {$hour} AND oh_del = false");
if (mysql_num_rows($q_hours) == 0){
echo write_url_error('Внутренняя ошибка, попробуйте еще раз.'); exit;
}
$hours = mysql_fetch_array($q_hours, MYSQL_BOTH);
$oh_hour = get_hour($hours['oh_hour']);
$oh_min = get_minute($hours['oh_hour']);
if (!(($oh_hour >= $t_b_hour) AND ($oh_hour < $t_e_hour))){
echo write_url_error('На это время нельзя зарегестрироваться'); exit;
}
// получаем данные формы, если форма была отправлена
if (!empty($_POST['sb'])){
$a_fio = str_clear($_POST['fio']);
$a_phone = str_clear($_POST['phone']);
$a_email = str_clear($_POST['email']);
$a_day = str_clear($_POST['day']);
$a_mon = str_clear($_POST['mon'])+1;
$a_year = str_clear($_POST['year']);
$a_pseria = str_clear($_POST['pseria']);
$a_pnumber = str_clear($_POST['pnumber']);
$a_errors = '';
// проверяем правильность заполнения полей
if(empty($a_fio))
$a_errors['fio'] = 'Это обязательное поле';
if(empty($a_day) OR empty($a_mon) OR empty($a_year))
$a_errors['birthday'] = 'Это обязательное поле';
if (!(checkdate($a_mon, $a_day, $a_year)))
$a_errors['birthday'] = 'Несуществующая дата';
if (mktime(0, 0, 0, $a_mon, $a_day, $a_year) <= mktime(0, 0, 0, 1, 1, 1914)) {
$a_errors['birthday'] = 'Некорректная дата';
}
if (mktime(0, 0, 0, $a_mon, $a_day, $a_year) >= strtotime("now")) {
$a_errors['birthday'] = 'Некорректная дата';
}
if(empty($a_phone))
$a_errors['phone'] = 'Это обязательное поле';
if(empty($a_pseria)) $a_errors['pseria'] = 'Это обязательное поле';
elseif (!(is_numeric($a_pseria) AND (fmod($a_pseria, 1) == 0)))
$a_errors['pseria'] = 'Поле должно содержать только цифры';
if(empty($a_pnumber)) $a_errors['pnumber'] = 'Это обязательное поле';
elseif (!(is_numeric($a_pnumber) AND (fmod($a_pnumber, 1) == 0)))
$a_errors['pnumber'] = 'Поле должно содержать только цифры';
if (!($a_email == '')){
if(!strings_isemail($a_email))
$a_errors['email'] = 'Неверно введен e-mail';
}
// если не было ошибок - добавляем в бд
if(!$a_errors){
// чистим данные
mysql_query("INSERT INTO schedule (sh_doc, sh_day, sh_oh, sh_fio,sh_birthday, sh_phone, sh_email, sh_pseria, sh_pnumber) VALUES ( {$row['d_id']},'{$day}', {$hours['oh_id']},'{$a_fio}', '".date("Y-m-d", mktime(0, 0, 0, $a_mon, $a_day, $a_year))."','{$a_phone}','{$a_email}','{$a_pseria}','{$a_pnumber}')");
write_success($a_fio, $a_day, $a_mon, $a_year, $a_phone, $a_email, $a_pseria, $a_pnumber, $row, $oh_hour, $oh_min);
}
else
write_form($a_fio, $a_day, $a_mon, $a_year, $a_phone, $a_email, $a_pseria, $a_pnumber, $a_errors);
}
else
{
write_form($a_fio, $a_day, $a_mon, $a_year, $a_phone, $a_email, $a_pseria, $a_pnumber, $a_errors);
}
Ну, если переходить по адресу register.php, то ничего не происходит, страница пустая получается.
пользователь увидит таблицу всех врачей по адрессу index.php, а так же ссылки, перейдя по которым он сможет записаться на прием. Ну что он увидел список врачей и их как-то нужно вести в бд, которую я создал ранее и которую видно на скринах, а вот как внести мне этих врачей в бд я не знаю, даже не знаю как верно выполнить запрос((( Может еще какие данные нужны?
Отредактированно mob112 (14.04.2015 12:00:45)