2016-07-06 21 views
0

自分の経験をランク付けするためのラジオボタンを備えた自分のウェブサイトのフィードバックフォームを作成しようとしています。ラジオボタンPHP POST

私はスタックオーバーフローのさまざまなオプションを見てきましたが、動作するものは見つかりませんでした。私が他の形でそれらを使用したように、名前などの基本的なfielsは動作します。私はちょうど情報を提出するラジオボタンを得ることができません。私は、フォームに入力して、[送信]をクリックすると

、何も起こりませんが、私のURLの変更は、私が間違っているか、それが認識されるであろう修正する方法をどこへと

どれでも助けをwww.whateversite.com?xxx_the_options_selected_on_the_formします。

これは私の現在のHTMLです。できるだけそれをきれいにして、すっきりと表示しようとしました。

<form id="feedback-form" name="feedback-form" role="form"> 
      <p>Please rate the following - with 5 being the 
      best</p><label for="exp">Overall Experience:</label> 
      <div class="radio"> 
        <label class="radio-inline" for="exp1"> 
        <input id="exp1" name="exp" type="radio" value="option1">1 
        </label> 
        <label class="radio-inline" for="exp2"> 
        <input id="exp2" name="exp" type="radio" value="option2">2 
        </label> 
        <label class="radio-inline" for="exp3"> 
        <input id="exp3" name="exp" type="radio" value="option3">3 
        </label> 
        <label class="radio-inline" for="exp4"> 
        <input id="exp4" name="exp" type="radio" value="option4">4 
        </label> 
        <label class="radio-inline" for="exp5"> 
        <input id="exp5" name="exp" type="radio" value="option5">5 
        </label> 
      </div><label for="staf">Friendliness of Staff:</label> 
      <div class="radio"> 
        <label class="radio-inline" for="staf1"><input id= 
        "staf1" name="staf" type="radio" value= 
        "option1">1</label> <label class="radio-inline" for= 
        "staf2"><input id="staf2" name="staf" type="radio" 
        value="option2">2</label> <label class="radio-inline" 
        for="staf3"><input id="staf3" name="staf" type="radio" 
        value="option3">3</label> <label class="radio-inline" 
        for="staf4"><input id="staf4" name="staf" type="radio" 
        value="option4">4</label> <label class="radio-inline" 
        for="staf5"><input id="staf5" name="staf" type="radio" 
        value="option5">5</label> 
      </div><label for="clean">Cleanliness of facility:</label> 
      <div class="radio"> 
        <label class="radio-inline" for="clean1"><input id= 
        "clean1" name="clean" type="radio" value= 
        "option1">1</label> <label class="radio-inline" for= 
        "clean2"><input id="clean2" name="clean" type="radio" 
        value="option2">2</label> <label class="radio-inline" 
        for="clean3"><input id="clean3" name="clean" type= 
        "radio" value="option3">3</label> <label class= 
        "radio-inline" for="clean4"><input id="clean4" name= 
        "clean" type="radio" value="option4">4</label> 
        <label class="radio-inline" for="clean5"><input id= 
        "clean5" name="clean" type="radio" value= 
        "option5">5</label> 
      </div><label for="refer">Would you refer a friend?</label> 
      <div class="radio"> 
        <label class="radio-inline" for="refer1"><input id= 
        "refer1" name="refer" type="radio" value= 
        "option1">1</label> <label class="radio-inline" for= 
        "refer2"><input id="refer2" name="refer" type="radio" 
        value="option2">2</label> <label class="radio-inline" 
        for="refer3"><input id="refer3" name="refer" type= 
        "radio" value="option3">3</label> <label class= 
        "radio-inline" for="refer4"><input id="refer4" name= 
        "refer" type="radio" value="option4">4</label> 
        <label class="radio-inline" for="refer5"><input id= 
        "refer4" name="refer" type="radio" value= 
        "option5">5</label> 
      </div><br> 
      <div class="form-group has-feedback"> 
        <p>If you would like our manager to contact you please 
        provide the following information:</p><label for= 
        "name">Full Name*</label> <input class="form-control" 
        id="name" name="name" placeholder="Your Full Name" 
        type="text"> <i class= 
        "fa fa-user form-control-feedback"></i> 
      </div> 
      <div class="form-group has-feedback"> 
        <label for="email">Email*</label> <input class= 
        "form-control" id="email" name="email" placeholder= 
        "e.g. [email protected]" type="email"> <i class= 
        "fa fa-envelope form-control-feedback"></i> 
      </div> 
      <div class="form-group has-feedback"> 
        <label for="phone">Contact Number*</label> 
        <input class="form-control" id="phone" name="phone" 
        placeholder="0400000000" type="phone"> <i class= 
        "fa fa-phone form-control-feedback"></i> 
      </div> 
      <div class="form-group"> 
        <label for="subject">Please share your thoughts on how 
        we may improve your experience</label> <input class= 
        "form-control" id="subject" name="subject" placeholder= 
        "Please leave your thoughts here..." type="text"> 
        <i class="fa fa-navicon form-control-feedback"></i> 
      </div><input class="btn btn-default" type="submit" value= 
      "Submit"> 
    </form> 

