21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Jo jo
Profil *
Moc php neumim, ale podle jakpsatweb ci dalsich se snazim vytvorit formular pro odeslani emailu. Na strance kde formular mam odkazuju pres action na druhou stranku php, kde mam kod uvedeny nize. Nejdriv se chci zeptat jestli to tak mam spravne, bylo mi naznaceno ze nikoliv. Email ale prijde bez problemu. Jako odesilel je uvedeny email, jmeno je v textu emailu, na radce nize je text dotazu. Takze to je prvni dotaz.
A druhy: Ve formulari si clovek muze vybrat ze dvou lidi, komu chce email poslat. Ja tedy jeste potrebuju zajistit, aby kdyz to chce poslat cloveku 1, aby se to poslalu jemu a kdyz vybere (pres select samozrejme) cloveka 2,aby se to zas poslal jen jemu. Napisete mi nekdo ten skript? Me vedomosti uz tohle neberou, dekuji.
Jo jo
Profil *
Ja blbec zapomnel na ten skript, tak ten je tady:

<? if Mail("adresa@adresa.cz", "Kontaktni formular", "$jmeno .$zprava", "From: " . $odesilatel) )
echo "Mail byl odeslán";
else echo "Mail se nepodařilo odeslat"; ?>
Hooonza
Profil *
1. Když ti mail přijde, tak je to v pořádku:-) Pokud by došlo na situaci, že by se mělo zobrazit "Mail se nepodařilo odeslat", myslím, že by se nemělo zobrazit nic, spíš by to mělo být takto:

<? if (Mail("adresa@adresa.cz", "Kontaktni formular", "$jmeno .$zprava", "From: " . $odesilatel) )
{echo "Mail byl odeslán"; } else {echo "Mail se nepodařilo odeslat";} ?>

(viz http://cz.php.net/manual/cs/control-structures.else.php), ale možná to funguje...

2. 2 příjemci:
odesílací formulář:

<form action="..." method="_POST">
...
<select name=komu>
<option value=pepovi>Pepovi
<option value=petrovi>Petrovi</select>
</form>

přijímací skript:
<?
$jmeno = $POST['jmeno'];
$zprava = $POST['zprava'];
$odesilatel = $POST['odesilatel'];

$komu = $POST['komu'];
if ($komu=="pepovi") $komu = "pepa@nekde.cz";
if ($komu=="petrovi") $komu = "petr@nekde.cz";


if (mail($komu, "Kontaktni formular", "$jmeno .$zprava", "From: " . $odesilatel) ) {
echo "Mail byl odeslán"; } else {
echo "Mail se nepodařilo odeslat";
} ?>
Jo jo
Profil *
1) Zkopiroval jsem si to z jakpsatweb ( http://www.jakpsatweb.cz/formular-mail.html#vlastni ), tak nevim, taky jsem se na to chtel zeptat, jak to funguje. Dik za odkaz, prozkoumam to.

2) Ano dekuji moc, na prvni pohled by to mohlo fungovat, zkusim to a sverim se pote s vysledkem.
YoSarin
Profil
Hooonza
Na
if Mail("adresa@adresa.cz", "Kontaktni formular", "$jmeno .$zprava", "From: " . $odesilatel) )
echo "Mail byl odeslán";

nic špatného není - IMHO to funguje i bez uzavření do bloků
Jo jo
Profil *
YoSarin: Diky, taky si to myslim, zvlast kdyz to fungovalo a email normalne prisel. Kamarad mi to ale predelal na syntaxi s promenou, ve ktere si to $jmeno .$zprava udelam dopredu. Ale je to vlastne to sami

Hooonza: Tak jsem si overil, ze v ty podobe v ktery to "Mail se nepodarilo odeslat" mam, to funguje. Protoze prave mi to tuto hlasku napsalo. Vim kde je problem. Jen se trochu ztracim ty definici komu? U select mam jako name=komu a pak to je i v tom php skriptu nekolikrat a ja se v tom nevyznam. Ten select mam takto:

Vyberte příjemce: <select name="prijemce">
<option value="roman">Roman</option>
<option value="petr">Petr</option>
</select>


Kde vsude v tom php skriptu bude tedy prijemce? Znamena to, ze mam vsechny tam uvedene komu predelat na prijemce? (ono by bylo jednodussi predelat to select name na komu, ale to bych zas nechapal jak to, tak se chci radsi zeptat.
Alphard
Profil
if Mail("adresa@adresa.cz", "Kontaktni formular", "$jmeno .$zprava", "From: " . $odesilatel) )
chybí závorka za if

