Вывод данных в ячейку таблицы, где пересекаются столбец и строка

kaant

Новичок
Вывод данных в ячейку таблицы, где пересекаются столбец и строка

Здравствуйте!
Я начал недавно изучать php. Чтобы как-то совершенствовать познания в php я ставлю перед собой задачку сделать то-то или то-то на пхп... в этот раз поставил довольно интересную задачку, которую не получается решить... нужно сформировать таблицу, в которой вверху (слево направо) идет время (например, 12.00, 13.00, 14.00 и т.д. до 20.00), а слева (сверху-вниз) идет дата (например, 13.04.08, 14.04.08 и т.д.), а на пересечении строки с датой и столбца со временем нужно выводить, например, какое-нибудь слово... причем, если в БД дата или время отсутствует, то ечейка должна оставаться пустой...

вот, что получилось у меня http://fotki.yandex.ru/users/kaant2007/view/43481/

я понимаю, что нужно как-то сделать проверку на соответствие даты и времени, которые находятся в БД, но пока не пойму как...

время я вывожу таким кодом:
PHP:
for($i=0; $i<=8; $i++)
 {
  $time = 12 + (1 * $i).".00";
  echo "<td>$time</td>";
 }
дату я вывожу таким кодом:
PHP:
for($i=0; $i<=6; $i++)
 { 
  $t = time() + ($date + (86400 * $i));
  $tomorrow = date("d.m.Y",$t);
  echo "<tr><td>$tomorrow</td></tr>";
 }
может быть нужно использовать массивы?
 

Армян

Новичок
мдя... двумерный массив я думаю =) первый ключ дата, второй время =)
 

kaant

Новичок
а можешь подсказать как? а то я с массивами пока что на "Вы"! :) че куда там подставлять хз :)
 

kaant

Новичок
сенкс, почитаю :)

-~{}~ 14.04.08 21:07:

не, че-то не получается :( хелп :)
 

kaant

Новичок
ну вот так пытаюсь сравнивать:
PHP:
$getdata = mysql_query("SELECT * FROM edit_time WHERE login='".$_SESSION['login']."'",$db);
$getdata_array = mysql_fetch_array($getdata);

echo "<table width='500px' border='1'><tr><td>&nbsp;</td>";

if(mysql_num_rows($getdata) != 0)
 {
   for($i=0; $i<=8; $i++)
   {
  $time2 = 12 + (1 * $i).".00";
  $arr_time = array ("$tt"=>"$i","$time"=>"$time2");
  echo "<td>$arr_time[$time]</td>";
 }
 for($d=0; $d<=6; $d++)
 { 
  $t = time() + ($date + (86400 * $d));
  $tomorrow2 = date('d.m.Y',$t);
  $arr_date = array("$dt"=>"$d","$tomorrow"=>"$tomorrow2");
  echo "<tr><td>$arr_date[$tomorrow]</td></tr>";
 }
echo "<tr>";
  if($arr_time[$time][$tt] = $getdata_array['time'] and $arr_date[$tomorrow][$dt] = $getdata_array['tomorrow'])
    {
     echo "<td>ggg</td>";
    }
	else
	{
	echo "Fuck!!!";
	}

  echo "</tr></table>";
  }
 else
 {
  echo "В данный момент время не запланировано";
 }
 

Beavis

Banned
ну и жесть ты написал.. ужас))

данные в таблице БД хранятся в виде типа такого?
word VARCHAR
date DATETIME
?

ну смотри:
нужно чтоб после извлечения данных из БД получился примерно такой массив:
PHP:
$events = array(
   "2008-04-01" => array (
      "12:00" => "word1",
      "17:00" => "word2"
   ),
   "2008-04-05" => array (
      "11:00" => "word3"
   )
)
и потом когда выводишь данные в ячейку с датой $date и временем $time смотришь есть ли в массиве элемент $events[$date][$time] и если есть - выводишь
 

kaant

Новичок
попытался сделать вот так:
PHP:
while($getdata_array = mysql_fetch_array($getdata))
  {
   $arr = array("$tomorrow"=> array("$time2"=>"$time"));
    if($arr[$tomorrow][$time2] == $getdata_array['tomorrow']['time'])
    {
     echo "<td>qqq</td>";
    }
	else
	{
	echo "Fuck!!!";
	}
	}
но всеравно не работает :(
дело в том, что у меня время статично, а дата динамична...
 

Beavis

Banned
kaant
а ты по-русски вообще читать умеешь? или тебе плевать что тебе пишут?
 

kaant

Новичок
не злитесь! :) Beavis, перечитал еще раз твое сообщение... ща буду думать сново :)

-~{}~ 15.04.08 17:36:

нет, все-таки че-то я не понимаю... :(
 

dimagolov

Новичок
kaant, допустим у тебя есть 3 значения:
PHP:
$date= "2008-04-01";
$time= "12:00";
$value= "word1";
напиши как ты ими заполнишь ассоциативный двумерный массив, как предложил Beavis
 

kaant

Новичок
дело в том, что у меня дата динамична, т.е. вчерашний день "уходит", а на его место становится сегодняшний... а время статично, т.е. остается без изменений... когда делаю проверку на соответствие значений в таблице БД и переменной $time и $tomorrow, то условие if() не выполняется... делаю вот так:
PHP:
if($tomorrow == $getdata_array['tomorrow'] and $time == $getdata_array['time'])
Далее, делал массив как советовал Beavis, но тоже как-то не получается... делал вот так:
PHP:
$event = array("$data"=> array("$time[1]"=>"fff","$time[2]"=>"fff", "$time[3]"=>"fff","$time[4]"=>"fff"));
где
PHP:
$data = $getdata_array['tomorrow']
обидно, что понять не могу :(

-~{}~ 15.04.08 17:47:

2dimagolov, ну наверное так:

PHP:
$massiv = array(
         "$date" => array(
         "$time" =>"$value"));
-~{}~ 15.04.08 17:49:

Да, но когда делаю
PHP:
print_r($massiv)
, выдает примерно такое:
PHP:
array([]=> array[12:00]=>array[word1]);
или как-то так...
 

dimagolov

Новичок
ты не должен массивы переинициализировать если они существуют это раз. потому что при этом все что было раньше стирается.
и перестань писать глупости вида "$date", ты же просто переменные можешь пользовать без строк.
 

kaant

Новичок
т.е. без кавычек? ок, учту...

ну вот еще один пример моего корявого :) кода:

PHP:
 do 
  {
  if($tomorrow == $getdata_array['tomorrow'] and $time == $getdata_array['time'])
   {
     $event = array("$tomorrow"=> array("$time"=>"fff","$time"=>"fff","$time"=>"fff","$time"=>"fff"));
     foreach($event as $data)
      {
        echo "$data[$tomorrow][$time]";
      }
   }
   }
  while($getdata_array = mysql_fetch_array($getdata));
 

dimagolov

Новичок
kaant, забудь свой код пока, сделай правильно то простейшее, что я от тебя прошу. это нужно тебе а не мне.
 

kaant

Новичок
ок, если правильно понял, то вот:
PHP:
$massiv = array( 
         $date => array( 
         $time => $value));
 

dimagolov

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