Autor Zpráva
Janvesely12
Profil
Zdravím, mám zase problém. Zapisuji do jedné tabulky záznamy, ale někdy zapíšu 70 někdy 72, 73 nebo 75 záznamů. A vždy to tvoří jeden celek.

Představoval bych si to takto: Vložil bych dejme tomu 72 záznamů, zjistil bych jejich největší a nejmenší ID to uložil do další tabulky. A potom bych si vytvořil výpis záznamů v druhé tabulce, tam by byl odkaz kde by v proměnné bylo např. 151-223 a tyto záznamy by se potom zobrazili na další stránce.

Bohužel nevím jak zjistil ID aktuálně vkládaných záznamů.
Nevíte jak bych to mohl udělat?

Děkuji
David Klouček
Profil
ID z posledního uložení zjistíš pomocí mysql_insert_id().

Pokud ty záznamy ukládáš postupně, tak to můžeš udělat následovně:

$ids = array(); //pole pro ID

for ($i = 0; $i < 100; $i++)
{
    mysql_query("INSERT INTO tbl (..) VALUES (..)");
    $ids[] = mysql_insert_id(); //pridani ID do pole
}

echo 'Maximalni ID: '.max($ids)
     .'Nejmensi ID: '.min($ids);

Jak to udělat u insertu s více řádky, nevím.
Tori
Profil
Z metadat (INFORMATION_SCHEMA nebo SHOW TABLE STATUS) můžete zjistit aktuální hodnotu auto_increment před updatem a po něm. Pokud ale může paralelně probíhat jiný update na stejných tabulkách, použijte raději mysql_insert_id.
Janvesely12
Profil
No, pokusím se to nějak vyřešit. Děkuji za návrhy.
Kajman
Profil
Janvesely12:
Jen poznámka. Pokud vkládáte hodnoty jedním insertem, vrátí mysql_insert_id první přidělené číslo. Další si dopočítáte díky mysql_affected_rows (počet vložených řádků) a nastavení auto_increment_increment - což je většinou jednička.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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