Autor | Zpráva | ||
---|---|---|---|
frauen Profil * |
#1 · Zasláno: 14. 1. 2011, 20:33:46
Zdravím,
potřeboval bych pomoci s následující funkcí. Chtěl bych mít funkci, která mi zjistí a vrátí hodnotu (id) právě přidávané položky. Díval jsem se, že se to tu v některých vláknech probírá, ale nevím, které z nich použít pro sestavení funkce. Děkuji mnohokrát předem. |
||
svadla Profil |
#2 · Zasláno: 14. 1. 2011, 20:56:10
Jaká databáze? MySQL?
Jaký programovací jazyk? PHP? Zkuste mysql_insert_id() |
||
frauen Profil * |
#3 · Zasláno: 14. 1. 2011, 21:02:47
svadla:
Databáze MySQL, programovací jazyk PHP. Díval jsem se na mysql_insert_id(), ale nevím si rady, jak ho použít. |
||
svadla Profil |
#4 · Zasláno: 14. 1. 2011, 21:06:31
Popis funkce včetně příkladu.
Po provedení INSERTu do DB jednoduše zavoláš tuto funkci a ona vrátí číslo. |
||
frauen Profil * |
#5 · Zasláno: 14. 1. 2011, 22:26:46
svadla:
Potřeboval bych trochu blíže poradit. Tvořím si objednávky a chtěl bych udělat to, že když ukládám danou objednávku s určitými daty tak bych potřeboval zároveň ve sloupci `title` přidat id (auto_increment) hodnotu spojenou s určitou číselnou řadou. Příklad: `id` (auto_increment): 6 `title`: 20110000000006 |
||
Tori Profil |
#6 · Zasláno: 14. 1. 2011, 22:37:35
frauen:
Jestli se hodnota v title skládá z 8-místného data + 6-místného ID objednávky, tak bych asi ukládala jen to datum, a buď to spojila dohromady při selectu SELECT id, CONCAT(title, LPAD(id,6,'0')) as 'title' |
||
frauen Profil * |
#7 · Zasláno: 14. 1. 2011, 22:55:52
Tori:
Hodnota `title` se skládá z roku (první 4 znaky) a `id`(konec) doplněný nulami, celková délka je 14 znaků. Mé řešení je následující: $title = date('Y') . '0000000000' + auto_increment('objednavky'); V mém řešení akorát nevím, jak mám zpracovat funkci auto_increment. |
||
svadla Profil |
#8 · Zasláno: 14. 1. 2011, 23:11:44
Jak psal Tori, je asi zbytečné do DB ukládat title v tvém formátu.
Pokud na tom trváš, tak po insertu proveď update sloupce title (po insertu pomocí mysql_insert_id() to id zjistíš). Otazkou je, jestli vůbec title ukládat v takovém formátu, první objednávka příštího roku může pak vypadat třeba 20120000044. |
||
Tori Profil |
#9 · Zasláno: 14. 1. 2011, 23:17:04 · Upravil/a: Tori
frauen:
V PHP těžko zjistíte ID záznamu, který ještě nebyl uložen. mysql_insert_id() se volá až po insertu. (Jestli to nějak jde v MySQL, nevím). Ale spíš jsem se ptala, proč to ID chcete ukládat duplicitně - jestli to číslo ve sloupci title používáte v jiné tabulce jako cizí klíč? $title = date('Y') . '0000000000' + auto_increment('objednavky'); Co když bude ID vícemístné? Koukněte na funkci str_pad. svadla: „první objednávka příštího roku může pak vypadat třeba 20120000044.“ .. z čehož mi vyplývá, že má smysl to ukládat v takovém formátu jedině kdyby se každý rok číslovalo od 1. Ale pak by to už zase nebylo id... |
||
svadla Profil |
#10 · Zasláno: 14. 1. 2011, 23:19:58
"z čehož mi vyplývá, že má smysl to ukládat v takovém formátu"
Formátu ano, systému ne. |
||
Časová prodleva: 13 let
|
0