addSelect – jak zapsat aby to fungovalo

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
lopikol
Začátečník | 75
+
0
-

presenter:

<?php
$this->addSelect('category', 'Kategorie', array(\ContentModel::getCategories()->name));
?>

model:

<?php
    public static function getCategories()
    {
       return dibi::fetchAll('SELECT name FROM [categories] WHERE [publish] = 1');
    }
?>

Takhle to nefunguje. zkoušel jsem tu hledat příklad, ale nic. Poradíte mi prosím.

Aurielle
Člen | 1281
+
0
-

fetchPairs

lopikol
Začátečník | 75
+
0
-

Díky to je ono :)

Editoval lopikol (15. 2. 2011 19:27)

lopikol
Začátečník | 75
+
0
-

Nechci zbytečně zakládat topic.

Dá se nějak zjistit poslední ID, které bylo už použito.

Napsal jsem už 30 šlánků > poslední ID je 30.
Poté jich 5 smažu > poslední ID je 25
Je možné nějak zjistit, že další ID které bude přiřazeno bude 31??

pomocí tohoto zjistím poslední ID v DB > to právě nepotřebuji.
SELECT id FROM [articles] ORDER BY [id] DESC

Editoval lopikol (16. 2. 2011 0:20)

Aurielle
Člen | 1281
+
0
-

dibi::getInsertId()

lopikol
Začátečník | 75
+
0
-

Když se nad tím zamyslím, tak to nepůjde. Tvořím seo title a aby byly ojedinělé, tak před ně přidávám číslo (id poslednícho článku +1). Jenže když smažu nějaké články, tak by se mohlo stát, že se budou opakovat.

Možná bych tam mohl vkládat datum ve formátu rokměsícden.

Dá se nějak upravit funkce DateTime(), aby datum byl přímo v tomto formátu?

wise
Člen | 161
+
0
-

A co uložit článek, pomocí dibi:getInsertId() si vytáhnout jeho id a hodit update na row s tím ID a editovat ten seo title?

Edit: dibi:getInsertId() ti vrátí id posledního vloženého záznamu. V případě, že máš článek s ID 31 a 5 jich smažeš, tak v tabulce bude poslední záznam s ID 25 (např.), ale samotná tabulka má proměnnou AUTO_INCREMENT. A ta se při mazání záznamů nemění. Takže když vložíš nový záznam, bude tam mezera (články např. s ID 24, 25, 32, 33,…).

Je to to, co potřebuješ vědět?

Editoval wise (16. 2. 2011 0:46)

lopikol
Začátečník | 75
+
0
-

wise: JJ to je ono, ale řekl bych, že to je zbytečně složité a nejspíš od toho upustím. Zkusil bych tam dát tan datum > ře budu psát článek se stejným nadpisem v jeden den je v podstatě nulovášance. Jen jestli se dá funkce DateTime() upravit do fomátu rokmesicden

wise
Člen | 161
+
0
-

Složité? :-)

<?php
dibi::query("INSERT INTO [clanky]", $arr);
$id = dibi::getInsertId();
dibi::query("UPDATE [clanky] SET [title] = %s", formatTitle($title), " WHERE [id] = %i", $id);
?>

S tím DateTime si nejsem jistý. Pokud chceš uložit do db nějaký datum resp. k tomu title přidat, např. aby title byl: „YYMMDD-muj-seo-title“, tak datum získáš: date(„Ynj“, time()); a to pak ulož do db (tím první parametrem si nejsem jistý (jde mi o to, že je to bez mezer). Mrkni ještě na php.net/date.

lopikol
Začátečník | 75
+
0
-

Díky ten datum je funkční. Řekl bych, že i lepší než mít x dotazů jen na získání id do článku.