Jo jo
$prijemce = $_POST['prijemce'];
if ($prijemce == "roman") $komu = "roman@nekde.cz";
if ($prijemce == "petr") $komu = "petr@nekde.cz";

tohle dej někam na začátek a pak už pracuj jen s proměnou $komu
Hooonza
Profil *
YoSarin
nic špatného není - IMHO to funguje i bez uzavření do bloků
Mně šlo spíš o else - bylo oddělené středníkem, s tím má zkušenost (ale z javaskriptu), že to oddělené být nesmí. No, jak vidím tady, asi to oddělené být někdy může:-) ... Pak chaos se závorkama.

Jo jo
Wow! Chyba, omlouvám se: v mém skriptu chyběla podtržítka ($jmeno = $POST['jmeno'];). Má to být tak, jak píše Alphard: $prijemce = $_POST['prijemce'];
Jo jo
Profil *
Alphard
jj,vim o tom, chybel mi tam i endif a dalsi veci. Jinak dekuju za pomoc. Skvele to funguje.

Dam jsem konecny php skript, treba nekomu nekdy pomuze:

<?
$prijemce = $_POST['prijemce'];
if ($prijemce == "roman") $komu = "roman@neco.cz";
if ($prijemce == "petr") $komu = "petr@neco.cz";
$text = "Jméno: ".$jmeno." ".$zprava;
if ( Mail($komu, "Kontaktni formular", $text , "From: " .$odesilatel) ):
echo "Mail byl úspěšně odeslán";
else: echo "Mail se nepodařilo odeslat";
endif;
?>

Vysledek je zatim na http://ele.studiopole.cz/kontakt.html a podeji bude na http://www.elektrogalerie.cz

Tak jeste jednou moc dekuji.
Jo jo
Profil *
Jeste problemek
Nakonec se skript jeste trochu upravil, protoze v ty podobe predtim nefungovala diakritika. Konecna podobe je tedy nize. Problem je. Ze jmeno ktere odesilatel uvede v poli pro jmeno se usekne, konktretne posledni pismenko. Tedy kdyz tam napisu "Petr" prijde mi na email "Pet", kdyz dam "Petr Novák" prijde mi "Petr Nová" atd. Nevite co s tim? Formular je na http://www.elektrogalerie.cz/kontakt.html

<?
$prijemce = $_POST['prijemce'];
if ($prijemce == "kratochvil") $komu = "kratochvil@elektrogalerie.cz";
if ($prijemce == "vladyka") $komu = "vladosik@seznam.cz";
$header = "From: ".$_POST["odesilatel"]." Content-Type: text/plain;charset=windows-1250";
$text = "Jméno: ".$_POST["jmeno"]." ".$_POST["zprava"];
if(@Mail($komu, "Kontaktni formular", $text , "$header")):
echo "Zpráva byla úspěšně odeslána, odpovíme vám v co nejkratší možné době";
else:
echo "Zprávu se nepodařilo odeslat!!";
endif;
?>
Jo jo
Profil *
Hm, nikdo nevi cim to je jo?
Hooonza
Profil *
Teda, nevím, jestli to máš ve skriptu ošetřené (a odesláním tady do diskuse se ztrácejí zpětná lomítka:-) ), hlavičky ($header) mají být každá položka na novém řádku (a zpráva pak taky), každý řádek hlavičky je třeba ukončit pomocí n (bez mezery, [zpětné lomítko]n ), ev. pokud to nejde, lze zkusit r n (zase bez mezer, [zpětné lomítko]r [zpětné lomítko]n) nebo jen r ([zpětné lomítko]r). Teda:

$header = "From: ".$_POST["odesilatel"]."[zpětné lomítko]nContent-Type: text/plain;charset=windows-1250[zpětné lomítko]n";

Víc teorie - to nikdy neuškodí:-) - tady.
Jo jo
Profil *
Ty n tam mam. Nevim proc se tu fakt nezobrazili, nevsiml jsem si toho. Jinak super odkaz, neco takovyho jsem hledal. Takze diky.

Jo a jak jsem se ptal na to, ze mi to usekava posledni pismeno u Jmena. Tak dnes to znicehonic prestalo delat a jmeno prijde cele... Nevim proc ale je to tak:-)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0