私の現在のPHPは

<?php 
session_cache_limiter('nocache'); 
header('Expires: ' . gmdate('r', 0)); 

header('Content-type: application/json'); 

// Enter your email address below. 
$to = '[email protected]'; 

$subject = 'Website Feedback Received'; 

if($to) { 
    $name = $_POST['name']; 
    $email = $_POST['email']; 

    $fields = array(
        0 => array(
         'text' => 'Name', 
         'val' => $_POST['name']), 
        1 => array(
         'text' => 'Email address', 
         'val' => $_POST['email']), 
        2 => array(
         'text' => 'Contact Number', 
         'val' => $_POST['phone']), 
        3 => array(
         $exp => $_POST['exp']), 
        4 => array(
         $staf => $_POST['staf']), 
        5 => array(
         $clean => $_POST['clean']), 
        6 => array(
         $refer => $_POST['refer']), 
        7 => array(
         'text' => 'Subject', 
         'val' => $_POST['subject']) 
       ); 

    $message = ""; 

    foreach($fields as $field) { 
     $message .= $field['text'].": " . htmlspecialchars($field['val'], ENT_QUOTES) . "<br>\n"; 
    } 

    $headers = ''; 
    $headers .= 'From: ' . $name . ' <' . $email . '>' . "\r\n"; 
    $headers .= "Reply-To: " . $email . "\r\n"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; 

    if (mail($to, $subject, $message, $headers)){ 
     $arrResult = array ('response'=>'success'); 
    } else{ 
     $arrResult = array ('response'=>'error'); 
    } 

    echo json_encode($arrResult); 

} else { 

    $arrResult = array ('response'=>'error'); 
    echo json_encode($arrResult); 
} 
?> 

そして最終的に必要な分野のために事前に

