Avatar
oggymotslp
Člen
Avatar
oggymotslp:

Zdravím,

dlouho už jsem sem nepsal. :D Ale když jsem kontroloval zda to funguje správně, tak jsem zjístil, že když pomocí formuláře vytvořím záznam, tak to neveme volné ID, ale veme to poslední nepoužité, takže když něco odstraním, tak tam zůstane mezera mezi ID a to mě trochu nevyhovuje, nedá se nějak nastavit, aby to vzalo volné ID a ne poslední, které nebylo nikdy použito ?

Db::query('
                               INSERT INTO otazky (autor, text, ale, ano, ne)
                               VALUES (?, ?, ?, ?, ?)
                       ', $_POST['autor'], $_POST['text'], $_POST['ale'], "0", "0");
                       $zm['zm_id'] = Db::getLastId();
Editováno 8. února 18:58
Odpovědět 8. února 18:58
Proč to dělat jednoduše, když to jde i složitě :D
Avatar
Vít Pleskot
Člen
Avatar
Vít Pleskot:

Ahoj, pokud mas v tabulce na ID nastaven autoincrement, tak je to standardni chovani a vyuziva ho vetsina lidi. Neustale narustajici hodnota a nevyuzivani starsich hodnot bude je zaroven i ochrana proti nechtenemu spojeni nove vlozenych dat s vazanymi daty starych dat. Pokud ovsem nutne potrebujes resit vyplneni rady budes muset udelat tzv. self join. To znamena napojit tabulku na sebe sama kde podminkou pro spojeni bude neco jako id+1 = id. Tim to vyhodi id ktere zbyde. Nevim proc potrebujes vyplnit prazdne indexy, ale pokud bych to delal, tak ne nad sloupcem ktery mi slouzi jako unikatni nebo lepe receno primarni index, ale spise nad nejakym pomocnym.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 9. února 7:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.