Vypnutí buttonu podle stavu položky v databazi(podminka)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Koupilsemto
Člen | 38
+
0
-

Zdravím, už několik hodin se mi nedaří vypnout button pokud je stav knihy v databázi = ‚Rezervováno‘.
Zobrazuji přehled knih kde je stav zda je dostupná, rezervovaná atd. a chtěl bych vypnout tlačítko pokud bude stav „Rezervováno“. Knihy zobrazuji pomoci cyklu a u každé položky zobrazuji button „rezervovatbtn“.
Lattle

    <tr n:foreach="$knihy as $book" class="articles">
        <td>{$book->stav}</td>
        <td>
			<button class="rezervovatbtn" n:if="$user->loggedIn">
                <a n:href="Post:rezerve $book->ID">Rezervovat</a>
			</button>
        </td>
</tr>

Zde je připadně presenter

    public function renderDefault($strana = 1) {
        $this->template->strana = $strana;
        $lastPage = 0;
        $knihy = $this->database->table('v_knihy')
                ->where('`prace` IS NOT NULL')
                ->order('datumpridani DESC')
                ->page($strana, 15, $lastPage);
        $this->template->lastPage = $lastPage;

        $search = $this->getRequest()->getParameter('search');
        if ($search) {
            $knihy->where('search LIKE ?', '%'.$search.'%');
        }
        $this->template->knihy = $knihy;
    }

Za případné odpovědi díky.

blaztar
Člen | 93
+
+1
-

Toto by mohlo být ok.

<button
    class="rezervovatbtn"
    n:if="$user->loggedIn"
    n:attr="disabled => $book->stav === 'Rezervováno'">Rezervovat
</button>

Editoval blaztar (11. 5. 2018 20:45)

CZechBoY
Člen | 3608
+
0
-

Proc tam mas vlastne ten button? Nevypada ze bys mel nejakej formular…

Koupilsemto
Člen | 38
+
0
-

WoW, tak to je husté že to jde v Nette takto pěkně udělat díky. Já se pokoušel o škaredé věci :D ale tohle vážně pěkné.
Jinak kdy použit button a kdy ne moc nevím dávám ho v podstatě všude kde chci aby se provedl post atd. Možná by to bylo lepši přes <a><a/>? Jak používáš buttony ty?

CZechBoY
Člen | 3608
+
0
-

Ja pouzivam button ve formulari. Ty si mel ten button takyve formulari nebo jak si udelal ten post? Hodne divny je mit odkaz uvnitr buttonu…

Koupilsemto
Člen | 38
+
0
-

Promin nevšiml jsem si odpovědi. Odkaz mám uvnitř buttonu protože když si ten post dam

<button n:href="Post:rezerve $book->ID">

Tak mi to vůbec nefunguje. Ještě jsem nepřišel nato proč mi to tělá

 <a n:href="Post:rezerve $book->ID">

Problém je pak že mi zase nejde n:attr="disabled jelikož tam mám ten <a> a nevím jak znepřístupnit tenhle element :(

Editoval Koupilsemto (18. 5. 2018 17:54)

CZechBoY
Člen | 3608
+
0
-

Absolutně nechápu co děláš. Buď teda máš formulář a ten má nějakou akci, nebo máš odkaz kterej je jen klasickej get požadavek.

Koupilsemto
Člen | 38
+
0
-

Žádný formulář jen get. Po kliknutí se pouze vloží log a update do databáze.

I když je to mimo topic nevěděl bys jak přepsat tento sql dotaz SELECT * FROM log WHERE date > (NOW() – INTERVAL 7 DAY) do podmínky?

->where('date >= ?', date('Y-m-d'))

Když se o to pokouším dostávám neustále chybu syntaxe nebo to zapíšu tak že ta podmínka to úplně ignoruje.

Editoval Koupilsemto (18. 5. 2018 19:21)

Phalanx
Člen | 310
+
+1
-

Píšu teď z hlavy, takže to ber spíš jako inspiraci.

<?php
$date = new DateTime("-7 days");
$result = $this->database->table('log')->where('date >= ?', $date->format('Y-m-d'))->fetchAll();
?>

Dej si pozor, date je klíčové slovo v MySQL, takže je možné, že budeš muset escapovat:

<?php
$date = new DateTime("-7 days");
$result = $this->database->table('log')->where('`date` >= ?', $date->format('Y-m-d'))->fetchAll();
?>