Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблицу из даты.... от 2005.10.10 до 2005.12.12 например. 
:(
    Опции темы
Druidik25
  Дата 1.7.2005, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 27.1.2005
Где: Киев, Украина

Репутация: нет
Всего: нет



Вот, мне понадобилось сделать таблицу, в которой указывают дату 1 и дату 2. И потом рисуется таблица, в которой дата1 - начало и дата 2 - конец. вроде даже работает, если месяц один.... А с датой на форуме подобных тем не нашёл....

Делал так:
Код

$dat1="2005.10.10.";
$dat2="2005.12.12";
for($j=$dat1;$j<=$dat2;$j++){
        echo "<td>".$j."</td>";
    }
echo "</tr>";

Мож подскажете, как правильнее сделать?
PM MAIL ICQ   Вверх
PARROT
Дата 1.7.2005, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Так?
Код

<?php
$dat=array("2005.10.10.","2005.12.12");
for($j=0;$j<=count($dat);$j++){
        echo $dat[$j]."<br/>";
    }

?>



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Druidik25
Дата 1.7.2005, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 27.1.2005
Где: Киев, Украина

Репутация: нет
Всего: нет



В таком случае, по моему, выдаст только 2 значения. А мне нужны все даты от первой, до последней. Хотя щас попробую... Мож и получится. Тоесть если с 2005.10.10 до 2005.12.12 то должно выдать:
2005.10.10 ... 2005.10.11 ... 2005.10.12 ... и так до 2005.12.12. Но у меня такое пока не получилось. Не охота нагружать сервак таблицей из дат и количест дней в месяце.... А наверное придётся....
PM MAIL ICQ   Вверх
PARROT
Дата 1.7.2005, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Считай в массив все свои даты (в базе или в файле), и выведи их.
Все получится.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Druidik25
Дата 1.7.2005, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 27.1.2005
Где: Киев, Украина

Репутация: нет
Всего: нет



Извиняюсь. Я наверное очень плохо обьяснил. У меня есть несколько дат в базе записанные всё равно в каком порядке. Но я хочу построить всё в виде таблицы, в которой будет как-бы календарь и записано в некоторых ячейках количество дат, которое припало на каждый день. Могут быть "пустые дни". Если ставить только даты из базы - "пустые дни" будут пропадать... А хотелось бы видеть весь календарь нормально.

От я и думал, как создать в цыкле список дат, а потом делать запросы в базу и выводить все значения которые приходятся на тот день, на который попало в цыкле.

Может дадите совет, как корректно к дате добавить день, чтобы и месяцы и годы были нормальными, тоесть настоящими. Или как правильно организовать цыкл дат.

Спасибо.
PM MAIL ICQ   Вверх
PARROT
Дата 1.7.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Так тебе нужен календарь?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Mal Hack
Дата 2.7.2005, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Вот код. Для того что тебе надо, до этого кода получаешь в массив список дат из базы И...
Вот тут (до):
Код
     if( $i == 0 && $j >= $count )
      {
       print ("<td".$str.">".$day."</td>\n");
       $day++;
      }

добавляешь условие вывода ссылки к примеру, т.е. тебе надо тпроверить if( in_array( $from_db , $day ) ) (вроде с параметрами не напутал).
Код
<?php

if( date("d") == 1 )
  {  $now_d = date("w");  }
else
  {
   $count = date("w");
   for( $i = date("d"); $i > 1; $i-- )
    {
     if( $count == -1 )
      {  $count = 6;  }
     $count--;
    }
  }

$week = 5;
$day = 1;

if( date("t") == 31 && ( $count == 0 || $count == 6 ) )
  {  $week = 6;  }
if( date("t") == 30 && $count == 0 )
  {  $week = 6;  }
if( date("t") == 28 && $count == 1 )
  {  $week = 4;  }

print ("<table border='0'>\n");

for( $i = 0; $i < $week; $i++ )
  {
   print ("<tr>\n");

   for( $j = 1; $j <= 7; $j++ )
    {
     if( $count == 0 )
      {  $count = 7;  }

     if( $j == 7 || $j == 6 )
      {  $str = " bgcolor='red'";  }
     else
      {  $str = "";  }

     if( $i == 0 && $j >= $count )
      {
       print ("<td".$str.">".$day."</td>\n");
       $day++;
      }

     if( $i != 0 && $day <= date("t") )
      {
       print ("<td".$str.">".$day."</td>\n");
       $day++;
      }

     if( ( $i == 0 && $j < $count ) || ( $i == $week && $day > date("t") ) )
      {  print ("<td></td>\n");  }
    }
   print ("</tr>\n");
  }

print ("</table>\n");

?>


Это сообщение отредактировал(а) Mal Hack - 2.7.2005, 12:31
PM ICQ   Вверх
Druidik25
Дата 2.7.2005, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 27.1.2005
Где: Киев, Украина

Репутация: нет
Всего: нет



PARROT
Цитата
Так тебе нужен календарь?

Да. Шото типа того. Только с даты1 до даты2. А не просто по месяцам. Просто по месяцам у меня получилось, от переход между месяцами - нет.

To: Mal Hack
Календарь крутой. Но: у меня не возникает проблема создать календарь на месяц, а проблема - это переход между месяцами.... Хотя я наверное не до конца разобрал твой пример. Щас доразбираюсь - допишу...
Всёравно Mal Hack, я тебе плюсик уже должен... :-) Только, сори, пока нет 100 постов не могу поставить. А флудить не хочу. Либо пиши, помогу, мож чем смогу... Например, в чём то другом (не ПХП).

Дописываю:
Еслибы календарю, тоесть дате можно было указать ту дату которую я хочу всё бы получилось, типа:
Код

$start_date="2005.10.10";
$x=date("t",$start_date);


Этот параметр бы показал что в 10.2005 месяце $х дней... Это было бы круто. Далее ничего сложного нету....
А то
Код

$x=date("t");

даёт код только на текущий месяц... :-(

Ура, нашёл... В хелпе... Только чуть переделать нуно....
Код

<?
// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date ("l", mktime(0,0,0,7,1,2000));
?>


Это сообщение отредактировал(а) Druidik25 - 2.7.2005, 13:18
PM MAIL ICQ   Вверх
Druidik25
Дата 2.7.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 27.1.2005
Где: Киев, Украина

Репутация: нет
Всего: нет



Я сделал так:
Код

<html>
<BODY>
<?
$start_date='05.07.10';
$end_date='05.08.30';
echo "From ".$start_date." to ".$end_date;

$daypos=strrpos($start_date,".");
$monpos=strpos($start_date,".");
$day1=substr($start_date,$daypos+1,2);
$mon1=substr($start_date,$monpos+1,$daypos-$monpos-1);
$yea1=substr($start_date,0,$monpos);

$daypos=strrpos($end_date,".");
$monpos=strpos($end_date,".");
$day2=substr($end_date,$daypos+1,2);
$mon2=substr($end_date,$monpos+1,$daypos-$monpos-1);
$yea2=substr($end_date,0,$monpos);
$lin[1]='Иванов';
$lin[2]='Петров';
$lin[3]='сидоров';
$prew="";
$ttt=0;
$dat1=0;
$dat2=mktime(0,0,0,$mon2,$day2,$yea2);
$arrays=array(200);
$j=1;
echo "<table width=100 border=1 bordercolor=black cellspacing=0><tr><td>Month:</td>";
while($dat1<=$dat2){
        $dat1=mktime(0,0,0,$mon1,$day1,$yea1);
        $arrays[$j]=date("d",$dat1);
        if($prew!=date("F",$dat1)){
            echo "<td colspan=4>".date("F",$dat1)."</td>";
            $prew=date("F",$dat1);
            for($i=1;$i<=3;$i++){
                $j++;
                $day1++;
                $dat1=mktime(0,0,0,$mon1,$day1,$yea1);
                $arrays[$j]=date("d",$dat1);
            }
        }else{
            echo "<td>&nbsp;</td>";
        }
        $j++;
        $day1++;
        if($day1>date("t",$dat1)){
            $mon1++;
            $day1=1;
            if($mon1>12){
                $mon=1;
                $yea1++;
            }
        }
    }
echo "</tr><tr><td>Dates:</td>";
for($i=1;$i<$j;$i++){
        echo "<td>".$arrays[$i]."</td>";
    }
echo "</tr>";
for($i=1;$i<=3;$i++){
    echo "<tr><td><nobr>".$lin[$i]."</nobr></td>";
    for($k=1;$k<$j;$k++){
        echo "<td>&nbsp;</td>";
    }
    echo "</tr>";
}
echo "</table>";
?>
</BODY>
</html>


Если есть замечания, пишите!
PM MAIL ICQ   Вверх
Mal Hack
Дата 2.7.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Druidik25 @ 2.7.2005, 14:00)
Но: у меня не возникает проблема создать календарь на месяц, а проблема - это переход между месяцами....

Проблем-то smile))
Выведи:
Код
<?php

for( $i = 0 ; $i < 32 ; $i++ )
 { print date( "d.m.Y <bR>" , mktime( 0 , 0 , 0 , date( "m" ) , date( "j" ) + $i , date( "Y" ) ) ); }

?>

Тебе надо просто день не через date забирвать, а через пару date - mktime.

Добавлено @ 15:29
Цитата(Druidik25 @ 2.7.2005, 15:20)
Я сделал так:

Где-то нечто похожее я тут давал smile
Код
<?php

$d_1 = "04.08.2004 10:00";
$d_2 = "04.08.2004 11:00";

$da_1 = explode( " " , $d_1 );
$da_2 = explode( " " , $d_2 );

$dd_1 = explode( "." , $da_1[0] );
$dd_2 = explode( "." , $da_2[0] );

$dt_1 = explode( ":" , $da_1[1] );
$dt_2 = explode( ":" , $da_2[1] );

$r1 = mktime( $dt_1[0] , $dt_1[1] , 0 , $dd_1[1] , $dd_1[0] , $dd_1[2] );
$r2 = mktime( $dt_2[0] , $dt_2[1] , 0 , $dd_2[1] , $dd_2[0] , $dd_2[2] );

print "Date1 - Date2 = " . ( $r2 - $r1 ) . " sec" ;

?>

Тут правда со временем еще smile

Это сообщение отредактировал(а) Mal Hack - 2.7.2005, 15:31
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.