Autor Zpráva
Abbysak
Profil
Dobrý večer,

Mám problém, skúšal som hľadať, ale nijak mi to nepomohlo.. Chcel by som formulár, ktorý by posielal email na nejakú emailovú schránku. (to viem, to mi išlo), ale chcel by som skúsiť, nejak urobiť, aby na jednej stránke bol formulár a sám na seba odkazoval cez action. Viem, že by som to mal urobiť nejak cez podmienky. Ale ako.. Napr. Viem, že nemám žiadne skúsenosti s Php ani podobne, takže len radu ..
panther
Profil
Abbysak:
aby na jednej stránke bol formulár a sám na seba odkazoval cez action.
action=""
nebo
action="<?php echo $_SERVER['REQUEST_URI'] ?>"
Abbysak
Profil
Toto som vedel, ale neviem ako urobiť, aby som mal nejaké pripomienky k webu a ak sa klikne na nejaké tlačítko v menu napr. pošlite nám pozrie sa, či napr. $predmet je prázdny a ak je, tak nech vypíše formulár, a keď nie tak nech zobrazí formulár. niečo ako
<?  
  if (empty ($_POST['email'])) 
  { 
?>
<form action="" method="post">

<fieldset><legend>Formulár a email</legend> Meno: <input name="meno" type="text" 
size="32" /><br />

Priezvisko: <input name="priezvisko" type="text" size="28" /><br />

E-mail: <input name="email" type="text" size="32" /><br />

Predmet: <input name="predmet" type="text" size="30" /><br />


<br>Text:<br>

<textarea name="text" rows="7" cols="30"></textarea><br>

<input name="odoslat" type="submit" value="Odoslať" />

</fieldset></form>


<br>

<font color="red">Všetky údaje sú povinné!</font>
<? 
  } 
  else 
  { 
  echo "Vaša poznámka bola spracovaná" 
  } 
?>

