Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: проблема с выводом таблицы календаря  (Прочитано 13375 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Arina
Гость
« : 26-05-2004 12:21 » 

Здравствуйте все!
Помогите, пожалуйста, разобраться - где же ошибка? Вроде все верно:
Код:

function display_calendar)$month,$year,$mode:
  |
  $cal = " ";
  $cal .= )$mode == 1 ? "<table border=0>
                                     <tr><td>".display_calendar)$prev_month,$prev_year,0:.
                                     "</td><td rowspan=2 align=\"right\">".
                                     "<table border=1 class=\"cal\" rules=\"all\" cellspacing=0px          bordercolor=#cccccc>"
                                  {  "<table class=\"small\" rules=\"all\" bordercolor=#cccccc cellspacing=0px>":;
 
  /////////////////////////////////////
  вывод конкретно календаря
  /////////////////////////////////////
 
  $cal .= )$mode == 1 ?  "</td></tr>
                          <tr>
                          <td align=\"left\">display_calendar)$next_month,$next_year,0:
                          </td></tr></table>"
                      {   " ":;
 
  echo $cal;
 
  "
 


Тут проблема только в коде HTML, как мне думается. Строится таблица, где в первой строке в первой ячейке находится календарь на предыдущий месяц, и большая ячейка на 2 ряда для основного календаря.
Во второй строке в ячейке находится календарь на следующий месяц.
Если вместо употребленных сейчас в коде display_calendar($prev_month,$prev_year,0) поставить например просто слово "agb", то таблица формируется верно. А вот с употреблением функции - календарик "выскакивает" извне таблицы наверх..
 
Что исправить?
 
 
Спасибо
Записан
Arina
Гость
« Ответ #1 : 26-05-2004 12:27 » new

Напишу попонытней:

Код:

function display_calendar)$month,$year,$mode:
  |
  $cal = " ";
  $cal .= )$mode == 1 ?
          "<table border=1 rules=\"all\">
          <tr><td>" .display_calendar)$prev_month,$prev_year,0:.
          "</td><td rowspan=2 align=\"right\">".
          "<table border=1 class=\"cal\" rules=\"all\" cellspacing=0px>"
                       
          {  "<table class=\"small\" rules=\"all\" >":;

  /////////////////////////////////////

  $cal .= /*вывод календаря собственно*/

  ///////////////////////////////////////////////////

  $cal .= )$mode == 1 ?  
          "</td></tr>
          <tr>
          <td align=\"left\">display_calendar)$next_month,$next_year,0:
          </td></tr></table>"
         
        {   " ":;

  echo $cal;

  "
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #2 : 26-05-2004 12:40 » 

Обрати внимание на выделеную мной строку. Ты вызов функции вписала как стринг.
Цитата: Arina
Напишу попонытней:

Код:

function display_calendar)$month,$year,$mode:
  |
  $cal = " ";
  $cal .= )$mode == 1 ?
          "<table border=1 rules=\"all\">
          <tr><td>" .display_calendar)$prev_month,$prev_year,0:.
          "</td><td rowspan=2 align=\"right\">".
          "<table border=1 class=\"cal\" rules=\"all\" cellspacing=0px>"
                       
          {  "<table class=\"small\" rules=\"all\" >":;

  /////////////////////////////////////

  $cal .= /*вывод календаря собственно*/

  ///////////////////////////////////////////////////

  $cal .= )$mode == 1 ?  
          "</td></tr>
          <tr>

          <td align=\"left\">".display_calendar($next_month,$next_year,0)."
         
Код:
</td></tr></table>"
         
        {   " ":;

  echo $cal;

  "
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Arina
Гость
« Ответ #3 : 26-05-2004 12:44 » 

Спасибо за замечание, но не это является ошибкой. В данном случае я просто проверяла как он выведет это как стринг - и тогда таблица нормаьно выводиться.
А если как-раз вставить вызов функции, то получаемый календарик выскакивает из общей таблицы. Ума не приложу - почему так? :new_shot:
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #4 : 26-05-2004 12:50 » 

Ты неправильно формируеш ХТМЛ. У тебя при выводе не закрываются какие то из тегов. Если я внимательно посмотрел, то в случае с $mode != 1 у тебя таблица открывается, но не закрывается.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Arina
Гость
« Ответ #5 : 26-05-2004 12:52 » 

Цитата: MOPO3
Ты неправильно формируеш ХТМЛ. У тебя при выводе не закрываются какие то из тегов


хмммм, да, мне тоже думается что-то с html. Но никак не врублюсь.
Скорей всего, именно в вызове мелкой таблички проблема...?
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #6 : 26-05-2004 12:53 » 

Цитата: Arina
Цитата: MOPO3
Ты неправильно формируеш ХТМЛ. У тебя при выводе не закрываются какие то из тегов


хмммм, да, мне тоже думается что-то с html. Но никак не врублюсь.
Скорей всего, именно в вызове мелкой таблички проблема...?


Так и есть, смотри мой пост выше
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Arina
Гость
« Ответ #7 : 26-05-2004 13:41 » 

Цитата: MOPO3
Цитата: Arina
Цитата: MOPO3
Ты неправильно формируеш ХТМЛ. У тебя при выводе не закрываются какие то из тегов


хмммм, да, мне тоже думается что-то с html. Но никак не врублюсь.
Скорей всего, именно в вызове мелкой таблички проблема...?


Так и есть, смотри мой пост выше



Извиняюсь, нет вылетел ненадолго...


Да нееет.
Короче, проблема такая:

если делаю:

<table>
<tr><td>some_tekst</td>
<td rowspan=2>big calendar
</tr>

<tr><td>some_tekst_2</td></tr>
</table>

то строится как надо

Если же вместо , например, some_tekst, вставить ". function(..)."
то вызываемая этой функцией табличка календаря вылетает из своей ячейки...

Во
Записан
Arina
Гость
« Ответ #8 : 26-05-2004 14:41 » 

Цитата: MOPO3
Ты неправильно формируеш ХТМЛ. У тебя при выводе не закрываются какие то из тегов. Если я внимательно посмотрел, то в случае с $mode != 1 у тебя таблица открывается, но не закрывается.


Серьезно? Спасибо, сейчас посмотрю.

А я думала, что не срабатывает конструкция
Код:


$cal .= )$mode == 1: ? "<table border=0>
                                     <tr><td>".
                               display_calendar)$prev_month,$prev_year,0:.
                                "</td><td rowspan=2 align=\"right\">".
                                "<table border=1 class=\"cal\" rules=\"all\">"
                       
             { "<table class=\"small\" rules=\"all\">";


Че не так? Вроде ясен смысл... Если $mode есть '1', то делай большую таблу. Но я ведь и передаю '1'
Записан
Skubent
Гость
« Ответ #9 : 26-05-2004 16:29 » 

Arina, а ничего, что у тебя функция при mode=1 рекурсивная получается ?
Записан
Arina
Гость
« Ответ #10 : 26-05-2004 17:01 » 

Цитата: Skubent
Arina, а ничего, что у тебя функция при mode=1 рекурсивная получается ?


Не, ничего:) Скорее даже круто получается:)

Ну а ошибка нашлась. Блин, весь день промучилась. Короче, там функция выводя календаря присваивалась в переменную, которая потом выводилась снова. Получалось масло масленое Улыбаюсь

Skubent, может ты примерно это и имел в виду?
Записан
Skubent
Гость
« Ответ #11 : 27-05-2004 06:59 » 

Arina, не примерно, а именно это. Золотое правило php - вывод в документ в теле функции лучше не применять. И рекурсия не так уж и хороша - язык-то интерпретируемый.
Записан
Arina
Гость
« Ответ #12 : 27-05-2004 08:12 » 

Цитата: Skubent
Arina, не примерно, а именно это. Золотое правило php - вывод в документ в теле функции лучше не применять. И рекурсия не так уж и хороша - язык-то интерпретируемый.


Спасибо, учту на будущее  Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines