|
|
|
| Есть поле, значение которого дожно формироваться автоматически при переходе на данную страницу, при этом значение этого поля должно отличатся от значений уже хранящихся в базе (MySQL), например увеличивать с каждым разом на 1.
Как можно реализовать данную задачу? | |
|
|
|
|
|
|
|
для: nameivan
(18.05.2008 в 12:29)
| | Поле в таблице базы данных или имеется в виду поле в HTML-форме?
PS Много ли народу будет пользоваться сервисом (таблица одна на всех или у каждого своя)? | |
|
|
|
|
|
|
|
для: cheops
(18.05.2008 в 12:52)
| | есть база данных, и есть форма с полями значения которых заносятся в базу.
Пользователь заполняет форму на странице 1 и переходит при нажатии на кнопку на страницу 2, на странице 2 в нужных местах расставляются значения которые ввел пользователь на странице 1. Есть одно поле на форме на странице 2 (№ договора) значение которого должно формироваться автоматом. Вот об этом речь | |
|
|
|
|
|
|
|
для: nameivan
(18.05.2008 в 13:04)
| | Не обязательно нужно связывать первую и вторую страницы.
Можно в это поле с номером договора вставлять последнее значение из бд(ячейка с номером договора), только увеличивать его на один. | |
|
|
|
|
|
|
|
для: nameivan
(18.05.2008 в 13:04)
| | А при получении данных с первой страницы они записываются сразу в базу или нет? | |
|
|
|
|
|
|
|
для: sim5
(18.05.2008 в 13:20)
| | нет, записываются в базу при нажатии на кнопку на сторой странице.
Подскажите как выдрать из базы последнюю запись | |
|
|
|
|
|
|
|
для: nameIvan
(18.05.2008 в 13:30)
| | У поля с автоинкрементом, сразу после вставки значения - mysql_insert_id(). Если его где-то хранить, то можно использовать. | |
|
|
|
|
|
|
|
для: sim5
(18.05.2008 в 13:58)
| | можете пример привести, а то не понятно пока | |
|
|
|
|
|
|
|
для: nameIvan
(18.05.2008 в 14:24)
| | Ну а что тут непонятного:
<?
//выполянем некую запись в базу
mysql_query("INSERT INTO.... ");
//сразу после этого запроса делаем запрос
$pid = mysql_insert_id(); //$pid будет содержать номер последней записи
|
Если хранить $pid, то всегда можно узнать номер следующей (будующей) записи: $pid+1. | |
|
|
|
|
|
|
|
для: sim5
(18.05.2008 в 14:45)
| | спасибо, но немного не то. мне неолбходимо сначала выдернуть из базу последний ИД и по нему номер последнего договора, потом увеличить номер договора на 1 и только затем вписать все в базу.
я пробую прописать запрос
$Peremen=mysql_query("select `№_Dogovora` from `Table` order by `id`")+1;
но что-то не срабатывает | |
|
|
|
|
|
|
|
для: nameIvan
(18.05.2008 в 15:09)
| | А вы учитываете то, что какие либо записи были удалены? Оформляете договор (производите запись в базу) запоминайте номер последней записи, а потом используйте его. Тогда это не будет зависить от удаления последующих записей, при любой последующей записи он будет последним (я говорю о поле с автоинкрементом!). Перед оформлением нового договора, извлекайте его (конфиг файл, либо таблица кофигурации и т.п.), добавляйте 1 и вставляйте в форму (только для информации!). Что вас не устраивает? Либо не привязывайте номер договора к id записи, а формируйте его другим способом, например, по времени.
PS. Вообще же, зачем вам эта морока? После удачного оформления, вам лучше сделать перенаправление на другую страницу (защита от F5). Вот на этой странице можно и сообщить оформителю:
Уважаемый Иван Ианыч! Спасибо за.... Ваш номер договора №1234349323. и т.д., и т.п..
Зачем ему именно при оформлении знать этот номер? | |
|
|
|
|
|
|
|
для: sim5
(18.05.2008 в 15:35)
| | т.е. мой запрос не учитывает что записи из базы могли быть удалены?
делается это так потому что необходимо распечатать договор и дать на подпись клиенту.
хотя это навернго уже не важно, только что дошло до меня. а если клиент откажется и не подпишет договор, то тогда в базе в колонке номер договора будет 0, и при следующем оформлении опять номера договоров начнутся с 1,2,3 ..... | |
|
|
|
|
|
|
|
для: nameIvan
(18.05.2008 в 15:40)
| | Конечно нет. Если вы выберите обратную сортировку при запросе, то вы получите максимальный номер существующей в таблице записи. | |
|
|
|
|
|
|
|
для: sim5
(18.05.2008 в 15:42)
| | а что если перебирать базу и выбирать самый большой номер договора?
сохранять номер последней записи не выход - с базой могут работать сразу несколько пользователей | |
|
|
|
|
|
|
|
для: nameIvan
(18.05.2008 в 15:48)
| | Перебирайте. Если у вас поле не с автоинкрементом - пожалуйста. Но и в этом случае, это не выход когда работают несколько пользователей. Нафига вам это вообще нужно? Логично офрмить, нет ошибок, записать в базу и выдать пользователю сводную информацию по договору (включая его номер), сказать Спасибо и До свидания. Лично меня, в момент оформления заказа, например, номер под которым я буду внесен в базу не интересует. | |
|
|
|
|
|
|
|
для: sim5
(18.05.2008 в 16:02)
| | спасибо, наверно так и придется переделать всё и установить на поле номер договора актоинкремент
спасибо за помощь! | |
|
|
|
|
|
|
|
для: nameivan
(18.05.2008 в 12:29)
| | Не совсем понятно, но можно установить перменную в сессии и увеличивать ее с каждым запросом на еденицу. | |
|
|
|