Ešte som tam nestihol dokompetizovať skript na odoslanie mailu, ale to sa dorobí.. Aby ste lepšie chápali, bude s formulárom len jedna stránka a keď sa formulár odošle vráti to na stránku formuláru, ale server zistí, že $_POST[email] nieje prázdny, tak už len ukáže echo "vas email bol odoslany" vôbec neviem, či by sa niečo také dalo, preto sa pýtam profesionálov...
panther
Profil
Abbysak:
nahoru si dej zpracování formuláře, pod to formulář. Symbolicky takto nějak:
<?php
if (odeslano) {
  if (!empty($_POST['mail']) and !empty($_POST['name']) ...) {mail(), redirect}
  else {
    $message = array();
    if (empty($_POST['mail'])
      $message[] = 'Vyplnte mail';
    if (empty($_POST['name']))
      $message[] = 'Vyplnte jmeno';
  }
}

?>

<form ...>
<?php 
  if (!empty($message))
    echo $message; //ja to ukladal do pole, vypisuju to pres foreach do seznamu vetsinou, jde naplnovat i promenna, pak by zde stacilo echo
 ?>
  <input ...>
</form>


Ještě můžeš kontrolovat, jestli je v proměnné s emailem správný formát e-mailové adresy, koukni se na filter_var.
Abbysak
Profil
Cez noc sa to pokúsim nejak zostaviť pre seba, ak by mi niečo nevyšlo, ešte sem napíšem.. Ináč Vám veľmi pekne ďakujem.. S Php tak "začínam" a také drobné vysvetlenie na pochopenie mi vždy veľmi pomôže..
Na zistenie emailu by mohlo byť aj ereg alebo preg?
panther
Profil
Abbysak:
Na zistenie emailu by mohlo byť aj ereg alebo preg?
ano, regulárem by to také šlo, ale jednodušší a kratší je použít rovnou tuto funkci.
Abbysak
Profil
Tak ešte raz ďakujem :-)
Abbysak
Profil
<?php
$prijemca = "rmsoftx@gmail.com";
if (odoslane){
  if (!empty($_POST['mail']) and !empty($_POST['name'])) {mail("$prijemca, $name, $email")}
  echo "odoslane";
  else {
    $message = array();
    if (empty($_POST['mail'])
      $message[] = 'Vyplnte mail';
    if (empty($_POST['name']))
      $message[] = 'Vyplnte jmeno';
  }
}

?>
<form action="poslitenam.php" method="post">
<?php 
  if (!empty($message))
    echo $message;
 ?>

<fieldset><legend>Formulár a email</legend> Meno: <input name="name" type="text" 
size="32" /><br />


E-mail: <input name="mail" type="text" size="32" /><br />



<br>Text:<br>

<textarea name="text" rows="7" cols="30"></textarea><br>

<input name="odoslat" type="submit" value="Odoslať" />

</fieldset></form>

Môžte mi poradiť ešte raz a opraviť ma? Nechápem tomu.. Ako som už vravel som len začiatočník...
panther
Profil
Abbysak:
začni tím, že si nastuduješ základy PHP. Copak ti to nepíše žádnou chybu?

Když jsem v [#4] psal doslova „Symbolicky takto nějak:“, bylo tím myšleno, že ten zápis je opravdu symbolický.
Na 2. ř. tvého kódu chybí středík, 3. řádek je taky blbost (v podmínce je nějaký rádoby string, navíc bez uvozovek), atd.

Programovat/učit se programovat stylem Ctrl+C, Ctrl+V z diskusního fóra není dobrý nápad. Spíše bych řekl, že špatný.
Abbysak
Profil
panther:
<?php        
$prijemca = "rmsoftx@gmail.com";
if (empty($_POST['name']) and empty($_POST['email']) and empty($_POST['text'])) {
echo 
"
<form action=\"formular.php\" method=\"post\">
<fieldset><legend>Formulár a email</legend> Meno: <input name=\"name\" type=\"text\" 
size=\"32\" /><br />


E-mail: <input name=\"email\" type=\"text\" size=\"32\" /><br />



<br>Text:<br>

<textarea name=\"text\" rows=\"7\" cols=\"30\"></textarea><br>

<input name=\"odoslat\" type=\"submit\" value=\"Odoslať\" />

</fieldset></form>";
echo "<font color=\"red\"> Všetky údaje sú povinné </font>"; }
else   {

mail ("$prijemca", "$name", "$email", "$text");
echo "email uspesne odoslany";
}
?>

Toto mi aj ide, nájdeš tam nejakú chybu? Je to samozrejme len začiatok budem to upravovať pre bezpečnosť, lenže ja tam nič chybné nevidím, funguje to...
panther
Profil
Abbysak:
nájdeš tam nejakú chybu?
jestli tam je chyba, PHP ti o ní řekne samo, když si zapneš výpis chybových hlášek. Upřímně, kde se vzala ta móda dávat do PHP sáhodlouhé výpisy HTML kódu, ke všemu ještě s escapovanými uvozovkami (když se dají použít apostrofy)?

Na 25. ř. nenaplňuješ nikde proměnné name, email a text (ty proměnné tahej z $_POST), podívej se, jaké parametry má funkce mail(). A zapni si vypisování chyb. hlášek, na tohle bys přišel sám.
Abbysak
Profil
panther:
Tie "sáhodlouhé" kódy som sa učil z knihy. Prepáč nie každý je vzdelaný ako vy :-). Čiže stačí ak pred mail dám
$meno = $_POST['name'];

a do mail ($meno);?
Neviem, ako by som si mal zapnúť chybové hlášky, mám to na webzdarma a tam mi to fičí...
Keeehi
Profil
Abbysak:
divím se, že ti funguje toto:
mail ("$prijemca", "$name", "$email", "$text");

Takto to vypadá lépe:
mail ($prijemca, "Zpráva od $name", $text, "From: $email\r\nReply-To: $email\r\n");
AM_
Profil
Abbysak:
Toto mi aj ide, nájdeš tam nejakú chybu?
pokud něco funguje, těžko v tom hledat chybu. To, že stylisticky je to hrozné, je jiná věc, ale o tom si raději najdi nějaký obsáhlejší materiál, jak psát slušně vypadající kód. Pro začátek vypisovat celý formulář echem je dost hrozné, toto funguje také:
<?php
if (podminka) {
?> <nejaky_html_kod>
<?php } else
...
Abbysak
Profil
AM:
Presne to som potreboval, nejak som nenašiel a bál som sa, že to takto nebude fungovať.. :-) Ďakujem, hneď ešte pozriem ako dobre "štýlovať" a potom sa môžem pustiť do ďalšieho vzdelávania.. :-/
Abbysak
Profil
<?php 
$prijemca="rmsoftx@gmail.com";   // Prijemca Mailu
if(odoslane) (empty($_POST['name']) and empty($_POST['email']) and empty($_POST['text']))  {          //Zacina prva podmienka
// Zacina druha podmienka
if(odoslane1) (empty($_POST['name']) or empty($_POST['email']) or empty($_POST['text']))  { ?>  
<form action="formular.php" method="post">
<fieldset><legend>Formulár a email</legend> Meno: <input name="name" type="text" 
size="32" /><br />


E-mail: <input name="email" type="text" size="32" /><br />



<br>Text:<br>

<textarea name="text" rows="7" cols="30"></textarea><br>

<input name="odoslat" type="submit" value="Odoslať" />

</fieldset></form>
<font color="red"> Nevyplnili ste všetky údaje! </font> 

<?php } else {  ?>
<form action="formular.php" method="post">
<fieldset><legend>Formulár a email</legend> Meno: <input name="name" type="text" 
size="32" /><br />


E-mail: <input name="email" type="text" size="32" /><br />



<br>Text:<br>

<textarea name="text" rows="7" cols="30"></textarea><br>

<input name="odoslat" type="submit" value="Odoslať" />

</fieldset></form>
<font color="red"> Všetky údaje sú povinné </font> 
<? } }
//else obalovej podmienky
else   {
mail ($prijemca, "Správa od $name", $text, "From: $email\r\nReply-To: $email\r\n");
echo "Email bol uspesne odoslany!";
} 


?>

Čo v tomto mám zlé prosím vás? Chcel by som niečo také urobiť, neviem či to robím dobre. Ak NIESÚ dané všetky 3 polia tak mu hodí formulár, a v tom je ďalšia podmienka a ak uživateľ už niečo zadal, ale nevyplnil všetky 3 údaje tak mu to hodí ten formulár + ešte dopíše, že ste nezadali všetky povinné údaje. Viem, že by to stačilo vyriešiť tým, že by som to hneď povedal, a stále ak by nevyhodil bola by iba tá prvá podmienka, ale ja sa tak radšej učím z kódov a tak, ako z nejakej knižky čo všetko hneď zabudnem.. ďakujem

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0