Autor Zpráva
lucikmucik
Profil
Takže řeším jeden problém, kterej nejsem schopen vyřešit... Mám jeden formulář (kontaktní), který funguje, zde je jeho kód:

                                <div id="successSend" class="alert alert-success invisible">
                                    <strong>Zpráva odeslána</strong></div>
                                <div id="errorSend" class="alert alert-error invisible">Chyba.</div>
                                <form id="contact-form-mail" action="php/mail.php">
                                    <div class="control-group">
                                        <div class="controls">
                                            <input class="span12" type="text" id="name" name="name" placeholder="* Jméno nebo přezdívka" />
                                            <div class="error left-align" id="err-name">Prosím, napiš jméno.</div>
                                        </div>
                                    </div>
                                    <div class="control-group">
                                        <div class="controls">
                                            <input class="span12" type="email" name="email" id="email" placeholder="* Email" />
                                            <div class="error left-align" id="err-email">Napiš správnou adresu.</div>
                                        </div>
                                    </div>
                                    <div class="control-group">
                                        <div class="controls">
                                            <textarea class="span13" name="comment" id="comment" placeholder="* Zpráva"></textarea>
                                            <div class="error left-align" id="err-comment">Prosím napiš zprávu.</div>
                                        </div>
                                    </div>
                                    <div class="control-group">
                                        <div class="controls">
                                            <button id="send-mail" class="message-btn">Odeslat</button>
                                        </div>
                                    </div>
                                </form>

<?php

include 'functions.php';

if (!empty($_POST)){

  $data['success'] = true;
  $_POST  = multiDimensionalArrayMap('cleanEvilTags', $_POST);
  $_POST  = multiDimensionalArrayMap('cleanData', $_POST);

  $emailTo ="XXXX";

  $emailFrom ="XXXX";

  $emailSubject = "XXX Kontaktní formulář";

  $name = $_POST["name"];
  $email = $_POST["email"];
  $comment = $_POST["comment"];
  if($name == "")
   $data['success'] = false;
 
 if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) 
   $data['success'] = false;


 if($comment == "")
   $data['success'] = false;

 if($data['success'] == true){

  $message = "Jméno: $name<br>
  Email: $email<br>
  Text: $comment";


  $headers = "XXXX Formulář" . "\r\n"; 
  $headers .= "Content-type:text/html; charset=ISO-8859-2" . "\r\n"; 
  $headers .= "Od: <$emailFrom>" . "\r\n";
  mail($emailTo, $emailSubject, $message, $headers);

  $data['success'] = true;
  echo json_encode($data);
}
}

Pak mám druhý, který vypadá vlastně úplně stejně, jen je tam přidaný $item:

<div id="successSend" class="alert alert-success invisible">
                                    <strong>Zpráva odeslána</strong></div>
                                <div id="errorSend" class="alert alert-error invisible">Chyba.</div>
                                <form id="contact-form-feed" action="php/feedback.php">
                                    <div class="control-group">
                                        <div class="controls">
                                            <input class="span12" type="text" id="name" name="name" placeholder="* Jméno" />
                                            <div class="error left-align" id="err-name">Prosím, napiš jméno.</div>
                                        </div>
                                    </div>
                                    <div class="control-group">
                                        <div class="controls">
                                            <input class="span12" type="email" name="email" id="email" placeholder="* Email" />
                                            <div class="error left-align" id="err-email">Napiš správnou adresu.</div>
                                        </div>
                                    </div>
                                    <div class="control-group">
                                        <div class="controls">
                                            <input class="span12" type="text" id="item" name="item" placeholder="* Věc" />
                                            <div class="error left-align" id="err-item">Prosím, napiš předmět obchodu.</div>
                                        </div>
                                    </div>
                                    <div class="control-group">
                                        <div class="controls">
                                            <textarea class="span13" name="comment" id="comment" placeholder="* Zpráva"></textarea>
                                            <div class="error left-align" id="err-comment">Prosím napiš zprávu.</div>
                                        </div>
                                    </div>                                    
                                    <div class="control-group">
                                        <div class="controls">
                                            <button id="send-feedback" class="message-btn">Odeslat</button>
                                        </div>
                                    </div>
                                </form>

<?php

include 'functions.php';

if (!empty($_POST)){

  $data['success'] = true;
  $_POST  = multiDimensionalArrayMap('cleanEvilTags', $_POST);
  $_POST  = multiDimensionalArrayMap('cleanData', $_POST);

  $emailTo ="XXXX";

  $emailFrom ="XXXX ";

  $emailSubject = "XXXX Feedback formulář";

  $name = $_POST["name"];
  $email = $_POST["email"];
  $item = $_POST["item"];
  $comment = $_POST["comment"];
  if($name == "")
   $data['success'] = false;
 
 if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) 
   $data['success'] = false;

 if($item == "")
   $data['success'] = false;

 if($comment == "")
   $data['success'] = false;

 if($data['success'] == true){

  $message = "Jméno: $name<br>
  Email: $email<br>
  Věc: $item<br>
  Text: $comment";


  $headers = "XXXX Formulář" . "\r\n"; 
  $headers .= "Content-type:text/html; charset=ISO-8859-2" . "\r\n"; 
  $headers .= "Od: <$emailFrom>" . "\r\n";
  mail($emailTo, $emailSubject, $message, $headers);

  $data['success'] = true;
  echo json_encode($data);
}
}

