Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужна помощь в оптимизации
 
 автор: Brandon Hit   (25.01.2006 в 11:23)
 
 

Если, конечно, можно что-то сделать:)
Задача:
Данные, полученные из 3 таблиц, должны быть выведены в таблицу 7x7 следующим образом:
1. Если есть данные в таблице 1 для ячейки ($x+$j,$y+$i) выводим их.
2. Иначе, если есть данные в таблице 3 для ячейки ($x+$j,$y+$i) выводим их.
3. Если нету, выводим данные из 2ой таблицы(если есть) для ячейки ($x+$j,$y+$i)
Входные пар-ры:
Переменные $x и $y задаются пользователем.
Таблицы 1,2 и 3 всегда возвращают не более 1 результата.

<?php
$query2
=mysql_query("SELECT * FROM table1 WHERE y>$y-4 AND y<$y+4 AND x>$x-4 AND x<$x+4 ORDER by y,x ASC");
$query3=mysql_query("SELECT * FROM table2 WHERE y>$y-4 AND y<$y+4 AND x>$x-4 AND x<$x+4 ORDER by y,x ASC");
$query4=mysql_query("SELECT * FROM table3 WHERE y>$y-4 AND y<$y+4 AND x>$x-4 AND x<$x+4 ORDER by y,x ASC");
echo 
'<table>';
for (
$i=-3$i<=3$i++)
 {
 echo 
'<tr>';
 for (
$j=-3$j<=3$j++)
    {
    echo 
'<td>';
    if (!isset(
$next_t1) or ($next_t1=='y')) {$result2=mysql_fetch_array($query2);$next_t1='n';}
  if (!isset(
$next_t2) or ($next_t2=='y')) {$result3=mysql_fetch_array($query3);$next_t2='n';}
  if (!isset(
$next_t3) or ($next_t3=='y')) {$result4=mysql_fetch_array($query4);$next_t3='n';}

    if (
$result2['x']==$x+$j and $result2['y']==$y+$i) {echo $result2['info']; $next_t1='y';}
  if (
$result4['x']==$x+$j and $result4['y']==$y+$i) {echo $result4['info']; $$next_t3=='y';}
    if (
$result3['x']==$x+$j and $result3['y']==$y+$i and (($result3['x']==$result2['x'] and $result3['y']==$result2['y']) or ($result3['x']==$result4['x'] and $result3['y']==$result4['y']))) {$next_t2='y';}
     else if (
$result3['x']==$x+$j and $result3['y']==$y+$i) {echo $result3['info']; $next_t2='y';}
    echo 
'</td>';
    }
 echo 
'</tr>';
 }
echo 
'</table>';
?>

   
 
 автор: cheops   (25.01.2006 в 13:09)   письмо автору
 
   для: Brandon Hit   (25.01.2006 в 11:23)
 

А чем данный код не устраивает?

   
 
 автор: Brandon Hit   (25.01.2006 в 13:55)
 
   для: cheops   (25.01.2006 в 13:09)
 

Да впринципе устраивает:)
Но он слишком долго выполняется...
запутался:)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования