Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

(php) ошибка при выводе большого массива данных

11K
04 апреля 2006 года
Владимир7771
36 / / 16.03.2006
проблема если выборка из таблицы больше 400 строк explorer пишет невозможно отобразить страницу
причем с сервера выводится больше строк, а с рабочей станции затыкается на меньшем количестве строк
Страницы:
8
10 апреля 2006 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Владимир7771
код ведь проходит без ошибок если Limit 0,200


200 - это не показатель валидности разметки.
Возьми просто встав HTML-код вывода в валидатор и почитай, что там будет написано.

11K
10 апреля 2006 года
Владимир7771
36 / / 16.03.2006
Я просто не вижу ошибку, вот у меня код
вроде рабочий

Код:
?>
<table width="100%" style="margin-left: 2px" margin-right: 2px; margin-bottom: 2px border="1" cellpadding="3" cellspacing="0" class="sx6_big"><tr style="font-weight: bold;">
<td width="30%" >Наименование</td>
<td width="10%">Дополнительно</td>
<td >Фасовка</td>
<td >Производ.</td>
<td >Ед.изм.</td>
<td >Опт.цена</td>
<td >Роз.цена</td>
<td width="15%" >Фирма</td>
<td width="10%" >Телефон</td>
<td>Выбор</td></tr>

<form action="/search/psearch.php" method="POST"><?

 $bufOut = "";
  while ($row = mysql_fetch_array($result))
 {
  $bufOut .=   '<td>'.$row[ptitle].'</td>
         <td>'
.$row[cdata].'</td>
         <td>'
.$row[packaging].'</td>
         <td>'
.$row[producer].'</td>
         <td>'
.$row[type].'</td>  
         <td>'
.$row[price_opt].'</td>
         <td>'
.$row[price_roz].'</td>
        <td>[url="/company/?id='
.$row[id].'"]'.$row[ctitle].'[/url]</td><td>'.$row[phone].'</td>
        <td><input type="checkbox" name="nameId[]" value='
.$row[id_price].' checked>
            </td></tr>'
;
 }
  echo $bufOut;
 echo '</table>';

 ?><div align="right">
<p align="right"><input type=submit name=submit value="Выбрать"></p></div>
 
 </form><?
8
10 апреля 2006 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Владимир7771
Я просто не вижу ошибку, вот у меня код
вроде рабочий


<input type="checkbox" name="nameId[]" value='.$row[id_price].' checked>
Уже ошибка в value. Но, это не критично.
А вот манера написания переменных - $row[id_price] - это грубая ошибка. Транслятор, при такой записи, должен предполагать, что id_price - константа. Надо писать $row['id_price'].

Впрочем, в данной ситуации это тоже не критично.

А на чём обрывается поток? Код в студию!

11K
10 апреля 2006 года
Владимир7771
36 / / 16.03.2006
Код:
?>

<table width="100%" style="margin-left: 2px" margin-right: 2px; margin-bottom: 2px border="1" cellpadding="3" cellspacing="0" class="sx6_big"><tr style="font-weight: bold;">
<td width="30%" >Наименование</td>
<td width="10%">Дополнительно</td>
<td >Фасовка</td>
<td >Производ.</td>
<td >Ед.изм.</td>
<td >Опт.цена</td>
<td >Роз.цена</td>
<td width="15%" >Фирма</td>
<td width="10%" >Телефон</td>
<td>Выбор</td></tr>
<form action="/search/psearch.php" method="POST"><?

$bufOut = "";
while ($row = mysql_fetch_array($result))
{
$bufOut .= '<td>'.$row['ptitle'].'</td>
        <td>'
.$row['cdata'].'</td>
        <td>'
.$row['packaging'].'</td>
        <td>'
.$row['producer'].'</td>
<td>'
.$row['type'].'</td>
<td>'
.$row['price_opt'].'</td>
        <td>'
.$row['price_roz'].'</td>
<td>[url="/company/?id='
.$row['id'].'"]'.$row['ctitle'].'[/url]</td><td>'.$row['phone'].'</td>
    <td><input type="checkbox" name="nameId[]" value='
.$row['id_price'].' checked>
        </td></tr>'
;
}
echo $bufOut;
echo '</table>\n';

?><div align="right">
<p align="right"><input type=submit name=submit value="Выбрать"></p></div>

</form><?

исправил, вывод может обрываться в разных местах строчки причем если убрать
Код:
<table width="100%" style="margin-left: 2px" margin-right: 2px; margin-bottom: 2px border="1" cellpadding="3" cellspacing="0" class="sx6_big"><tr style="font-weight: bold;">
<td width="30%" >Наименование</td>
<td width="10%">Дополнительно</td>
<td >Фасовка</td>
<td >Производ.</td>
<td >Ед.изм.</td>
<td >Опт.цена</td>
<td >Роз.цена</td>
<td width="15%" >Фирма</td>
<td width="10%" >Телефон</td>
<td>Выбор</td></tr>

до доходит до 300 строчки

8
10 апреля 2006 года
mfender
3.5K / / 15.06.2005
Я имел ввиду, что хотелось бы увидеть последние несколько строк, или всё от последнего <tr> в выводе до конца. Может это что-то прояснит...
11K
10 апреля 2006 года
Владимир7771
36 / / 16.03.2006
Цитата:
Originally posted by mfender
Я имел ввиду, что хотелось бы увидеть последние несколько строк, или всё от последнего <tr> в выводе до конца. Может это что-то прояснит...



последняя строка затыкается по середине на символе пробела
компьютер пентиум4 китай шт &nbs

15
10 апреля 2006 года
shaelf
2.7K / / 04.05.2005
Я уже не знаю, мне носом чтоль тыкать? Почему общая конструкция выглядит как:
<table>
<form>
</table>
</form>?
Или это правильно?
8
10 апреля 2006 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Владимир7771
последняя строка затыкается по середине на символе пробела
компьютер пентиум4 китай шт &nbs


Несколько вопросов для разъяснения:
1. Всегда затыкается на этом месте?
2. Что написано в БД в этом поле, на котором затыкается?
3. Тип поля, на котором затыкается.

11K
10 апреля 2006 года
Владимир7771
36 / / 16.03.2006
исправил, действительно ошибку не заметил,
но все равно строчки обрезаются где то посл 200-й
Код:
?>
<form action="/search/psearch.php" method="POST">
<table width="100%" style="margin-left: 2px" margin-right: 2px; margin-bottom: 2px border="1" cellpadding="3" cellspacing="0" class="sx6_big"><tr style="font-weight: bold;">
<td width="30%" >Наименование</td>
<td width="10%">Дополнительно</td>
<td >Фасовка</td>
<td >Производ.</td>
<td >Ед.изм.</td>
<td >Опт.цена</td>
<td >Роз.цена</td>
<td width="15%" >Фирма</td>
<td width="10%" >Телефон</td>
<td>Выбор</td></tr>

<?

$bufOut = "";
while ($row = mysql_fetch_array($result))
{
$bufOut .= '<td>'.$row['ptitle'].'</td>
        <td>'
.$row['cdata'].'</td>
        <td>'
.$row['packaging'].'</td>
        <td>'
.$row['producer'].'</td>
<td>'
.$row['type'].'</td>
<td>'
.$row['price_opt'].'</td>
        <td>'
.$row['price_roz'].'</td>
<td>[url="/company/?id='
.$row['id'].'"]'.$row['ctitle'].'[/url]</td><td>'.$row['phone'].'</td>
    <td><input type="checkbox" name="nameId[]" value='
.$row['id_price'].' checked>
        </td></tr>'
;
}
echo $bufOut;

echo "</table>\n";
?>
<p align="right"><input type=submit name=submit value="Выбрать"></p>

</form><?
11K
10 апреля 2006 года
Владимир7771
36 / / 16.03.2006
Цитата:
Originally posted by mfender
Несколько вопросов для разъяснения:
1. Всегда затыкается на этом месте?
2. Что написано в БД в этом поле, на котором затыкается?
3. Тип поля, на котором затыкается.



затыкается на разных местах, типы полей varchar int и text если при выборке ставить меньше 200
не затыкается никогда

15
10 апреля 2006 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by Владимир7771
затыкается на разных местах, типы полей varchar int и text если при выборке ставить меньше 200
не затыкается никогда


Сколько у тебя выполняеться скрипт? Самый тупой вариант, что мне пришёл в голову - это выбирать по 200, далее их в буфер, следующие 200, опять в буфер... Короче вот такой вот байдой.

8
10 апреля 2006 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Владимир7771
затыкается на разных местах, типы полей varchar int и text если при выборке ставить меньше 200
не затыкается никогда


Ты бы скинул дамп и структуру таблицы... А то мы вокруг-да-около пластуемся без толку...
Давай, в архиве на [email]mfender@mfender.org[/email]

11K
11 апреля 2006 года
Владимир7771
36 / / 16.03.2006
Цитата:
Originally posted by mfender
Ты бы скинул дамп и структуру таблицы... А то мы вокруг-да-около пластуемся без толку...
Давай, в архиве на [email]mfender@mfender.org[/email]



отправил 2 тестовые таблицы и скрипт

8
11 апреля 2006 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Владимир7771
отправил 2 тестовые таблицы и скрипт


Не поверишь: у меня всё это выдало полностью таблицу с 1599 рядами. Нигде ничего не потерялось...

11K
11 апреля 2006 года
Владимир7771
36 / / 16.03.2006
Цитата:
Originally posted by mfender
Не поверишь: у меня всё это выдало полностью таблицу с 1599 рядами. Нигде ничего не потерялось...



не удивлен, дело даже не в выборке, когда добавляешь код в header.htm и запускаешь скрипт с рабочей станции, до места в коде, где формируется таблица, дело даже не доходит... удивляет, что с сервера (os windowsXP ОЗУ 256МБ) выводится информации больше, чем с рабочей станции (win98 озу 32мб)...

наверно у меня дело в настройках php.ini
или httpd.conf
или в компонентах
php-5.0.4-Win32
apache_2.0.54-win32-x86-no_ssl.msi
mysql-5.0.9-beta-win32.zip

8
11 апреля 2006 года
mfender
3.5K / / 15.06.2005
header.htm я не видел, но обрати внимание на очень странные строки, начиная с $id_category = $_POST['rub'];
Что такое $submit и откуда он берётся? Потом, if ("Выбрать" == $submit) - не совсем корректно. Не забывай, что PHP - это не Си... Тогда уж следует писать if ("Выбрать" === $submit), а самое правильное - if ($submit === "Выбрать")

Но, почему он затыкается посреди вывода - не понимаю, хоть застрэлись. Объём не большой, выбирает быстро... Всё должно быть нормально.
11K
11 апреля 2006 года
Владимир7771
36 / / 16.03.2006
самый простой скрипт урезал дальше некуда

Код:
<?
 include "../dbconf.inc.php";
 include "../config.php";
 
 ?>
<head>
        <title>111</title>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
          </head>
<?

 $request = 'SELECT title, cdata,packaging,producer,type,price_opt,price_roz
             FROM delf_price'
;

 $result  = mysql_query($request)or
                    die("There was a MySQL error".mysql_error());
    $nrows  = mysql_num_rows($result);
   
   

    if ($nrows>0) {
    ?>
<table width="100%" style="margin-left: 2px" margin-right: 2px; margin-bottom: 2px border="1" cellpadding="3" cellspacing="0" class="sx6_big"><tr style="font-weight: bold;">
<td width="30%" >Наименование</td>
<td width="10%">Дополнительно</td>
<td >Фасовка</td>
<td >Производ.</td>
<td >Ед.изм.</td>
<td >Опт.цена</td>
<td >Роз.цена</td></tr>
       
    <?             
$bufOut = "";
#while (($row = mysql_fetch_array($result)))
# {
#  $bufOut .= $row['title'].' '.$row['cdata'].' '.$row['packaging'].' '.$row['producer'].' '.$row['type'].' '.$row['price_opt'].' '.$row['price_roz']."\n";
# }
#echo $bufOut;

while ($row = mysql_fetch_array($result))
 {
  $bufOut .=   '<td>'.$row['title'].'</td>
         <td>'
.$row['cdata'].'</td>
         <td>'
.$row['packaging'].'</td>
         <td>'
.$row['producer'].'</td>
         <td>'
.$row['type'].'</td>  
         <td>'
.$row['price_opt'].'</td>
         <td>'
.$row['price_roz'].'</td></tr>';
 }
 
 echo $bufOut;
 
echo '/table>';
 
   } else
        echo "<center><font color='Red'>Нет информации</font></center>

"
;
   
?>


неработает, пытается вывести строчки, опять экран пустой , опять пытается вывести, дергается секунд 10 потом затыкается на какой нибудь строчке посередине

чуть изменить скрипт

Код:
<?
 include "../dbconf.inc.php";
 include "../config.php";
 
 ?>
<head>
        <title>111</title>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
          </head>
<?

 $request = 'SELECT title, cdata,packaging,producer,type,price_opt,price_roz
             FROM delf_price'
;

 $result  = mysql_query($request)or
                    die("There was a MySQL error".mysql_error());
    $nrows  = mysql_num_rows($result);
   
    if ($nrows>0) {
   
$bufOut = "";
while (($row = mysql_fetch_array($result)))
 {
  $bufOut .= $row['title'].' '.$row['cdata'].' '.$row['packaging'].' '.$row['producer'].' '.$row['type'].' '.$row['price_opt'].' '.$row['price_roz']."\n";
 }
echo $bufOut;
 
   } else
        echo "<center><font color='Red'>Нет информации</font></center>

"
;
   
?>

убрал табличный вид работает за доли секунды, как это объяснить?
15
11 апреля 2006 года
shaelf
2.7K / / 04.05.2005
Возможно я и придираюсь, но
Цитата:
echo '/table>';

11K
11 апреля 2006 года
Владимир7771
36 / / 16.03.2006
Цитата:
Originally posted by shaelf
Возможно я и придираюсь, но



исправил, все равно дергается страница

11K
11 апреля 2006 года
Владимир7771
36 / / 16.03.2006
Цитата:
Originally posted by Владимир7771
исправил, все равно дергается страница


Посоветовали:
Это локальная машина под Windows и Apache 2.x? Если да, то поставьте Apache 1.3.x.

12
11 апреля 2006 года
alekciy
3.0K / / 13.12.2005
Цитата:
Originally posted by Владимир7771
Посоветовали:
Это локальная машина под Windows и Apache 2.x? Если да, то поставьте Apache 1.3.x.


У меня локальная машина под WinXP Pro & SP2 + Apache 2.0.52 + PHP 4.3.2 ни когда подобных глюков не видел хотя пару раз приходилось систему зацикливать через бесконечный цикл! :D
Хотя конечно у меня ОЗУ много...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог