[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Страница обновления данных + постраничный вывод
WisesT
Добрый день.
Есть у меня страничка обновления заказов с вот таким кодом
Свернутый текст
<?

/* Соединяемся с базой данных */

/* Таблица MySQL, в которой хранятся данные */

$table = "zakazy";

/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");

// Переменная хранит число сообщений выводимых на станице
$num = 100;
// Извлекаем из URL текущую страницу
$page = !empty($_GET['page']) ? $_GET['page'] : NULL;
//$page = $_GET['page'];
// Определяем общее число сообщений в базе данных

$result = mysql_query("SELECT COUNT(*) FROM zakazy");
$posts = mysql_result($result, 0);
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю

if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения

$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT *, DATE_FORMAT(`time`, '%d-%m-%Y %H:%i:%s') as `formatTime`, DATE_FORMAT(`na_kogda`, '%d-%m-%Y') as `formatTime1` FROM zakazy LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))

/* Если была нажата кнопка редактирования, вносим изменения */
if(@$_POST['submit_edit']) {
$na_kogda = date('Y-m-d', strtotime($_POST['test_na_kogda']));
$query = "UPDATE $table SET gotovnost='{$_POST['test_gotovnost']}', firma='{$_POST['test_firma']}', `na_kogda` = '".$na_kogda."', adress='{$_POST['test_adress']}', imya='{$_POST['test_imya']}', tel='{$_POST['test_tel']}', ves='{$_POST['test_ves']}', kuda='{$_POST['test_kuda']}', oplata='{$_POST['test_oplata']}', primechaniya='{$_POST['test_primechaniya']}', prinyal='{$_POST['test_prinyal']}', kurier='{$_POST['test_kurier']}', status='{$_POST['test_status']}' WHERE nomer='{$_POST['update']}'";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die (mysql_error());
header('Location: ' . $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']);
exit;
}

// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href= ./update_data.php?page=1>Первая</a>
<a href= ./update_data.php?page='
. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href= ./update_data.php?page='. ($page + 1) .'>></a>
<a href= ./update_data.php?page='
.$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href= ./update_data.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= ./update_data.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href= ./update_data.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= ./update_data.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';

/* Выводим данные из таблицы */
echo ("
<!DOCTYPE html PUBLIC
\"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=
\"http://www.w3.org/1999/xhtml\">

<head>
<meta http-equiv=
\"Content-Type\" content=\"text/html; charset=windows-1251\">


<title>Редактирование заказов</title>

<style type=
\"text/css\">

</style>
<META http-equiv='refresh' content='60,http://192.168.1.10/update_data.php'>
</head>

<body>


<center>

<table width=
\"100%\" height=\"100%\">");



virtual("include/header_html.txt");

echo ("

<tr>

<td width=
\"205px\" valign=\"top\" >
<div align=
\"left\" id=\"ss\" style=\"width:205px; height:490px;\">
<div align=
\"left\" style=\"padding: 0 0px\">");



virtual("include/menu_html.txt");

echo ("


<fieldset style=
\"display:inline;\">
<legend>Поиск в Google</legend>
<form action=
\"http://www.google.com/search?\" target=\"_blank\" method=\"get\" style=\"margin:0px;\">
<input type=
\"text\" id=\"q\" name=\"q\">
<input type=
\"submit\" value=\"Поиск\">
</form>
</fieldset>
</td>

<td valign=
\"top\" width=\"100%\"><table width=\"100%\" border=\"1\">
<tr>
<td><div align=
\"center\">
<p><strong>Изменение заказа</strong></p>
<p>После сохранения данных - обновите страничку (F5)</p>
<p>Также страничка обновляется автоматически через 1 мин. Ее можно обновить самостоятельно, нажав (F5)</p>
</div></td>
</tr>
<tr><td>

"
);

// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;


/* Цикл вывода данных из базы конкретных полей */
//for($i = 0; $i < $num; $i++)

//while ($row = mysql_fetch_array($res))

for($i = 0; $i < $num; $i++):?>

<META http-equiv='refresh' content='60,http://192.168.1.10/update_data.php'>
<
a name="<?php echo $postrow[$i]['nomer']?>"></a>
<
form action="#<?php echo $postrow[$i]['nomer']?>" method="post" name="edit_form">

//Тут форма редактирования

</form>

<?php endfor ?>

<?php


// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;

/* Закрываем соединение */
mysql_close();

/* Выводим ссылку возврата */
//echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"index.html\">Вернуться назад</a></div>");


?>
</td>
</
tr>
</
table>



</
td>
</
tr>


</
table>

</
center>

</
body>
</
html>

Беда вот в чем.
Если на странице не 100 заказов, а меньше, то они выводятся, а сотальное забивается пустышками. Тоесть если на страницу формируется 30 форм редактирования заказов, то 70 остальных просто висят пустыми.

Как это исправить?



Спустя 8 минут, 43 секунды (24.02.2012 - 15:51) nugle написал(а):
WisesT
если следующее элементы пусты делать break, т.е. выход из цикла

Спустя 1 минута, 55 секунд (24.02.2012 - 15:53) WisesT написал(а):
а где именно нужно заканчивать цыкл? тоесть где ставить break?

Спустя 10 минут, 35 секунд (24.02.2012 - 16:03) nugle написал(а):
перед тем как обновляешь бд, там ставишь проверку на пустоту и break если массив пуст

Спустя 2 минуты, 13 секунд (24.02.2012 - 16:06) WisesT написал(а):
а можешь написать?

Спустя 19 минут, 55 секунд (24.02.2012 - 16:26) nugle написал(а):
WisesT
я тебе показал как, надо тебе свои усилия тоже приложить

Спустя 21 секунда (24.02.2012 - 16:26) WisesT написал(а):
Весело....

Спустя 51 минута, 24 секунды (24.02.2012 - 17:17) johniek_comp написал(а):
WisesT
Так надоело за вас писать постоянно! Сам пробуй, что не получилось показывай поможем

Спустя 5 минут, 13 секунд (24.02.2012 - 17:22) WisesT написал(а):
*пшол читать IRBIS*
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.