powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод таблицы расписания
15 сообщений из 15, страница 1 из 1
Вывод таблицы расписания
    #32299882
Arisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, я впервые у вас на форуме!
Может ли тут мне кто-то подсказать, как вывести таблицу расписания в броузер?

Вот такая табличка в MySql:

shedule:
user_id
day_ enum('Monday','Tuesday',...)
hour_ enum('8-10','10-12','12-14','14-16','16-18')
duty char(1) //0-busy,1-free

Как составить запрос к серверу, чтоб получить таблицу, которую можно вывести в броузер?

Спасибочки!
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32299896
Arisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такую примерно:
Mon Tue ...
8-10 1 0
10-12 1 1 ...
12-14
14-16
16-18 ...........
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32299925
Arisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или нужно изменить структуру таблицы? Подскажите, пожалуйста!
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32299980
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
php?
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32300051
Arisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, РНР
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32300185
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эххх...

структуру таблиц другую бы.

отдельно - таблица где все дни недели - dayofweek
отдельно таблица пар - pair

и наконец таблица duty

duty
====
dowid
pairid
free

а потом два вложенных цыкла:

первый идет по парам

Код: plaintext
$q =  "select * from pair order by pairstart" ;


а для каждой пары выполняем запрос и организуем цыкл по его результатам

Код: plaintext
1.
2.
3.
4.
5.
$q1 =  "
  select * 
  from duty 
    inner join dayofweek on dayofweek.dowid = duty.dowid 
  where pairid="  + $row[ "pairid" ] +  " 
  order by doworder" ;


и на каждое вхождение в цыкле делаем

Код: plaintext
<tr><td><?=$row1[ "free" ]?></td></tr>


Для красоты первый раз вместо free выводим название дня недели, а тоьлко потом начианем внешний цикл по парам,

а также перед тем как делать второй (вложенный) цыкл выводим начало и конец пары.

К сожалению, это не решение, а только направление думать...

------------------------------
Знатоки пусть поправят синтаксис php и букву ы в слове "Цыкл".
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32300502
Arisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
q1 =  "
   select * 
  from duty 
  inner join dayofweek on dayofweek.dowid = duty.dowid 
  where pairid="  + $row[ "pairid" ] +  " 
  order by doworder" ;


fedd, что ты имел ввиду под $row["pairid"]???
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32300891
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имел ввиду, что во вложенном цикле нужно пробегаться по всем дням недели для текущей пары (которую выбрали в цикле верхнего уровня). для этого каждый раз в запрос нужно подставлять код текущей пары

насколько я помню, при выполнении запроса и при выборке строки ответа при помоши $row = mysql_fetch_row ($result); а к столбцам нужно обращаться как $row["pairid"]. Правильный синтаксис нужно смотреть на http://www.php.net
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32301251
Arisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А все-таки если оставить мою таблицу shedule и разбить ее на 5 таблиц, например order by day_ limit5; limit 5,5; limit 10,5;...?

Допустим, я выведу сначала hour_,duty за понедельник и получится

8-10 1
10-12 .
12-14 .
14-16 .
16-18 .

А потом буду выводить за вторник, но как добавить по ячейке уже в существующих строках???

К примеру у меня есть строки
printf(<tr><td>%s</td><td>%s</td></tr>,
$row1[0],$row1[1])
Можно ли добавить еще ячейки типа этого
printf(<tr><td>%s</td><td>%s</td><td>%s</td></tr>,
$row1[0],$row1[1],$row2[1])

Спасибо
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32301313
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>как добавить по ячейке уже в существующих строках???

по-моему, с серверной стороны, никак.

на сервере придется организовать вложенные циклы, как я сказал, и как ты, возможно, проходил(а) когда училась программированию на алгоритмических языках. пробегаешь по всем парам, а потом для каждой пары рисуешь <tr>, пробегаешь по всем дням недели (для каждого рисуя <td>$val</td>), и в конце перед переходом к следующей паре рисуешь </td>.

это кстати можно сделать и с твоей одной таблицей.

запрос, возвращающий пары -
select hour_ from schedule group by hour

запрос, возвращающий free для данной пары для каждого дня недели -
select free from schedule where hour_ = $currenthour

только как тут порядок пар и дней недели прикрутить я не знаю. все будет в беспорядке.

>А все-таки если оставить мою таблицу shedule и разбить ее на 5 таблиц, например order by day_ limit5; limit 5,5; limit 10,5;...?

так не получится. если уж таким образом хочешь, лучше разбей на столько "таблиц", сколько пар: order by hour_ limit X, и выводи по строкам (по столбцам не знаю я как, и наверно никто не знает).... но не советую. потом придется переделывать.

лучше один день помучиться, зато за 5 минут долететь.

all! Помогите Arishе! ;)
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32301389
Arisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну почему же выдает пустую таблицу, подскажите, какая ошибка в коде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$result1 = mysql_query( "select hour_ from shedule order by hour_" ,$link);
while ($row1 = mysql_fetch_array($result1))
 {
 echo  "<tr>" ;
 $result2 = mysql_query( "select duty from shedule where hour_=$row1[0 ]",$link);
 while ($row2 = mysql_fetch_array($result2))
  {
  echo  "<td>" . "$row2[1 ]". "<td>" ;
  }
  echo  "</tr>" ;
 }


Большое спасибо
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32301404
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как я уже говорил, не помню как там правильно, но надо как-то единообразно

... hour_=$row1[ 0 ]...

...<td>"."$row2[ 1 ]"."<td>"...

либо и там и там 0 либо и там и там 1
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32301429
Arisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
писал:как я уже говорил, не помню как там правильно, но надо как-то единообразно

... hour_=$row1[0]...

...<td>"."$row2[1]"."<td>"...

либо и там и там 0 либо и там и там 1

Хмммм, но ведь время я сравниваю, а вывести надо занятость
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32301524
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Хмммм, но ведь время я сравниваю, а вывести надо занятость

в какой-то момент нужно просто довериться..

или документацию почитать ;)

(в $row[n] попадает только то, что написано после слова select и до where, то есть duty)
...
Рейтинг: 0 / 0
Вывод таблицы расписания
    #32301562
Arisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, спасибо. Это я учту, потом постораюсь больше разобраться в этом
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод таблицы расписания
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]