Autor Zpráva
frauen
Profil *
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
Jaká databáze? MySQL?
Jaký programovací jazyk? PHP?

Zkuste mysql_insert_id()
frauen
Profil *
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
Popis funkce včetně příkladu.

Po provedení INSERTu do DB jednoduše zavoláš tuto funkci a ona vrátí číslo.
frauen
Profil *
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
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'
anebo lépe v PHP při procházení výsledků.
frauen
Profil *
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
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
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
"z čehož mi vyplývá, že má smysl to ukládat v takovém formátu"
Formátu ano, systému ne.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0