Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Автонаращивание переменной
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (1): [1]   

> Описание: не автоинкремент!!!
Ксана
Отправлено: 01 Июня, 2007 - 04:37:49
Post Id


Newbie


Покинул форум
Сообщений всего: 2
Дата рег-ции: Дек. 2006  
Откуда: Уфа

Карма 0




Проблема такая: пишу магазин, у каждого товара есть id (varchar(6) ). Требуется сделать автоматическое наращивание id при добавлении (т.е. фактически сделать аналог автоинкрементного поля, но 6-значный (автоинкремент же не бывает "000001", например)).

Делала такое на обж паскале вот так (не знаю, поможет ли это):

CODE:

if invnum='' then invnum:='0000000000';
if invnum[10]<>'9' then invnum:=copy(invnum, 1,9)+chr(ORD(invnum[10])+1)
else
if invnum[9]<>'9' then invnum:=copy(invnum, 1,8)+chr(ORD(invnum[9])+1)+'0'
else
if invnum[8]<>'9' then invnum:=copy(invnum, 1,7)+chr(ORD(invnum[8])+1)+'00'
else
if invnum[7]<>'9' then invnum:=copy(invnum, 1,6)+chr(ORD(invnum[7])+1)+'000'
else
if invnum[6]<>'9' then invnum:=copy(invnum, 1,5)+chr(ORD(invnum[6])+1)+'0000'
else
if invnum[5]<>'9' then invnum:=copy(invnum, 1,4)+chr(ORD(invnum[5])+1)+'00000'
else
if invnum[4]<>'9' then invnum:=copy(invnum, 1,3)+chr(ORD(invnum[4])+1)+'000000'
else
if invnum[3]<>'9' then invnum:=copy(invnum, 1,2)+chr(ORD(invnum[3])+1)+'0000000'
else
if invnum[2]<>'9' then invnum:=copy(invnum, 1,1)+chr(ORD(invnum[2])+1)+'00000000'
else
if invnum[1]<>'9' then invnum:=chr(ORD(invnum[1]))+'000000000';
end;


там. конечно, ещё куча кода обработки этого действия, но не об этом я.
Средствами пхп подобное можно устроить?

Буду оч благодарна за помощь! Улыбка
 
 Top
Furax
Отправлено: 01 Июня, 2007 - 04:56:36
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Ксана
А кто мешает завести обычный autoincrement ID (типа int), а затем, при выводе на страницу, дописывать до шести знаков? ИМХО куда практичнее. Или он зачем-то нужен именно в базе шестизначный? Если да, то вопрос: зачем?
 
 Top
ksana
Отправлено: 01 Июня, 2007 - 11:45:56
Post Id


Newbie


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2007  

Карма 0




Furax
тоже вариант. тогда другой вопрос: каким образм дописывать нули при выводе на страницу? Не понял
То есть я заношу id в строку, отпереляю её strlen и соединяю нужное кол-во нуликов с id? Спасибо за подсказку)
 
 Top
Furax
Отправлено: 04 Июня, 2007 - 04:16:14
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




ksana
Насколько я понимаю, должно работать что-то типа этого:
CODE:
<?php
function getExtendedId($id)
{
$str="$id";
return strcspn(6-strlen($str), '0')+$str;
}
?>
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0424]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33