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