Diskuze: Nefunkční formulář
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
A co to řešení formuláře udělat na té stránce samé stránce, kdy by
se nemusela otevírat nová stránka. A jenom by to vypsalo, že to bylo
zapsáno...
<?php
if(isset($_POST['odeslat']){
$text = $_POST['text'];
$handle = fopen("zápisnik.php", "r+");
fwrite("$handle", "$text");
fclose("$handle");
echo "<h3>Zápis proběhl</h3>";
}
?>
<form method="post">
<input name="text" type="text"><br>
<input type="submit" name="odeslat" value="Zapsat">
</form>
Ano to by bylo super, ale pořád mi to tu dělá nějak paseku.. Třeba tam kde mám ten kód vložený tak sem ještě ani nezmáčkl tlačítko a už je tam vypsáno to echo a je tam půl toho kódu viditelného. A když to chci zapsat tak se nic neděje.
Jo a když zapisuji HTML taky třeba v té větě tak se to musí nějak speciálně ošetřit? ty tagy jsou totiž také vidět na stránce kde je to napsané v kódu.
<?php
if(isset($_POST['odeslat'])){
$text = $_POST['text'];
$handle = fopen("zapisnik.php", "a+");
fwrite($handle, $text);
fclose($handle);
echo "<h3>Zápis proběhl</h3>";
}
?>
<form method="post">
<input name="text" type="text"><br>
<input type="submit" name="odeslat" value="Zapsat">
</form>
Jsem to neodzkoušel teď
by mi to mělo fungovat. Chyby si měl:
Ano je to nepřehledné, ale já to teď jenom zkouším. učím se PHP tak
zkouším všechno Teď
ukládám do souboru pomocí PHP html tagy a pak bych je chtěl vložit na
stránku. myslím že je to jednodušší než s databází. a s tím zas tak
moc neumím
No tak věty máme za sebou a to chápu.. Ale ten můj byť opravený script mi nejde. Dám ho sem a podívej se na to.. Prostě to pořád nefunguje a dělá to paseku. to budou ty HTML značky v tom. Ale nevím ja je "zneutralizovat".
<div class="add-extended-window-content">
<form method="post">
Zde vložte adresu videa: <br>
<input name="video_url" type="text" placeholder="URL"><br>
<input type="submit" name="submit" value="PŘIDAT">
</form>
<?php
if(isset($POST_['video_url'] && $_POST['odeslat'])){
$videoUrl = POST_['video_url'];
$parts = parse_url($videoUrl);
parse_str($parts['query'], $query);
$videoImgUrl = 'https://i.ytimg.com/vi/' . $query['v'] . '/maxresdefault.jpg';
$videoEmbedUrl = 'https://www.youtube.com/embed/' . $query['v'];
$write_this = '
<div class="img-wrapper small_wrap">
<a class="fancybox fancybox.iframe" rel="video-galery" href="$videoEmbedUrl">
<img src="$videoImgUrl"></a>
</div>';
$handle = fopen("content.php", "a+");
fwrite($handle, $write_this);
fclose($handle);
echo "<h3>Video bylo přidáno.</h3>";
}
?>
</div>
Jde o to že tam uživatel zadá adresu videa a pak se do souboru zapíše html kód pro zobrazení videa a miniatury.
Na první pohled vidím chybu a to, že PHP skript, který to provádí musí
být nad formulářem (řádkově), protože logicky když to ta stránka znova
vypíše / nastaví tak tím splní podmínku, že to je nastavené a provede
to. Takže v první řadě musí jít PHP nahoru
Následně tam máš chybu v PHP podmínce. Nemůžeš se ptát, jestli je
if(isset($POST_['video_url'] && $_POST['odeslat']))
/* Lepší a funkční varianta:
* Pokud by si se chtěl ptát na to, jestli tam vložil i to URL videa,
* tak na to bych napsal další podmínku :)*/
if(isset($_POST['odeslat']))
Dále se pak podívej na "POST_", protože se to nepíše takto, ale takto $_POST
Ve formuláři máš pro tlačítko odeslat name="submit" a v PHPku se ptáš, jestli existuje $_POST['odeslat']
Pak máš blbě zapsané proměné: "$videoEmbedUrl" a "$videoImgUrl" sice
ano zapíšou se tam, ale budou se brát "jako text" > ale používá se toto
"'..'" kde mezi tečky vložíš proměnou pak to PHPko vezme jako PHP
proměnou a bude s tím tak pracovat
Co jsem zkoušel - poslat tam pár videí tak mi je to sice přechrupe, ale
obrázek mi to nevrátí. Nevím proč ten kód si někde našel. Popřípadě
napsal k tomu někdo víc.
Doufám, že jsem ti aspoň trochu pomohl. Zkus si to po sobě projít a
opravit si to Snad jsem na nic
nezapomenul
Ahoj, určitě si mi pomohl už dost musim taky něco zvládnout sám
Ten kód mi poslal jeden týpek a
funguje. Ale v tom PHP se mi aktivují ty url adresy které mám v těch
proměných takže když to dám nad ten form tak ten formulář samotný ani
nevidím
a stejně to
nějak nefunguje :/ Ale nějak to musim zkusit pořešit :/
Díky moc
Hele ještě jsem tak googlil a našel zkus změnit:
$videoImgUrl = 'https://i.ytimg.com/vi/' . $query['v'] . '/maxresdefault.jpg';
za:
$videoImgUrl = 'https://i.ytimg.com/vi_webp/' . $query['v'] . '/default.webp';
Jestli se ti nezobrazují ty obrázky. A hele ještě
myšlenka, jak se jmenuje ten soubor ve kterém to píšeš? Nemá
náhodou jinou koncovku než .php, když píšeš, že ti to píše něco
jiného? Mám totiž podezření, že tam máš koncovku .html a proto ti to
píše ty "blbosti" Když si
nenapsal žádnou PHP chybu
Tak sem to už rozhýbal, ale musel sem to přecejen dát do jiného .php souboru v tom indexu to nejde, nevím proč.
Když změním to $videoImgUrl jak si psal tak bude ten obrázek ve špatné
kvalitě.
když se podíváš nakonec tak je tam '/maxresdefault.jpg' a to znamená že
to bude jakože normální obrázek né přesně ta miniatura
A psal sem to v touboru index.php a teď v add_video.php takže tam by
problém být neměl
V tom původním kódu vidím trochu jiné chyby, než na které jsi byl upozorněn.
<div class="add-extended-window-content">
<form method="post">
Zde vložte adresu videa: <br>
<input name="video_url" type="text" placeholder="URL"><br>
<input type="submit" name="submit" value="PŘIDAT">
</form>
<?php
if(isset($POST_['video_url'] && $_POST['odeslat'])){ // Podmínka by se neměla vyhodnotit, protože tato proměnná neexistuje. Asi jsi myslel: $_POST['video_url']
$videoUrl = POST_['video_url']; // Tohle by ti mělo vyhodit chybu, zas tam má být: $_POST['video_url']
$parts = parse_url($videoUrl);
parse_str($parts['query'], $query);
$videoImgUrl = 'https://i.ytimg.com/vi/' . $query['v'] . '/maxresdefault.jpg';
$videoEmbedUrl = 'https://www.youtube.com/embed/' . $query['v'];
Zobrazeno 11 zpráv z 11.