JS-stejné pro Feedback, akorát s item navíc
$("#send-mail").click(function () {

       var name = $('input#name').val(); 
        var error = false;
        if (name == "" || name == " ") {
            $('#err-name').show(500);
            $('#err-name').delay(4000);
            $('#err-name').animate({
                height: 'toggle'
            }, 500, function () {
                
           });
            error = true;
        }
        
        
       var emailCompare = /^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/; 
        var email = $('input#email').val().toLowerCase(); 
        if (email == "" || email == " " || !emailCompare.test(email)) {
            $('#err-email').show(500);
            $('#err-email').delay(4000);
            $('#err-email').animate({
                height: 'toggle'
            }, 500, function () {
                
           });
            error = true; 
        }


       var comment = $('textarea#comment').val();
        if (comment == "" || comment == " ") {
            $('#err-comment').show(500);
            $('#err-comment').delay(4000);
            $('#err-comment').animate({
                height: 'toggle'
            }, 500, function () {
                
           });
            error = true; 
        }

       if (error == false) {
            var dataString = $('#contact-form-mail').serialize(); 
            $.ajax({
                type: "POST",
                url: $('#contact-form-mail').attr('action'),
                data: dataString,
                timeout: 6000,
                error: function (request, error) {

               },
                success: function (response) {
                    response = $.parseJSON(response);
                    if (response.success) {
                        $('#successSend').show();
                        $("#name").val('');
                        $("#email").val('');
                        $("#comment").val('');
                    } else {
                        $('#errorSend').show();
                    }
                }
            });
            return false;
        }

       return false; 
    });

Problém je ten, že první funguje bez problémů, ale druhý vůbec nereaguje, jen při prázdných polích vypíše chyby u Jména, Emailu a Zprávy... U Věci nic.
Davex
Profil
Domnívám se, že chyba by mohla být v tom JavaScriptu, který si sem nevložil, a který obsluhuje ten druhý nefunkční formulář. Pokud je totiž stejný jako ten tady, tak rozhodně nemůže fungovat správně, když má formulář jiné id.
lucikmucik
Profil
Tady je

$("#send-feedback").click(function () {

        var name = $('input#name').val();
        var error = false;
        if (name == "" || name == " ") {
            $('#err-name').show(500);
            $('#err-name').delay(4000);
            $('#err-name').animate({
                height: 'toggle'
            }, 500, function () {
                
            });
            error = true; 
        }
        
        var item = $('input#item').val();
        var error = false;
        if (item == "" || item == " ") {
            $('#err-item').show(500);
            $('#err-item').delay(4000);
            $('#err-item').animate({
                height: 'toggle'
            }, 500, function () {
                
            });
            error = true; 
        }
        
        var emailCompare = /^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/; 
        var email = $('input#email').val().toLowerCase();
        if (email == "" || email == " " || !emailCompare.test(email)) {
            $('#err-email').show(500);
            $('#err-email').delay(4000);
            $('#err-email').animate({
                height: 'toggle'
            }, 500, function () {
                
            });
            error = true; 
        }


        var comment = $('textarea#comment').val(); 
        if (comment == "" || comment == " ") {
            $('#err-comment').show(500);
            $('#err-comment').delay(4000);
            $('#err-comment').animate({
                height: 'toggle'
            }, 500, function () {
                
            });
            error = true;
        }

        if (error == false) {
            var dataString = $('#contact-form-feed').serialize(); 
            $.ajax({
                type: "POST",
                url: $('#contact-form-feed').attr('action'),
                data: dataString,
                timeout: 6000,
                error: function (request, error) {

                },
                success: function (response) {
                    response = $.parseJSON(response);
                    if (response.success) {
                        $('#successSend').show();
                        $("#name").val('');
                        $("#item").val('');
                        $("#email").val('');
                        $("#comment").val('');
                    } else {
                        $('#errorSend').show();
                    }
                }
            });
            return false;
        }

        return false;
    });
Davex
Profil
To mi bez problémů funguje. Ukaž stránku, kde to nefunguje.
lucikmucik
Profil
http://lmrig.tode.cz/#contact

Momentálně mi nejde ani ten první formulář O.o
Davex
Profil
Hlavní problém bude v tom, že máš oba formuláře na jedné stránce a identifikátory <input>ů pak nejsou unikátní, takže skript čte údaje odjinud.

Jinak s tou stránkou je v nepořádku ještě něco dalšího, protože se načítá šíleně dlouho (obrázky mají necelých 18 MB) a několikrát mi zamrznul prohlížeč s vytížením CPU na 100 %.
lucikmucik
Profil
Takže mám změnit v JS a PHP u feedback formuláře name, email, comment třeba na name-f, email-f, comment-f, potom i v kódu samotného formuláře, jestli to chápu správně?

Akorát mi nejde do hlavy, proč mi z ničeho nic nejede ani ten kontaktní formulář.

Obrázky zmenším, jsou v png a vysokém rozlišení myslím.
Davex
Profil
lucikmucik:
Takže mám změnit v JS a PHP u feedback formuláře name, email, comment třeba na name-f, email-f, comment-f, potom i v kódu samotného formuláře, jestli to chápu správně?
Formuláře se liší jen v jedné položce, takže já osobně bych sloučil ty dva formuláře do jednoho.

Akorát mi nejde do hlavy, proč mi z ničeho nic nejede ani ten kontaktní formulář.
Protože nejsou identifikátory v atributech id unikátní a událost „click“ je navázaná na jiné tlačítko na stránce.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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