// feedback forms validation 
    //-----------------------------------------------  
    if($("#feedback-form").length>0) { 
     $("#feedback-form").validate({ 
      submitHandler: function(form) { 

       var submitButton = $(this.submitButton); 
       submitButton.button("loading"); 

       $.ajax({ 
        type: "POST", 
        url: "php/feedback-form.php", 
        data: { 
         "name": $("#feedback-form #name").val(), 
         "phone": $("#feedback-form #phone").val(), 
         "email": $("#feedback-form #email").val(), 
         "exp": $("#feedback-form #exp").val(), 
         "staf": $("#feedback-form #staf").val(), 
         "clean": $("#feedback-form #clean").val(), 
         "refer": $("#feedback-form #refer").val(), 
         "subject": $("#feedback-form #subject").val() 
        }, 
        dataType: "json", 
        success: function (data) { 
         if (data.response == "success") { 

          $("#contactSuccess").removeClass("hidden"); 
          $("#contactError").addClass("hidden"); 

          // Reset Form 
          $("#feedback-form .form-control") 
           .val("") 
           .blur() 
           .parent() 
           .removeClass("has-success") 
           .removeClass("has-error") 
           .find("label") 
           .removeClass("hide") 
           .parent() 
           .find("span.error") 
           .remove(); 

          if(($("#contactSuccess").position().top - 80) < $(window).scrollTop()){ 
           $("html, body").animate({ 
            scrollTop: $("#contactSuccess").offset().top - 80 
           }, 300); 
          } 

         } else { 

          $("#contactError").removeClass("hidden"); 
          $("#contactSuccess").addClass("hidden"); 

          if(($("#contactError").position().top - 80) < $(window).scrollTop()){ 
           $("html, body").animate({ 
            scrollTop: $("#contactError").offset().top - 80 
           }, 300); 
          } 

         } 
        }, 
        complete: function() { 
         submitButton.button("reset"); 
        } 
       }); 
      },    
      // debug: true, 
      errorPlacement: function(error, element) { 
       error.insertBefore(element); 
      }, 
      onkeyup: false, 
      onclick: false, 
      rules: { 
       name: { 
        required: true, 
        minlength: 2 
       }, 
       phone: { 
        required: true, 
        minlength: 10 
       }, 
       email: { 
        required: true, 
        email: true 
       } 
      }, 
      messages: { 
       name: { 
        required: "Please specify your name", 
        minlength: "Your name must be longer than 2 characters" 
       }, 
       phone: { 
        required: "We need your phone number to contact you if required", 
        email: "Please enter a valid contact number 0401001002 or 0390909090" 
       }, 
       email: { 
        required: "We need your email address to contact you", 
        email: "Please enter a valid email address e.g. [email protected]" 
       }    
      }, 
      errorElement: "span", 
      highlight: function (element) { 
       $(element).parent().removeClass("has-success").addClass("has-error"); 
       $(element).siblings("label").addClass("hide"); 
      }, 
      success: function (element) { 
       $(element).parent().removeClass("has-error").addClass("has-success"); 
       $(element).siblings("label").removeClass("hide"); 
      } 
     }); 
    };  
    //end feedback form 

おかげでフィードバックをチェックJSです。

+1

いくつかの賢明なコードのインデントが良いでしょう。それは私たちがコードを読むのに役立ちます。もっと重要なのは**コードをデバッグするのに役立つでしょう** [コーディング標準を簡単に見てください](http://www.php-fig.org/psr/psr-2/ )あなた自身の利益のために。あなたはこのコード を数週間/数ヶ月で修正するように頼まれるかもしれません。そして、あなたは私に最後に感謝します。 – RiggsFolly

+1

フォームメソッドはポストですか?私はそれを見ません.. –

+3

HTMLフォームは、あなたがすべての値を表示する理由は、あなたが提出するときに発生するHTTP要求のタイプを指定する "メソッド"属性を持っています、それは 'GET'要求ですURLに追加されます。 'method =" POST "'を設定したいと思う:https://www.w3.org/TR/html401/interact/forms.html#h-17.13.1 – ymas

答えて

1

あなたが選択したラジオボタン(参照するための一例)を取得するには、フォームではなくネイティブフォームタグの使用これを送信するためにjQuerys AJAX機能を使用している場合:

$("input[name='refer']:checked").val() 
+0

ありがとう。それは美しく働いた。あなたのアドバイスで、私はチェックボックスを追加することもできました。 –

0

私はあなたからの範囲の値を持つオプションの行をしたい推測していますので、1言うことができます - 1は恐ろしい経験と5である5が、私はおそらくこのようなことをやるだろう、素晴らしいです:

HTML:

<form action="page-goes-here" method="POST"> 
    <p> 
    Please rate your experience (1 = horrible, 5 = amazing) 
    </p> 
    <ul class="myList"> 
    <li>1</li> 
    <li><input type="radio" name="userExperience" value="1" /></li> 
    <li><input type="radio" name="userExperience" value="2" /></li> 
    <li><input type="radio" name="userExperience" value="3" /></li> 
    <li><input type="radio" name="userExperience" value="4" /></li> 
    <li><input type="radio" name="userExperience" value="5" /></li> 
    <li>5</li> 
    </ul> 
    <input type="submit" name="submitExperience" value="Submit" /> 
</form> 
<hr /> 

CSS:

.myList li { 
    list-style-type: none; 
    display: inline-table; 
} 

PHP:

if(isset($_POST["submitExperience"])) { 

    $userExperience = $_POST["userExperience"]; // This variable should now contain a value between 1-5, depending on what the user chose 

}