2016-11-29 5 views
2

私はちょっと現時点で立ち往生しており、何か助けてください。PHP - 複数のフォームは、送信時に両方から値を取得しますか?

私は自分のスケジュールを入力するために複数の部門で使用されているカレンダーを持っている各ユーザーが1xの選択を完了するように要求されており、1型および2

FORM 1に分割されて2倍の入力フィールド:。

  • 部門コード(のonclickイベントを提出)

FORM 2:

  • 名前
  • ユーザーが彼/彼女の部門コードを選択した後、カレンダーが更新され、ボタンを

を提出するだけ(それがためにすべてのレコードをフィルタリングします意味、この特定の部門のエントリをフェッチ部門コード)。その後、ユーザーはユーザー名を入力して日付を選択し、送信ボタン(フォーム2)を押す必要があります。

フォーム2が正しく送信されるようにするには、フォーム1の部門コードを知る必要があります。さらに、送信ボタンを押したときにカレンダーがリフレッシュされないようにする(フォーム1)つまり、フォームのデータにアクセスしているときに、フォーム1とフォーム2の($ _POST)を明確に区別するにはどうすればよいですか。 SiteThiefの提案に続き

PHP

<?php 
// SHOULD BE EXECUTED AFTER THE SUBMIT BUTTON WAS CLICKED 
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['type']) && ($_POST['type']=='new_entry')) { 

    // include connection details 
    include '../../plugins/MySQL/connect_db.php'; 

    // Open a new connection to the MySQL server 
    $con = new mysqli($dbhost,$dbuser,$dbpass,$dbname); 

    // Output any connection error 
    if ($con->connect_error) { 
     die('Error : ('. $con->connect_errno .') '. $con->connect_error); 
    } 

    // define variables 
    $table = 'calendar'; 
    $type = mysqli_real_escape_string($con,$_POST['type']); 
    $holidex = mysqli_real_escape_string($con,$_POST['holidex']); 

    if($type == 'new_entry') 
    {    
     // define variables and query 
     $mod_property = mysqli_real_escape_string($con,$_POST['holidex']); 
     $mod_name = mysqli_real_escape_string($con,$_POST['mod_name']); 
     $mod_date = date('Y-m-d',strtotime($_POST['mod_date'])); 

     $sql = "INSERT INTO calendar (`title`, `startdate`, `enddate`, `allDay`, `color`, `holidex`) VALUES ('$mod_name','$mod_date','$mod_date','true','','$mod_property')"; 

     print($sql); 

     $result = $con->query($sql) or die('<p>Could not submit new MOD record into database: ' . MYSQLI_ERROR() . '</p>'); 

     $result->free(); 
    } 

    $con->close(); 
} 
?> 



     <form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
     <!-- <form name="mod_form" action="../../plugins/MySQL/ajax_action.php?type=new_entry" method="POST"> --> 

      <!-- Property --> 
      <div class="col-md-4"> 
      <label>Property</label> 
      <div class="input-group"> 
       <span class="input-group-addon"><i class="fa fa-server"></i></span> 
       <select name="holidex" id="holidex" class="form-control select2" style="width: 100%;" data-placeholder="Select your property" onchange="this.form.submit();" method="POST" <?php if($_SESSION['Access']=='User') { echo "disabled"; } ?>> 

        // get all my departments and their respective codes 
        <option value="1">Dept. 1</option> 
        <option value="2">Dept. 2</option> 
        <option value="3">Dept. 3</option> 

       </select> 
      </div> 
      <!-- /btn-group --> 
      </div> 
      <!-- /.property --> 

     </form> 

     <form name="form2" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
      <!-- MOD Name --> 
      <div class="col-md-4"> 
      <label>MOD Name</label> 
      <div class="input-group"> 
       <span class="input-group-addon"><i class="fa fa-user"></i></span> 
       <select name="mod_name" id="mod_name" class="form-control select2" style="width: 100%;" data-placeholder="Select a name"> 
        <option value=""></option> 
        <option value="1">User1</option> 
        <option value="2">User2</option> 
        <option value="3">User3</option> 
       </select> 
      </div> 
      <!-- /.input-group --> 
      </div> 
      <!-- /.mod name --> 

      <!-- MOD Date --> 
      <div class="col-md-3"> 
      <label>MOD Date</label> 
      <div class="input-group"> 
       <span class="input-group-addon"><i class="fa fa-server"></i></span> 
       <input type="date" class="form-control" name="daterangepicker" id="daterangepicker" /> 
       <!-- <input type="date" id="mod_date" name="mod_date" class="form-control" style="width: 100%;"> --> 
      </div> 
      </div> 
      <!-- /.mod date --> 

      // hidden input field to determine the type and help differentiate the $_POST submissions 
      <input type="hidden" class="form-control" name="type" id="type" value="new_entry"/> 

      <!-- Submit button --> 
      <div class="col-md-1 text-center"> 
      <label>&nbsp;</label> 
      <button type="submit" name="btnSubmit" class="btn btn-primary btn-block" onclick="this.disabled=true; this.value = 'Wait...'; this.form.submit(); return true;">Submit</button> 
      </div> 
      <!-- /.submit button --> 

     </form> 
     <!-- /.form 2 --> 
+0

あなたは余分なデータを追加できるように、私は、フォームを送信するためにはJavaScriptを使用します。または、フォーム2の隠しフィールドをdepartment code – Sitethief

+0

で作成します。My JS sucksが、フォーム2で隠されたJSフィールドを作成し、form1のdeptコードフィールドを変更すると、hidden入力値のあるフィールドは正しいですか? – Armitage2k

+1

うん、それは簡単な解決策の一つです。 – Sitethief

答えて

1

、私は完全に<form>アプローチをスキップしていますし、私のPHPのハンドラファイルにAJAXを経由して、結果を提出しています。厄介なフォーム提出の問題なしに魅力的に動作します。

JS

<script> 
    // SAVE NEW DEPARTMENT RECORD - SAVE BUTTON 
    $("#SubmitButton").click(function() { 

     // check that input fields are not empty 
     if($("#holidex").val()!="" && $("#mod_name").val()!="" && $("#mod_date").val()!="") { 

      $.ajax({ 
       url: "../../plugins/MySQL/ajax_action.php", 
       type: "POST", 
       async: true, 
       data: { action:"mod_calendar",type:"new_entry",holidex:$("#holidex").val(),mod_name:$("#mod_name").val(),mod_date:$("#mod_date").val()}, 
       dataType: "html",   

       success: function(data) { 
        $('#mod_output').html(data); 
        drawVisualization(); 
       }, 
      }); 
     } else { 
      //notify the user they need to enter data 
      alert("Please choose a hotel, staff name and MOD date from the list."); 
      return; 
     } 

     // close modal and refresh page 
     setTimeout(function(){location.reload()}, 1000); 
     return; 
    }); 
</script> 
関連する問題