2016-11-29 41 views
2

我現在有點卡住了,可以使用一些幫助。PHP - 多種形式,在提交時從兩者獲取值?

我有正在使用由多個部門在進入他們的日程安排每個用戶都被要求完成1X選擇和2x輸入字段被分爲FORM 1和FORM 2

FORM 1:

  • 部門代碼(提交的onclick事件)

FORM 2:

  • 日期
  • 提交按鈕

用戶選擇他/她的部門代碼後,日曆將刷新並獲取條目這一特定部門只(這意味着它會過濾所有記錄部門代碼)。之後,用戶必須輸入他的用戶名並選擇日期,然後按提交按鈕(表2)。

現在,問題是,爲了FORM 2正確提交,我需要知道表單1的部門代碼。此外,我有麻煩,防止日曆刷新(表單1)時按下提交按鈕對於表單2.

總之,在訪問這兩個表單的數據時,我怎樣才能清楚地區分表單1和表單2之間的($ _POST)?

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來發送表單,讓您可以添加額外的數據。或在部門代碼 – Sitethief

+0

中用javascript創建表單2中的隱藏字段我的JS很糟糕,但您的意思是沿着表單2創建一個隱藏的JS字段,並且在form1中的部分代碼字段發生更改時,更新隱藏字段與輸入值,是否正確? – Armitage2k

+1

是,這是更簡單的解決方案之一。 – Sitethief

回答

1

繼SiteThief的建議下,我完全跳過了<form>方法和我通過AJAX提交結果,以我的PHP處理程序文件。像沒有討厭的表單提交問題的魅力一樣工作。

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>