Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Формирование значения автоматически

Сообщения:  [1-10]   [11-17] 

 
 автор: nameIvan   (18.05.2008 в 16:16)   письмо автору
 
   для: sim5   (18.05.2008 в 16:02)
 

спасибо, наверно так и придется переделать всё и установить на поле номер договора актоинкремент

спасибо за помощь!

   
 
 автор: sim5   (18.05.2008 в 16:02)   письмо автору
 
   для: nameIvan   (18.05.2008 в 15:48)
 

Перебирайте. Если у вас поле не с автоинкрементом - пожалуйста. Но и в этом случае, это не выход когда работают несколько пользователей. Нафига вам это вообще нужно? Логично офрмить, нет ошибок, записать в базу и выдать пользователю сводную информацию по договору (включая его номер), сказать Спасибо и До свидания. Лично меня, в момент оформления заказа, например, номер под которым я буду внесен в базу не интересует.

   
 
 автор: nameIvan   (18.05.2008 в 15:48)   письмо автору
 
   для: sim5   (18.05.2008 в 15:42)
 

а что если перебирать базу и выбирать самый большой номер договора?
сохранять номер последней записи не выход - с базой могут работать сразу несколько пользователей

   
 
 автор: sim5   (18.05.2008 в 15:42)   письмо автору
 
   для: nameIvan   (18.05.2008 в 15:40)
 

Конечно нет. Если вы выберите обратную сортировку при запросе, то вы получите максимальный номер существующей в таблице записи.

   
 
 автор: nameIvan   (18.05.2008 в 15:40)   письмо автору
 
   для: sim5   (18.05.2008 в 15:35)
 

т.е. мой запрос не учитывает что записи из базы могли быть удалены?
делается это так потому что необходимо распечатать договор и дать на подпись клиенту.

хотя это навернго уже не важно, только что дошло до меня. а если клиент откажется и не подпишет договор, то тогда в базе в колонке номер договора будет 0, и при следующем оформлении опять номера договоров начнутся с 1,2,3 .....

   
 
 автор: sim5   (18.05.2008 в 15:35)   письмо автору
 
   для: nameIvan   (18.05.2008 в 15:09)
 

А вы учитываете то, что какие либо записи были удалены? Оформляете договор (производите запись в базу) запоминайте номер последней записи, а потом используйте его. Тогда это не будет зависить от удаления последующих записей, при любой последующей записи он будет последним (я говорю о поле с автоинкрементом!). Перед оформлением нового договора, извлекайте его (конфиг файл, либо таблица кофигурации и т.п.), добавляйте 1 и вставляйте в форму (только для информации!). Что вас не устраивает? Либо не привязывайте номер договора к id записи, а формируйте его другим способом, например, по времени.

PS. Вообще же, зачем вам эта морока? После удачного оформления, вам лучше сделать перенаправление на другую страницу (защита от F5). Вот на этой странице можно и сообщить оформителю:
Уважаемый Иван Ианыч! Спасибо за.... Ваш номер договора №1234349323. и т.д., и т.п..
Зачем ему именно при оформлении знать этот номер?

   
 
 автор: nameIvan   (18.05.2008 в 15:09)   письмо автору
 
   для: sim5   (18.05.2008 в 14:45)
 

спасибо, но немного не то. мне неолбходимо сначала выдернуть из базу последний ИД и по нему номер последнего договора, потом увеличить номер договора на 1 и только затем вписать все в базу.

я пробую прописать запрос
$Peremen=mysql_query("select `№_Dogovora` from `Table` order by `id`")+1;
но что-то не срабатывает

   
 
 автор: sim5   (18.05.2008 в 14:45)   письмо автору
 
   для: nameIvan   (18.05.2008 в 14:24)
 

Ну а что тут непонятного:

<?
//выполянем некую запись в базу
mysql_query("INSERT INTO.... ");
//сразу после этого запроса делаем запрос
$pid mysql_insert_id(); //$pid будет содержать номер последней записи

Если хранить $pid, то всегда можно узнать номер следующей (будующей) записи: $pid+1.

   
 
 автор: nameIvan   (18.05.2008 в 14:24)   письмо автору
 
   для: sim5   (18.05.2008 в 13:58)
 

можете пример привести, а то не понятно пока

   
 
 автор: sim5   (18.05.2008 в 13:58)   письмо автору
 
   для: nameIvan   (18.05.2008 в 13:30)
 

У поля с автоинкрементом, сразу после вставки значения - mysql_insert_id(). Если его где-то хранить, то можно использовать.

   

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования