Есть у меня страничка, где выводятся заказы и их можно редактировать.
Свернутый текст
<?
/* Соединяемся с базой данных */
$hostname = "192.168.1.160"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = "753951"; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "dimex"; // название базы данных
/* Таблица 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 = 80;
// Извлекаем из 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());
}
// Проверяем нужны ли стрелки назад
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%\">
<tr>
<td colspan=\"2\" background=\"images/earth.jpg\" width=\"100%\" height=\"250px\">
<center>
<script src=\"http://remarc.ucoz.ru/media/?t=video;w=200;h=150;f=http%3A%2F%2Fremarc.ucoz.ru%2Fflash%2Fclock_2004-1.swf\" type=\"text/javascript\"></script>
<img src=\"images/logo.png\" width=\"750\" height=\"120\" >
<img src=\"images/shar.png\" width=\"150px\" height=\"150px\" >
</center></td>
</tr>
<tr>
<td width=\"205px\" valign=\"top\" >
<div align=\"left\" id=\"ss\" style=\"width:205px; height:490px;\">
<div align=\"left\" style=\"padding: 0 0px\">
<div>
<a href=\"http://192.168.1.10/index.html\" ><img src=\"images/button_main.png\"></a>
</div>
<div>
<a href=\"http://192.168.1.10/insert.php\"><img src=\"images/button_new.png\"></a>
</div>
<div>
<a href=\"http://192.168.1.10/out_today.php\"><img src=\"images/button_today.png\"></a>
</div>
<div>
<a href=\"http://192.168.1.10/out_tmrw.php\"><img src=\"images/button_tmrw.png\"></a>
</div>
<div>
<a href=\"http://192.168.1.10/out_old.php\"><img src=\"images/button_old.png\"></a>
</div>
<div>
<a href=\"http://192.168.1.10/out.php\"><img src=\"images/button_all.png\"></a>
</div>
<div>
<a href=\"http://192.168.1.10/update_data.php\"><img src=\"images/button_edit.png\"></a>
</div>
<div>
<a href=\"http://192.168.1.10/del_data.php\"><img src=\"images/button_del.png\"></a>
</div>
<div>
<a href=\"http://192.168.1.10/search.php\"><img src=\"images/button_search.png\"></a>
</div>
<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'>
<form action="update_data.php" method="post" name="edit_form">
<input type="hidden" name="update" value="<?php echo $postrow[$i]["nomer"]?>" />
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" style="border-bottom:solid 1px #CCCCCC;"><b><i><div nomer="num"><pre><font color="#0000FF">Номер заказа: </font><font size=5> <?php echo $postrow[$i]["nomer"]?></font> <font color="#0000FF"> Дата: </font> <?php echo $postrow[$i]['formatTime']?></pre></div></b></i></td>
</tr>
<tr>
<td bgcolor="#1C86EE" width="150">На когда:</td><td><input type="text" value="<?php echo $postrow[$i]['formatTime1'] ?>" name="test_na_kogda"/></td>
<td bgcolor="#1C86EE" width="150">Готовность заказа:</td><td><input type="text" value="<?php echo $postrow[$i]['gotovnost']?>" name="test_gotovnost"/></td>
<td bgcolor="#1C86EE" width="150">Фирма:</td><td><input type="text" value="<?php echo htmlspecialchars($postrow[$i]['firma'])?>" name="test_firma"/></td>
</tr>
<tr>
<td bgcolor="#1C86EE">Адресс:</td><td><input type="text" value="<?php echo $postrow[$i]['adress']?>" name="test_adress"/></td>
<td bgcolor="#1C86EE">Имя:</td><td><input type="text" value="<?php echo $postrow[$i]['imya']?>" name="test_imya"/></td>
<td bgcolor="#1C86EE">Телефон:</td><td><input type="text" value="<?php echo $postrow[$i]['tel']?>" name="test_tel"/></td>
</tr>
<tr>
<td bgcolor="#1C86EE">Вес:</td><td><input type="text" value="<?php echo $postrow[$i]['ves']?>" name="test_ves"/></td>
<td bgcolor="#1C86EE">Куда:</td><td><input type="text" value="<?php echo $postrow[$i]['kuda']?>" name="test_kuda"/></td>
<td bgcolor="#1C86EE">Оплата:</td><td>
<select name="test_oplata">
<option value="Выбрать" <?php if ($postrow[$i]['oplata'] == "Выбрать") echo 'selected="selected"'?> >Выбрать</option>
<option value="Нал" <?php if ($postrow[$i]['oplata'] == "Нал") echo 'selected="selected"'?> >Наличный расчет</option>
<option value="Безнал" <?php if ($postrow[$i]['oplata'] == "Безнал") echo 'selected="selected"'?> >Безналичный расчет</option>
<option value="Получатель" <?php if ($postrow[$i]['oplata'] == "Получатель") echo 'selected="selected"'?> >Оплата получателем</option>
</select>
</td>
</tr>
<tr>
<td bgcolor="#1C86EE">Примечания:</td>
<td><input type="text" value="<?php echo $postrow[$i]['primechaniya']?>" name="test_primechaniya"/></td>
<td bgcolor="#1C86EE">Принял:</td>
<td>
<select name="test_prinyal">
<option value="Алена" <?php if ($postrow[$i]['prinyal'] == "Алена") echo 'selected="selected"'?> >Алена</option>
<option value="Дима" <?php if ($postrow[$i]['prinyal'] == "Дима") echo 'selected="selected"'?> >Дима</option>
<option value="Катя" <?php if ($postrow[$i]['prinyal'] == "Катя") echo 'selected="selected"'?> >Катя</option>
<option value="Маша Г" <?php if ($postrow[$i]['prinyal'] == "Маша Г") echo 'selected="selected"'?> >Маша Г</option>
<option value="Маша Б" <?php if ($postrow[$i]['prinyal'] == "Маша Б") echo 'selected="selected"'?> >Маша Б</option>
<option value="Оксана" <?php if ($postrow[$i]['prinyal'] == "Оксана") echo 'selected="selected"'?> >Оксана</option>
<option value="Света" <?php if ($postrow[$i]['prinyal'] == "Света") echo 'selected="selected"'?> >Света</option>
<option value="Юля" <?php if ($postrow[$i]['prinyal'] == "Юля") echo 'selected="selected"'?> >Юля</option>
<option value="Выбрать" <?php if ($postrow[$i]['prinyal'] == "Выбрать") echo 'selected="selected"'?> >Выбрать</option>
</select>
</td>
<td bgcolor="#1C86EE">Курьер:</td>
<td>
<select name="test_kurier">
<option value="Не указан" <?php if ($postrow[$i]['kurier'] == "Не указан") echo 'selected="selected"'?> >Не указан</option>
<option value="Вова" <?php if ($postrow[$i]['kurier'] == "Вова") echo 'selected="selected"'?> >Вова</option>
<option value="Владимир" <?php if ($postrow[$i]['kurier'] == "Владимир") echo 'selected="selected"'?> >Владимир</option>
<option value="Антон" <?php if ($postrow[$i]['kurier'] == "Антон") echo 'selected="selected"'?> >Антон</option>
<option value="Антон пеш" <?php if ($postrow[$i]['kurier'] == "Антон пеш") echo 'selected="selected"'?> >Антон пеш</option>
<option value="Рома" <?php if ($postrow[$i]['kurier'] == "Рома") echo 'selected="selected"'?> >Рома</option>
<option value="Игорь" <?php if ($postrow[$i]['kurier'] == "Игорь") echo 'selected="selected"'?> >Игорь</option>
<option value="Костя" <?php if ($postrow[$i]['kurier'] == "Костя") echo 'selected="selected"'?> >Костя</option>
<option value="Олег" <?php if ($postrow[$i]['kurier'] == "Олег") echo 'selected="selected"'?> >Олег</option>
<option value="Леша И." <?php if ($postrow[$i]['kurier'] == "Леша И.") echo 'selected="selected"'?> >Леша И.</option>
<option value="Л" <?php if ($postrow[$i]['kurier'] == "Л") echo 'selected="selected"'?> >Л</option>
<option value="Паша" <?php if ($postrow[$i]['kurier'] == "Паша") echo 'selected="selected"'?> >Паша</option>
<option value="Степа" <?php if ($postrow[$i]['kurier'] == "Степа") echo 'selected="selected"'?> >Степа</option>
<option value="Дима" <?php if ($postrow[$i]['kurier'] == "Дима") echo 'selected="selected"'?> >Дима</option>
<option value="Женя" <?php if ($postrow[$i]['kurier'] == "Женя") echo 'selected="selected"'?> >Женя</option>
</select>
</td>
<tr>
<td bgcolor="#1C86EE">Статус:</td>
<td>
<select name="test_status">
<option value="Не указано" <?php if ($postrow[$i]['status'] == "Не указано") echo 'selected="selected"'?> >Не указано</option>
<option style="color: green; font-weight: bold;" value="Сообщено" <?php if ($postrow[$i]['status'] == "Сообщено") echo 'selected="selected"'?> >Сообщено</option>
<option style="color: OrangeRed; font-weight: bold;" value="Забрано" <?php if ($postrow[$i]['status'] == "Забрано") echo 'selected="selected"'?> >Забрано</option>
<option style="color: red; font-weight: bold;" value="Отменено" <?php if ($postrow[$i]['status'] == "Отменено") echo 'selected="selected"'?> >Отменено</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit_edit" class="buttons" style="background-color:#BC8F8F" value="Сохранить изменения"/>
</td>
</tr>
</table>
</form>
<?php endfor ?>
<?php
// <input type="button" name="nazad" class="buttons" value="На главную" onclick="self.location.href='http://192.168.1.10';"/>
// Вывод меню
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>
Все работает, все хорошо. Но есть некоторые неудобства.
После редактирования каждого заказа, нужно сохранять изменения и только потом переходить к след. заказу.
Нужно сделать одно из двух:
1. Можно сделать 1 кнопку "Сохранить" под все заказы на страницу, но это грозит постоянным пересохранением большого колличества даных.
2. Этот вариант меня интересует более.
Как сделать такую формочку, что бы в ней было поле ввода номера заказа, а далее выводилась форма редактирования именно этого заказа. Ну что-то вроде where nomer="то что введено в поле".
Ну и соответственно, что бы можно было данные отредактировать и пересохранить в бд.
Спасибо. Как всегда)
Спустя 16 минут, 3 секунды (26.01.2012 - 13:01) h234 написал(а):
Цитата |
Как сделать такую формочку, что бы в ней было поле ввода номера заказа, а далее выводилась форма редактирования именно этого заказа. Ну что-то вроде where nomer="то что введено в поле". Ну и соответственно, что бы можно было данные отредактировать и пересохранить в бд. |
Собственно текстовое поле и кнопка, по нажатии на кнопку переходим на другую форму с помощью header('location: '. $where_to_go)); А в $_GET например передаем введенный номер.
Далее запрашиваем в базе исходную строку (например, введенный номер соответствует id):
SELECT * FROM `zakazy` WHERE `id` = $number
Результат запроса распихиваем по текстовым полям, чтобы их можно было отредактировать.
Затем UPDATE с новыми значениями.
Спустя 13 минут, 30 секунд (26.01.2012 - 13:14) UnWind написал(а):
В общем не буду полностью редактировать код, думаю для форума это не совсем уместно.
Но сейчас в данном сообщении распишу то, что выше предложил сделать h234
У нас есть таблица пользователей, к примеру:
Допустим в таблице users у нас есть юзверь, который забыл свой пароль и хочет изменить логин:
Но мы заранее же это предусмотрели и создали форму, через которую нам удобно будет это сделать (Файл updateUserInfo.php) :
На всякий случай файл mysql.connect.php:
И вот мы изменили пароль через форму ;)
И не забываем ставить плюсики! ;)
P.S.:> В данном примере пароль не шифрован в md5, и пример с паролем использован лишь для наглядности. При создании действительной базы пользователей, хорошо фильтруйте пароль пользователей воизбежании взломов учеток! И так же хорошо фильтруйте переменные - если например переменная $id в данном скрипте имеет место принимать только целые числа, то ничего кроме целых чисел нельзя давать вставлять в нее.
Но сейчас в данном сообщении распишу то, что выше предложил сделать h234
У нас есть таблица пользователей, к примеру:
CREATE TABLE users (
id INT AUTO INCREMENT,
login VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
password VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
PRIMARY KEY(id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='Список пользователей';
Допустим в таблице users у нас есть юзверь, который забыл свой пароль и хочет изменить логин:
INSERT INTO users(password) SET VALUES('UnWind', '123');
Но мы заранее же это предусмотрели и создали форму, через которую нам удобно будет это сделать (Файл updateUserInfo.php) :
<?php
/* Файл подключения к серверу MySQL */
include "mysql.connect.php";
/* Идентифицируем переменные */
$id = !empty( $_GET['id'] ) ? $_GET['id'] : NULL;
$action = !empty( $_GET['action'] ) ? $_GET['action'] : NULL;
$password = !empty( $_POST['password'] ) ? $_POST['password'] : NULL;
/* Проверяем существует ли пользователь updateUserInfo.php?id=1 */
if( mysql_num_rows( mysql_query("SELECT * FROM users WHERE id=" . mysql_escape_string( $id ) . ";", $mysqlConnect) ) != 0) {
/* Проверяем, действительно ли пользователь хочет отредактировать пароль */
if($action == "update") {
mysql_query("UPDATE users SET password=" . mysql_escape_string( $password ) . " WHERE id=" . mysql_escape_string( $id ) . ";", $mysqlConnect);
echo 'Пароль успешно изменен';
mysql_close($mysqlConnect);
exit;
}
/* Выводим данные о пользователе в массив $user, из которого в дальнейшем выведем их в форму */
$user = mysql_fetch_row( mysql_query("SELECT id,login,password FROM users WHERE id=" . mysql_escape_string( $id ) . ";", $mysqlConnect) );
echo '<form action="updateUserInfo.php?action=update&id=' . $id . '" method="POST"> Пользователь: ' . $user[1] . ' <br />
Пароль: <input type="text" name="password" value="' . $user[2] . '" />
<br /> <input type="submit" value="Изменить пароль" /> </form>';
}
else {
echo 'Такой пользователь не найден';
mysql_close($mysqlConnect);
exit;
}
На всякий случай файл mysql.connect.php:
<?php
$mysqlConnect = mysql_connect("localhost", "username", "userpassword") or die( mysql_error() );
mysql_select_db("WILD_CAT") or die( mysql_error() );
И вот мы изменили пароль через форму ;)
И не забываем ставить плюсики! ;)
P.S.:> В данном примере пароль не шифрован в md5, и пример с паролем использован лишь для наглядности. При создании действительной базы пользователей, хорошо фильтруйте пароль пользователей воизбежании взломов учеток! И так же хорошо фильтруйте переменные - если например переменная $id в данном скрипте имеет место принимать только целые числа, то ничего кроме целых чисел нельзя давать вставлять в нее.