(php) ошибка при выводе большого массива данных
причем с сервера выводится больше строк, а с рабочей станции затыкается на меньшем количестве строк
код ведь проходит без ошибок если Limit 0,200
200 - это не показатель валидности разметки.
Возьми просто встав HTML-код вывода в валидатор и почитай, что там будет написано.
вроде рабочий
<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><?
Я просто не вижу ошибку, вот у меня код
вроде рабочий
<input type="checkbox" name="nameId[]" value='.$row[id_price].' checked>
Уже ошибка в value. Но, это не критично.
А вот манера написания переменных - $row[id_price] - это грубая ошибка. Транслятор, при такой записи, должен предполагать, что id_price - константа. Надо писать $row['id_price'].
Впрочем, в данной ситуации это тоже не критично.
А на чём обрывается поток? Код в студию!
<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><?
исправил, вывод может обрываться в разных местах строчки причем если убрать
<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 строчки
Я имел ввиду, что хотелось бы увидеть последние несколько строк, или всё от последнего <tr> в выводе до конца. Может это что-то прояснит...
последняя строка затыкается по середине на символе пробела
компьютер пентиум4 китай шт &nbs
<table>
<form>
</table>
</form>?
Или это правильно?
последняя строка затыкается по середине на символе пробела
компьютер пентиум4 китай шт &nbs
Несколько вопросов для разъяснения:
1. Всегда затыкается на этом месте?
2. Что написано в БД в этом поле, на котором затыкается?
3. Тип поля, на котором затыкается.
но все равно строчки обрезаются где то посл 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><?
Несколько вопросов для разъяснения:
1. Всегда затыкается на этом месте?
2. Что написано в БД в этом поле, на котором затыкается?
3. Тип поля, на котором затыкается.
затыкается на разных местах, типы полей varchar int и text если при выборке ставить меньше 200
не затыкается никогда
затыкается на разных местах, типы полей varchar int и text если при выборке ставить меньше 200
не затыкается никогда
Сколько у тебя выполняеться скрипт? Самый тупой вариант, что мне пришёл в голову - это выбирать по 200, далее их в буфер, следующие 200, опять в буфер... Короче вот такой вот байдой.
затыкается на разных местах, типы полей varchar int и text если при выборке ставить меньше 200
не затыкается никогда
Ты бы скинул дамп и структуру таблицы... А то мы вокруг-да-около пластуемся без толку...
Давай, в архиве на [email]mfender@mfender.org[/email]
Ты бы скинул дамп и структуру таблицы... А то мы вокруг-да-около пластуемся без толку...
Давай, в архиве на [email]mfender@mfender.org[/email]
отправил 2 тестовые таблицы и скрипт
отправил 2 тестовые таблицы и скрипт
Не поверишь: у меня всё это выдало полностью таблицу с 1599 рядами. Нигде ничего не потерялось...
Не поверишь: у меня всё это выдало полностью таблицу с 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
Что такое $submit и откуда он берётся? Потом, if ("Выбрать" == $submit) - не совсем корректно. Не забывай, что PHP - это не Си... Тогда уж следует писать if ("Выбрать" === $submit), а самое правильное - if ($submit === "Выбрать")
Но, почему он затыкается посреди вывода - не понимаю, хоть застрэлись. Объём не большой, выбирает быстро... Всё должно быть нормально.
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>
";
?>
убрал табличный вид работает за доли секунды, как это объяснить?
Возможно я и придираюсь, но
исправил, все равно дергается страница
исправил, все равно дергается страница
Посоветовали:
Это локальная машина под Windows и Apache 2.x? Если да, то поставьте Apache 1.3.x.
Посоветовали:
Это локальная машина под Windows и Apache 2.x? Если да, то поставьте Apache 1.3.x.
У меня локальная машина под WinXP Pro & SP2 + Apache 2.0.52 + PHP 4.3.2 ни когда подобных глюков не видел хотя пару раз приходилось систему зацикливать через бесконечный цикл! :D
Хотя конечно у меня ОЗУ много...