Diskuze: Nefunkční checkbox
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 12 zpráv z 12.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Pokud chceš mít z PHP možnost načítat více možností z jedné skupiny inputů, dělá se to přes [] takto
<input type="checkbox" name="skupina[]" value="value1" />Možnost 1<br />
<input type="checkbox" name="skupina[]" value="value2" />Možnost 2<br />
<input type="checkbox" name="skupina[]" value="value3" />Možnost 3<br />
V PHP se ti pak do $_POST['skupina'] uloží pole teď hodnot, může to například takto vypsat:
<?php
if (isset($_POST['skupina'])) {
$optionArray = $_POST['skupina'];
for ($i=0; $i<count($optionArray); $i++) {
echo $optionArray[$i]."<br />";
}
}
?>
Pokud chceš vždy jen jednu možnost z výběru, jak chápu podle tvého SQL dotazu, tak použij type="radio".
Když použiji [] tak se mi do databáze zapíše "Array".
Zároveň mi to hodilo hlášku "Notice: Array to string conversion in
/home/users/.../Db.php on line 61.
Musí tam dělat bordel ten textový input.
Ne, zde chci mít možnost volby více věcí (rohlík,houska).
No, chová se to přesně tak, jak jsem popsal, že se to má chovat...
Tvoje $_POST['pecivo'] je pole, to znamená, že ho nemůžeš uložit jako text. Pokud chceš pospojovat položky pole, čímž mimochodem nedodržíš atomicitu databáze, použij třeba PHP funkci join(),
echo join(",", $_POST['pecivo']);
Možná by bylo rozumné si něco o databázích a PHP naučit, ať
nevaříš ze zakalené vody. 
Kdyby ti řešení s join nefungovalo tak já ve svoji aplikaci tento problém řešim tímto způsobem.
$pecivo = implode(" ",$_POST['pecivo']);
Tohle pomohlo, je to funkční ovšem na začátku dokumentu je hláška
Notice: Undefined index: pecivo in /home/users/..
Warning: implode(): Invalid arguments passed in /home/users/...
Ale formulář se zobrazí, a když jej vyplním a odešlu tak chybovka zmizí.
Notice: Undefined index: pecivo in /home/users/.. toto je jen upozornění že jsi předem nedefinoval pečivo. Osobně jsem smysl toho varování nikdy nepochopil a vyřešíš ho tak že kod bude vypadat takto.
$pecivo = "";
$pecivo = implode(" ",$_POST['pecivo']);
Druhá hláška ti řiká něco ve smyslu že pecivo není definován jako array. Skus tam vložit toto.
$pecivo = array();
$pecivo = "";
$pecivo = implode(" ",$_POST['pecivo']);
Trochu si pohraj s prvním a druhým řádkem a měl by jsi to zprovoznit bez
chyb ale jsem amatér, takže nic nezaručuju
.
ZKusím to první, při nejhorším vypnu na hostingu vyhazování erorů

To druhé jsem vyřešil takto
$pecivo = implode(', ', (array)$_POST["pecivo"]);
Ta hláška se dá správně vyřešit pomocí isset, jak jsem psal někde nahoře v ukázkovém použití, ne?
Trochu nechápu to tvé "Kdyby ti řešení s join nefungovalo", jelikož join() a implode() je to samé (aliasy). http://stackoverflow.com/…4016/3281252
Negoogloval jsem činost join() jen jsem viděl dotaz na problém, který
jsem taky řešil. Promiň za sebrané řešení
.
V pohodě. Řešení mi je jedno, kdybych chtěl řešení tak si to přepnu sám a nikomu si nestěžuji.
Jen jsem konstatoval, že to je to samé. 
Zobrazeno 12 zpráv z 12.