Autor Zpráva
mlpb
Profil
Zdravím,

dokončujem web bp.php5.sk postavený na jQuery efekte t.j celý web je tvorený iba jedným súborom index.php a stránky navigácie sa prepínajú pomocou coda-slider efektu. V sekcii Kontakt mám umiestený formulár, ktorý je ošetrený pomocou php. Potrebujem doladiť 2 veci. Prvá je aby formulár vyplnené dáta naozaj odoslal a druhá aby sa po stlačení tlačítka "Odoslať" nepreplo na úvodnú stránku ale ostalo na záložke Kontakt. Teraz to akurát spraví kontrolu formulára a vypíše požadovanú hlášku, ale formulár sa neodošle a po stlačení "Odoslať" sa hneď prepne na úvodnú stránku.
Používam následovný php kód:
<?php
if(isset($_POST['email'])) {
     
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "nejaky@gmail.com";
    $email_subject = "predmet mailu";
     
     
    function died($error) {
        // your error code can go here
        echo "Je nám ľúto, ale formulár nebol odoslaný ";
        echo "Pri odosielaní sa vyskytli následujúce chyby.<br /><br />";
        echo $error."<br /><br />";
        echo "Vráťte sa o krok späť a vyplňte formulár znova.<br /><br />";
        die();
    }
     
    // validation expected data exists
    if(!isset($_POST['first_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['popis'])) {
        died('Je nám ľúto, ale Váš formulár sa nepodarilo odoslať. Skúste to neskôr');       
    }
     
    $first_name = $_POST['first_name']; // required
    $email_from = $_POST['email']; // required
    $popis = $_POST['popis']; // required
     
    $error_message = "";
    $email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
  if(!eregi($email_exp,$email_from)) {
    $error_message .=  '<p class="zvyraznenie">E-mailová adresa nemá správny formát.</p><br />';
  }
    $string_exp = "^[a-z .'-ľščťžýáíéäúôňÁČĎÉÍJKLĽĺŇÓŕřŘŠŤÚWŽ]+$";
  if(!eregi($string_exp,$first_name)) {
    $error_message .= '<p class="zvyraznenie">Nesprávne zadané meno.</p><br />';
  }
  if(strlen($popis) < 2) {
    $error_message .= '<p class="zvyraznenie">Nevyplnili ste text správy.</p><br />';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = "Údaje z kontaktného formulára.\n\n"."<BR>";
     
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
     
    $email_message .= "Meno: ".clean_string($first_name)."<BR/>";
    $email_message .= "Email: ".clean_string($email_from)."<BR/>";
    $email_message .= "Popis: ".clean_string($popis)."<BR/>";
     
     
// create email headers
$headers = 'From: '.$email_from."\r\n".
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
?>
 
<!-- include your own success html here -->
 
<p class="odoslane">Formulár bol úspešne odoslaný. V blízkej dobe Vás budeme kontaktovať.</p>

<?php
}
?>
Darker
Profil
No asi by nebylo na škodu jednotlivým záložkám přiřadit anchor (index.php#kontakt) a ten zpracovávat javascriptem. Tedy pokud napíšu http://www.bp.php5.sk/#kontakt dostanu se na kontakt. Udělej to tak i pro ostatní záložky.
A když už tam máš jQuerry, mohl bys formulář odesílat ajaxem. A správnost hodnot v políčkách bys mohl kontrolovat i javascriptem.
Rellik
Profil
Trochu OT: Zkoušel sis projít web s vypnutým JS? ;-

Darker:
"Odoslať" nepreplo na úvodnú stránku ale ostalo na záložke Kontakt.
tohle vyřešíš přidáním "action" do formu.
např:
<form action="http://www.bp.php5.sk/#odoslane" ...>

Tím ti to při odeslání skočí na záložku jakou si vytvoříš.
Případně to můře být v PHP po odeslání formuláře použitím funkce header()
mlpb
Profil
dík za rady, problém vyriešený

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