Autor Zpráva
BunnyBugs
Profil *
Zdravím, mám zase malý dotaz.
Existuje funkce při ukládání dat do MySQL, aby mi to uložilo události, které se opakují?
Například vkládám jednotlivé události (pomocí formuláře) třeba takto:

INSERT INTO tabulka (datum, nazev, udalost, ...) VALUES ($datum, $nazev, $udalost, ...)

Pokud jde o stejnou událost, která má pouze jiné datum (měsíčně se opakuje), musím zadávat každou jednotlivě.
Lze to tedy nějakým příkazem upravit, že bych do formuláře přidal počet opakování a automaticky by se mi uložila událost třeba do 12ti řádků s tím, že by datum byl na každé události zvýšen o jeden měsíc?

Snad jsem to popsal srozumitelně. Díky za odpověď.
Alphard
Profil
Na úrovni zřejmě PHP není problém provést dotaz vícekrát v cyklu. Přímo v DB by šlo určitě použít uloženou proceduru, ale nevidím v tom moc výhody.
V PHP pro přičítání data třeba www.php.net/manual/en/datetime.modify.php
$date->modify('+1 month');
apod.

Vytvářet takto dulicity není moc šťastné z pohledu návrhu databáze, kdyby byla potřeba editace, zřejmě budete muset vše upravit po jednom (pokud si nevytvoříte hromadnou editaci, pro ni bylo dobre ukládat si nějaký identifikátor shodný právě pro opakující se akci (ale špatný návrh zůstane)).
BunnyBugs
Profil *
Alphard:
Tady se jedná pouze o zrychlení ukládání do DB, abych to nemusel zakládat každou událost zvlášť. Po uložení v DB se ke každé jednotlivé události pak už vážou jiné údaje, hlavně třeba počet účastníků, kde pak používám funkci SUM, takže i případné editace bych stejně dělal jednotlivě. Pomocí cyklu s +1 month, to používat umím, ale mně jde spíše o to, jak to pomocí cyklu do té DB uložit, aby to uložilo tolikrát, jaké číslo bude na vstupu z formuláře a každý řádek byl o měsíc víc než vstupní hodnota data?
Prosím o příklad do funkce INSERT INTO, díky moc.
Alphard
Profil
BunnyBugs:
Pomocí cyklu s +1 month, to používat umím, ale mně jde spíše o to, jak to pomocí cyklu do té DB uložit
Nechápu, zároveň píšete, že to umíte a neumíte.

for ($i = 0; $i < $_POST['pocet_opakovani']; $i++)
{
  $db->insert('akce', $in);
  $in['date']->modify('+1 month');
}

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: