Diskuze: Oznámení
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 17 zpráv z 17.
//= 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.
máš dvě možnosti, jednoduchou a složitou
U té jednoduché to uděláš falešným oznámením, tedy nasadíš metodu na formulář onsubmit="alert('Formulář odeslán')" a teprve potom to odešleš... je to trochu falešné, ale z 99.9% se to co odešleš skutečně odešle.
U té složitější, se zapojí ajax. Formulář se odešle, ale stránka se
nepřesměruje.
Při odeslání opět použiješ onsubmit, spustíš funkci s obsahem toho co je
dole a přidáš return false, aby se fyzicky formulář neodeslal. Přes
Javascript pak můžeš třeba formulář schovat, nebo vymazat...
Třeba takto:
data = "polozka1="+form.polozka1+"&polozka2="+form.polozka2; // atd...
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
alert("Formulař odeslán.");
}
}
xhttp.open("POST", "system.php", true);
xhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=utf-8");
xhttp.setRequestHeader("Content-length", data.length);
xhttp.setRequestHeader("Connection", "close");
xhttp.send(data);
Prosím, jsem začátečník, jak se ta metoda nasazuje ?
Kód máš výše. Protože jsi začátečník, přečti si nejprve něco o AJAXu. Potom se můžeme bavit dál.
Já potřebuji jen tohle rychle. A já se neptám na kód, já se ptám jak ho nasadit? Kam ho napsat ?
to je takhle blbě píše. Část je v HTML stránce, část Javascriptovém
souboru... část v PHP programu, který to zpracovává. Když to nasadíš
blbě, tak odpálíš server s hostingem. Když správně nezpracuješ
posílaná data, před a po odeslání, nemusí se ti poslat celá.
Jestli se s tím chceš jako začátečník vypořádat trochu kultivovaněji.
Vytvoř si stránku, kde bude informace o uložení formuláře a pak v PHP
scriptu po zpracování formuláře odkaž na tuto stránku.
Ale AJAX není zas tak složitý, v podstatě ti stačí to co jsem ti napsal, vše ostatní se řeší přes JavaScript, jako načtení hodnoty, úprava vzhledu a pod.
Stejně Vám pořád moc nerozumím. Mohl bych poprosit o Skype ?
skype nepoužívám... dej nějak odkaz na formulář a zkusím pomoci...
spíš napíšu kód na index.php, na kterým je form a kontakt.php se
scriptem.
Index:
<form method="post" action="kontakt.php">
<p>Typ zprávy: </p><br />
<select name="typ">
<option value="mail">Klasická zpráva</option>
<option value="reklamace">Reklamace</option>
<option value="napady">Nápady a vylepšení stránky</option>
<option value="stiznosti">Stížnosti</option>
<option value="dotazy">Dotazy k objednávce</option>
</select>
<p>Jméno a přijmení: </p>
<input name="jmeno-prijmeni" type="text" required>
<p>Email: </p>
<input name="email" type="text" required>
<p>Zpráva: </p>
<textarea name="text" required></textarea>
<br />
<input type="submit" value="Odeslat!">
</form>
Kontakt:
<?php
mb_internal_encoding('UTF-8');
if ($_POST)
{
$hlavicka = 'From ' . $_POST['email'];
$hlavicka = "Content: text/html, charset=utf-8";
$adresa = '[email protected]';
$predmet = $_POST['typ'];
$zprava = 'Jméno a přijmení: ' . $_POST['jmeno-prijmeni'] . 'Zpráva: ' . $_POST['text'];
$odeslano = mb_send_mail($adresa, $predmet, $zprava, $hlavicka);
}
?>
máš to v mailu...
Nebylo by lepší zde zanechat i řešení? Tohle potřebuje pořád někdo.
o.k. ale je potřeba to ošetřit z bezpečnostního hlediska.
<div id="formular">
<form method="post" name="formular" onsubmit="odeslat(); return false">
<p>Typ zprávy: </p><br />
<select name="typ" id="typ">
<option value="mail">Klasická zpráva</option>
<option value="reklamace">Reklamace</option>
<option value="napady">Nápady a vylepšení stránky</option>
<option value="stiznosti">Stížnosti</option>
<option value="dotazy">Dotazy k objednávce</option>
</select>
<p>Jméno a přijmení: </p>
<input name="jmeno_prijmeni" id="jmeno" type="text" required />
<p>Email: </p>
<input name="email" id="email" type="text" required />
<p>Zpráva: </p>
<textarea name="text" id="text" required></textarea>
<br />
<input type="submit" value="Odeslat!" />
</form>
</div>
<script>
function odeslat()
{
data= "typ="+escape(encodeURIComponent(document.getElementById("typ").value));
data += "&jmeno-prijmeni="+escape(encodeURIComponent(document.getElementById("jmeno").value));
data += "&email="+escape(encodeURIComponent(document.getElementById("email").value));
data += "&text="+escape(encodeURIComponent(document.getElementById("text").value));
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("formular").innerHTML = xhttp.responseText;
alert("Formulář byl odeslán!")
}
}
xhttp.open("POST", "script.php", true);
xhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=utf-8");
xhttp.setRequestHeader("Content-length", data.length);
xhttp.setRequestHeader("Connection", "close");
xhttp.send(data);
}
</script>
Zobrazeno 17 zpráv z 17.