Diskuze: Vkládání do souboru OOP
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 17 zpráv z 17.
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.


Mně spíš přijde, že se k volání funkce file_put_contents() vůbec nedostane.
Když procházíš pole $jidla, pokaždé si přepíšeš hodnotu
$this->jidla. Tzn. $this->jidla obsahuje jen jednu jedinou položku.
Jak vypadá obsah toho .txt souboru?
Edit: nechybí ti tam náhodou za ifem konec bloku?
Měl jsi pravdu, chybí. Teď už tam je. a $this->jidla je pole, to už
mám taky opravené. Takže by to teoreticky mělo jít ne?
obsah souboru není, právě tato funkce mi ho má vytvořit a zrovna do něho
napumpovat data.
btw: Nebude spíš dělat bordel to, jak se dostávám do adresáře s tím souborem?
A existuje ta složka? Mám pocit, že ta fce vytvoří soubor pokud neexistuje, ale složku už ne.
Složky právě existují. A $this->skupina a $this->uzivatel vrací to co má (skupina, uživatele).
A co udělá v tom druhým foreachi
var_dump($value);
Vyplodí toto:
array(2) {
[0]=>
string(24) "Svíčková s knedlíkem"
[1]=>
string(4) "true"
}
<br />
<b>Warning</b>: file_put_contents(./Ucitele/Jan.txt): failed to open stream: No such file or directory in <b>/data/web/virtuals/83366/virtual/www/subdom/jidelna/tridy/Objednat_jidla.php</b> on line <b>18</b><br />
array(2) {
[0]=>
string(63) "Jelení kýta se šípkovou omáčkou s bramborovým knedlíkem"
[1]=>
string(5) "false"
}
array(2) {
[0]=>
string(10) "Palačinky"
[1]=>
string(4) "true"
}
<br />
<b>Warning</b>: file_put_contents(./Ucitele/Jan.txt): failed to open stream: No such file or directory in <b>/data/web/virtuals/83366/virtual/www/subdom/jidelna/tridy/Objednat_jidla.php</b> on line <b>18</b><br />
array(2) {
[0]=>
string(51) "Srbské vepřové žebírko s houskovým knedlíkem"
[1]=>
string(5) "false"
}
array(2) {
[0]=>
string(19) "Boloňské špagety"
[1]=>
string(4) "true"
}
<br />
<b>Warning</b>: file_put_contents(./Ucitele/Jan.txt): failed to open stream: No such file or directory in <b>/data/web/virtuals/83366/virtual/www/subdom/jidelna/tridy/Objednat_jidla.php</b> on line <b>18</b><br />
array(2) {
[0]=>
string(49) "Masové nudličky na čínský způsob s kuskusem"
[1]=>
string(5) "false"
}
array(2) {
[0]=>
string(38) "Vepřový řízek s bramborovou kaší"
[1]=>
string(4) "true"
}
<br />
<b>Warning</b>: file_put_contents(./Ucitele/Jan.txt): failed to open stream: No such file or directory in <b>/data/web/virtuals/83366/virtual/www/subdom/jidelna/tridy/Objednat_jidla.php</b> on line <b>18</b><br />
array(2) {
[0]=>
string(23) "Rybí prsty s bramborem"
[1]=>
string(5) "false"
}
array(2) {
[0]=>
string(16) "Čína s rýží"
[1]=>
string(4) "true"
}
<br />
<b>Warning</b>: file_put_contents(./Ucitele/Jan.txt): failed to open stream: No such file or directory in <b>/data/web/virtuals/83366/virtual/www/subdom/jidelna/tridy/Objednat_jidla.php</b> on line <b>18</b><br />
array(2) {
[0]=>
string(38) "Střpačky s uzeným masem a se zelím"
[1]=>
string(5) "false"
}
Všude kde je true t ose uloží do souboru, kde není neuloží se, viz podmínka
Hází ti to tam warningy, že neexistuje soubor. Ta fce by ten soubor měla normálně vytvořit, tak nevím. Třeba to nějak blbne s tou konstantou FILE_APPEND.
Měl jsem špatně napsanou cestu.
Chyběla mi tam proměnná $this->adrJidla. Nyní to errory nevyhazuje,
ale soubor to stále nevytvoří. 
Není třeba problém v cestě? Třeba nějaká proměnná bude nultá při špatném zadání. Nemáš je třeba v jiné složce, která obsahuje dané podložky?
Složky jsou správně, název souboru také. A proměnné mají hodnoty takové jaké mají mít. To jsem si otestoval
Tak to je tedy záhada. Dle všeho by to mělo fungovat..
Nyní vše funguje. Nevím proč. Každopádně v mém případě jsem musel i if dát to true do "".
Vše funguje.
Řešení:
class Objednat_jidla{
private $uzivatel;
private $jidla=array();
private $skupina;
private $adrJidla="uzivatele_jidla";
public function zapis_jidla($komu,$jidla,$skupina){
$this->uzivatel=$komu;
$this->skupina=$skupina;
foreach ($jidla as $key => $value) {
$this->jidla[]=explode(";", $value);
}
foreach ($this->jidla as $key => $value) {
if($value[1]=="true"){
file_put_contents("./".$this->adrJidla."/".$this->skupina."/".$this->uzivatel.".txt", $value[0].";\n",FILE_APPEND);
}
}
return "úspěch";
}
}
Předtíms neměl $this->jidla[] = explode(...), ale jen $this->jidla =
explode(...). To ti mělo udělat jen jednu hodnotu a jelikož v posledním poli
byla hodnota false, tak se nesplnila podmínka.
Zřejmě jsi ten dump házel do prvního foreache.
Ondřej:
Ano, ale jak mi to nelšo tak jsem zkoušel všechno možné a zapomněl jsem to
dát zpět.
Martin:
to $this->jidla[]=explode(...) to jsem upravoval hned, jak jsi poprvé odpověděl.
Jinak dump jsem házel do druhého foreache, ale před podmínku, takže to vyhodilo všechno.
Každopádně Děkuji za pomoc.
Aha, no tak hlavně, že se to vyřešilo 
Snad jsem aspoň trochu pomohl.
Zobrazeno 17 zpráv z 17.