Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Постоянная подгрузка страницы


Автор: Areostar 14.7.2011, 10:26
Сама страница работает ноимально. подключаю к ней скриптик который должен сформировать на странице список(на основе бд).

   Запускаю, вуроде страница появляется и список на месте, но загрузка продолжается! и страница в конце концов зависает. Может это с локолхостом проблема(xampp) или что!

   Скриптик простой совсем но я его приведу здесь:
Код
 <?php

         include("db_connect.php");
         
         $resut_array = Array();
         $sub_result_array = Array();
         
         $main_count = 0;
         $sub_count = 0;         
        
         function getInformation($lang)
         {
             global $result_array;
             global $main_count;
             
             $_query ="Select * From `main_menu_table` Where `langua` = '$lang' Order By `order`";
             $result = mysql_query($_query) or die("Statement isn't complited");
             
             $main_count = mysql_num_rows($result);
             echo"$main_count -";
             while ($record = mysql_fetch_array($result))
               {   $result_array[] = $record;   }
         }
         
         function sub_getInformation($lang, $categ)
         {
             global $sub_result_array;
             global $sub_count;
             
             $_query ="Select * From `sub_menu_table` Where `langua` = '$lang' && `category` = '$categ' Order By `order`";
             $result = mysql_query($_query) or die("Statement isn't complited");
             
             $sub_count = mysql_num_rows($result);
             
             while ($record = mysql_fetch_array($result))
               {   $sub_result_array[] = $record;   }
         }
          
         function print_menu($lang)
         {
             global $result_array;
             global $sub_result_array;
             
             global $main_count;
             global $sub_count;
             
             getInformation($lang);
             echo"$main_count <ul>";
             for($i = 0; i < $main_count; $i++)
             {
                 $row = $result_array[$i];
                 $capture = $row["text"];
                 $categ = $row["category"];
                 
                 sub_getInformation($lang, $categ);
                 
                 if($sub_count == 0)
                 {
                     echo"<il><a>$capture</a></il><br />";
                 }
                 else if($sub_count != 0)
                 {
                     echo"<il><a>$capture</a><ul>";
                     for($j = 0; $j < $sub_count; $j++)
                     {
                         $_row = $sub_result_array[$j];
                         $_capture = $_row["text"];

                         echo"<il><a>$capture</a></il><br />";
                     }
                     echo"</ul></il>";
                 }
             }
             echo"</ul>";
         }
     ?>

Автор: Guedda 14.7.2011, 10:36
Ставь точки останова (допустим, exit()) после каждой строчки (нативно), и смотри, где будет скрипт останавливаться, а где будет продолжать грузиться. Строчка выше точки и будет проблемной строкой. Тогда здесь конкретизируешь, и мы рассмотрим проблему. А может и ты ее сам найдешь. А еще сделай подсветку нормальной.

Автор: NFL 15.7.2011, 13:02
Код

error_reporting(E_ALL);
ini_set('display_errors', 1);


Код

 $result = mysql_query($_query) or die(mysql_error());


А дальше смотреть ошибки пхп.
Никаких exit; в принципе не надо

Добавлено через 2 минуты и 4 секунды
global $result_array;
global $sub_result_array;
global $main_count;
global $sub_count;

в каждой функции это не нужно, они объявлены ВНЕ функций, т.е., в глобальной области видимости.

Ну и ттак далее ;)

Автор: vencendor 18.7.2011, 09:07
Не очень правильно так использовать глобальные переменные, чревато логическими ошибками. С одной из них мы сейчас наверное и имеем дело. 

Сделайте вывод переменных ($main_count $result_array) после запуска функции через print_r() и посмотрите если все нормально. 

                 
Код

    for($j = 0; $j < $sub_count; $j++)
                     {
                         $_row = $sub_result_array[$j];
                         $_capture = $_row["text"];

                         echo"<il><a>$capture</a></il><br />";
                     }
                     echo"</ul></il>";


тут по логике нужно выводить переменную $_capture а не $capture, иначе получается что выводится родительская категория еще раз. 
это 
 echo"<il><a>$capture</a></il><br />";
на 
 echo"<il><a>$_capture</a></il><br />";


в остальном вроде все хорошо. Вопрос в структуре данных которые мы получаем из mysql 

Автор: NFL 18.7.2011, 16:05
vencendor, глобальные переменные это вообще не очень правильно, как по мне smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)