NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Vložení dat do pohledu

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Mario Brunmayr:4.4.2017 21:10

Zdravím, nevím si rady jak vložit tento php script který mám v kontroleru do pohledu aby se mi data vypisovali do šablony a ne mimo. Jako základní framework používám místni "Jednoduchý redakční systém v PHP objektově (MVC)".

                $produkty = Db::dotazVsechny('
        SELECT *
        FROM produkty
');
echo('<h2>Uživatelé</h2><table border="1">');
foreach ($produkty as $data)
{
        echo('<tr><td>' . htmlspecialchars($data['produkty_id']));
        echo('</td><td>' . htmlspecialchars($data['nazev_produktu']));
        echo('</td><td>' . $data['popis_produktu']);
        echo('</td><td>' . htmlspecialchars($data['cena']));
        echo('</td></tr>');
}
echo('</table>');

Nějak by jsem si představoval že foreach cyklus a jeho obsah vložim do pohledu ale proměná produkty již nemá žádný obsah.

Dále jsem se chtěl zeptat jestli lze nějak jednoduše přidělat ke každému řádku v tabulce tlačítko, které by obsah daného řádku uložilo do cookies.

Předem děkuji za pomoc.
Mario Brunmayr

Editováno 4.4.2017 21:11
 
Odpovědět
4.4.2017 21:10
Avatar
kaskader202
Člen
Avatar
kaskader202:24.5.2017 10:00

Ahoj, tvuj problé spočívá v tom, že tys ty data nepředal do pohledu (viz. 8. díl tebou zmíněného seriálu, takže doporučuju pořádně pročíst) , což se dělá pomocí:

$this->data['nazev_promenne_v_pohledu'] = $promenna_v_kontroleru;

V tomto případě:

$this->data['produkty'] = $produkty;

V pohledu pak bude vypdat tvuj kod zhruba nějak takhle:

<h2>Uživatelé</h2>
<table border="1">
<?php foreach ($produkty as $data) : ?>
   <tr>
        <td><?= $data['produkty_id'] ?></td>
        <td><?= $data['nazev_produktu'] ?></td>
        <td><?= $data['popis_produktu'] ?></td>
        <td><?= $data['cena'] ?></td>
   </tr>
<?php endforeach; ?>
</table>

Hádám, že popis produktu budeš mít v html podle toho jakto píšeš. tak na to použij htmlspecialchar­s_decode(), nejsem si uplně jistý, ale mělo by to fungovat. Hlavně záleží jestli už používáš upravený Kontroler.php z 9. dílu.

Co se týče ukládání do cookies, záleží na coto potřebuješ a jestli je to vhodné řešení. Asi bych to řešil pře JS či jQuery.
Napiš na co to potřebuješ a jaké s tím máš plány a na neco příjdem.
Snad jsem ti pomohl. :)

 
Nahoru Odpovědět
24.5.2017 10:00
Avatar
kaskader202
Člen
Avatar
Odpovídá na Mario Brunmayr
kaskader202:24.5.2017 11:10

Nedal jsem odpovědět tak pro jistotu :)

Editováno 24.5.2017 11:11
 
Nahoru Odpovědět
24.5.2017 11:10
Avatar
Odpovídá na kaskader202
Mario Brunmayr:28.5.2017 19:56

Naštěstí již mám tento problém vyřešený, teď spíše řešim jak z tohoto HTML kodu získat hodnotu pro PHP aby jsem mohl udělat IF podmínku. Zatim jsem tomuto problému věnoval asi 40 min, takže snad na to přijidu ale kdyby jsi věděl jak na to tak by jsem se vůbec nezlobil :) .

         <label class="radio-inline"><input type="radio" name="jazyk">CZ</label>
<label class="radio-inline"><input type="radio" name="jazyk">DE</label>
<label class="radio-inline"><input type="radio" name="jazyk">EN</label>
 
Nahoru Odpovědět
28.5.2017 19:56
Avatar
Mario Brunmayr:28.5.2017 20:04
                        $selected_radio = $_POST['jazyk'];
print $selected_radio;

zkusil jsem toto řešení které jsem si vygooglil ale výsledek mi to vrací pouze "on"....

 
Nahoru Odpovědět
28.5.2017 20:04
Avatar
kaskader202
Člen
Avatar
Odpovídá na Mario Brunmayr
kaskader202:28.5.2017 20:56

Nemáš tam value

 
Nahoru Odpovědět
28.5.2017 20:56
Avatar
kaskader202
Člen
Avatar
Odpovídá na Mario Brunmayr
kaskader202:28.5.2017 22:21

Doplnění mého předchozího komentáře. Třeba takto:

<label class="radio-inline"><input type="radio" name="jazyk" value="CZ">CZ</label>
<label class="radio-inline"><input type="radio" name="jazyk" value="DE">DE</label>
<label class="radio-inline"><input type="radio" name="jazyk" value="EN">EN</label>

a doporučuji když takhle zjišťuješ co se ti poslalo a co ne, použil bych:

var_dump($_POST);

či

die(var_dump($_POST));
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
28.5.2017 22:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.