Vytiahnut data z DB do form (select)

nettak2
Člen | 19
+
0
-

Ahojte, mam jeden problem…

potrebujem do formulara vytiahnut data z DB a nasledne pomocou selectu vybrat danu polozku a ulozit ju do druhej tabulky

neviem v com robim chybu, ale nevie mi vytiahnut z DB tie karty
DAKUJEM ZA VSETKY RADY :)

vernostna_karta:
id
cislo_karty
typ_karty

zakaznik:
id

id_karta

signupformfactory.php

public function create(callable $onSuccess)
	{
        $form = $this->factory->create();

        $form->addText('meno', 'Meno:');
        $form->addText('priezvisko', 'Priezvisko:');

        $form->addText('email', 'Váš e-mail:')
            ->setRequired('Prosím vložte Váš e-mail.')
            ->addRule($form::EMAIL);

        $form->addText('adresa', 'Adresa:')
            ->setRequired("Adresa je povinný údaj");

        $form->addText('telefon', 'Telefon:')
            ->addCondition(Form::FILLED)
            ->addRule(Form::PATTERN, 'prosím zadejte korektní telefon', '^[+(]{0,2}[0-9 ().-]{9,}');

        $cards = $this->userManager->getAllCards();

        $form->addRadioList('typ_karty', 'Typ karty:',$cards);

        $form->addSubmit('send', 'Zaregistrovať');

        $form->onSuccess[] = function (Form $form, $values) use ($onSuccess) {

            $this->userManager->add($values->meno,$values->priezvisko, $values->email,$values->adresa,$values->telefon,$values->karta);

            $onSuccess();
        };
        return $form;
	}

usermanager.php

public function getAllCards() {
	    $this->database->table(self::TABLE_VK)->fetchAll();
    }
    /**
     * Add customer for admin.
     * @param $meno
     * @param $priezvisko
     * @param $email
     * @param $adresa
     * @param $tel
     * @param $karta
     * @return Nette\Security\Identity
     */

	public function add($meno, $priezvisko, $email, $adresa, $tel, $karta)
	{
	    $card = $this->database->table(self::TABLE_VK)->get($karta);
	    bdump($card);
        $this->database->table(self::TABLE_NAME)->insert([
            self::COLUMN_MENO => $meno,
            self::COLUMN_PRIEZVISKO => $priezvisko,
            self::COLUMN_ADRESA => $adresa,
            self::COLUMN_TELEFON => $tel,
            self::COLUMN_EMAIL => $email,
            self::COLUMN_KARTA => $card
        ]);

        //$this->database->table(self::TABLE_VK)->where(':zakaznik.id_karta', $karta)->update($karta);
	}
<div class="form-group">
    <label n:name="typ_karty" class="col-sm-4 control-label">Typ karty:</label>
    {* if (is_array($cards) || is_object($cards)) *}
        {foreach $form[typ_karty]->items as $card => $label}
            <div class="col-sm-1">
                <label n:name="typ_karty:$card">
                    <div class="col-sm-4">
                        <input type="radio" n:name="typ_karty:$card"> {$label}
                    </div>
                </label>
            </div>
        {/foreach}
</div>
nettak2
Člen | 19
+
0
-

Je tu prosim Vas niekto, kto by mi s tym vedel pomoct ? DAKUJEM :)

David Matějka
Moderator | 6445
+
0
-

fetchAll vraci pole jednotlivych radku. musis z toho udelat pole o strukture

[
	id => label
]

bud muzes vyuzit metodu fetchPairs na Selection nebo to rucne proiterovat a to pole sestavit

nettak2
Člen | 19
+
0
-

Ako to myslis rucne proiterovat a to pole sestavit?

Mysteria
Člen | 797
+
+1
-
$result = [];
foreach ($this->database->table('foo')->fetchAll() as $row) {
	$result[$row->id] = $row->bar;
}

return $result;

Editoval Mysteria (11. 8. 2017 17:18)

nettak2
Člen | 19
+
0
-

Dakujem toto pomohlo, ale teraz mi hadze chybu "":http://prntscr.com/g7b2ib

premek_k
Člen | 172
+
+1
-

Místo

$values->id

chceš asi

$values->typ_karty

který obsahuje vybrané id karty.

Ve formuláři nemáš žádný prvek s názvem id, máš tam však selekt, kerý má name typ_karty.

Editoval premek_k (12. 8. 2017 8:38)

nettak2
Člen | 19
+
0
-

Dakujem .. to som si ani nevsimla :)

nettak2
Člen | 19
+
0
-

Chcela by som sa informovat ohladne filtrov.. je nejaky fajn plugin alebo mam pouzit → addFilter?
Potrebujem vyfiltrovat zakaznikov podla mena, prijmeni a podla cisla karty
Dakujem za rady :)