少数表单值无法通过$\u post获取

w8f9ii69  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(328)

我有一个表单,它是通过查询字符串生成的,在一个页面上,很多数据都放在表单中。
我把它们放在表格里,一起更新。现在我遇到两个问题:
在表单提交时,对于某些查询字符串值根本无法保存。
对于一些大的表单(我猜),很少有表单的值被保存,下面剩下的值没有被保存。
代码如下:

include_once 'header.php';
  include_once 'lab-sidebar.php';
  include_once 'conn.php';
  include_once 'functions.php';

   $data = display_conditional_data(" name  LIKE '".$_REQUEST['alpha']."%'  order by name asc ",'tb_test');
   $sample_type = dis_all_data('tb_sample_type');
   $departments = dis_all_data('tb_test_method');
   $testconditions = dis_all_data('tb_test_conditions');

   $display_data = display_data('id',$_SESSION['user_id'],'tb_labs');

   if(isset($_POST['btnSubmit'])){

      $sql = "insert into test_menu_details ( test_id ,sample_type , price, discounted_price, lab_id, dep_id, reporting_time, automatic, remarks , city,testcondition) values ";
      $count_length = count($_POST['price']);

      for($i = 0 ; $i< $count_length; $i++){
        if($_POST['price'][$i] != ''){
          $sql .= "('".$_POST['test_name'][$i]."','" .$_POST['sample_type'][$i]."','".$_POST['price'][$i]."','".$_POST['discount_price'][$i]."','".$_SESSION['user_id']."','".$_POST['departments'][$i]."','".$_POST['reporting_time'][$i]."','".$_POST['automation'][$i]."','".$_POST['reviews'][$i]."','". $display_data['city'] ."','".$_POST['testcondition'][$i]."' )";
          $sql .= ',';

        }
}
        $sql = rtrim($sql,', ');

        $sql .= ' ON DUPLICATE KEY UPDATE sample_type=VALUES(sample_type) , price = VALUES(price) , discounted_price = VALUES(discounted_price) , dep_id = VALUES(dep_id) , reporting_time = VALUES(reporting_time) , automatic = VALUES(automatic) , remarks = VALUES(remarks) , city = VALUES(city) , testcondition = VALUES(testcondition) ';

        echo '$sql$sql '.$sql;

        if(!mysqli_query($conn,$sql)){

         // echo mysqli_errno($conn);
        if(mysqli_errno($conn) == 1062){
          $_SESSION['message'] = '<div class="alert alert-danger">Some values needed to be unique. Please read instructions carefully.</div>';

        }
      }
      else{
        if(mysqli_affected_rows($conn) == 1){

            $conn->close();

            $_SESSION['message'] = '<div class="alert alert-success">Data inserted. And data that already exists has been updated. </div>';
            echo $_SESSION['message'];
            //echo '<script type="text/javascript">window.location = "add-test-menu.php"</script>';
      }
      else{
        //error
        $_SESSION['message'] = '<div class="alert alert-danger">Data inserted. And data that already exists has been updated. </div>';
        echo $_SESSION['message'];
      }

      //echo '<script>window.location = "add-test-menu.php";</script>';
      } 

   }

?>

  <!-- Content Wrapper. Contains page content -->
  <div class="content-wrapper">
    <!-- Content Header (Page header) -->
    <section class="content-header">
      <h1>
       <?php echo $_SESSION['username'];  ?>

      </h1>

    </section>

    <!-- Main content -->
    <section class="content">
      <div class="row">

        <div class="col-md-12">
          <!-- general form elements -->
          <div class="box box-primary">
            <div class="box-header with-border">
              <h3 class="box-title">Test Menu</h3>

              <div>

              <tr>
            <td colspan="3" width="33%" height="40" class="head_black">&nbsp;&nbsp;Add New. Select Alphabet >> <a class="nlink2" href="test-with-name.php?alpha=1" class="dblinkss">1</a> | 

<a class="nlink2" href="test-with-name.php?alpha=2" class="dblinkss">2</a> | 
<a class="nlink2" href="test-with-name.php?alpha=5" class="dblinkss">5</a> | 
<a class="nlink2" href="test-with-name.php?alpha=a" class="dblinkss">A</a> | 

<a class="nlink2" href="test-with-name.php?alpha=b" class="dblinkss">B</a> | 

<a class="nlink2" href="test-with-name.php?alpha=c" class="dblinkss">C</a> | 

<a class="nlink2" href="test-with-name.php?alpha=d" class="dblinkss">D</a> | 

<a class="nlink2" href="test-with-name.php?alpha=e" class="dblinkss">E</a> | <a class="nlink2" href="test-with-name.php?alpha=f" class="dblinkss">F</a> | <a class="nlink2" href="test-with-name.php?alpha=g" class="dblinkss">G</a> | <a class="nlink2" href="test-with-name.php?alpha=h" class="dblinkss">H</a> | <a class="nlink2" href="test-with-name.php?alpha=i" class="dblinkss">I</a> | <a class="nlink2" href="test-with-name.php?alpha=j" class="dblinkss">J</a> | <a class="nlink2" href="test-with-name.php?alpha=k" class="dblinkss">K</a> | <a class="nlink2" href="test-with-name.php?alpha=l" class="dblinkss">L</a> | <a class="nlink2" href="test-with-name.php?alpha=m" class="dblinkss">M</a> | <a class="nlink2" href="test-with-name.php?alpha=n" class="dblinkss">N</a> | <a class="nlink2" href="test-with-name.php?alpha=o" class="dblinkss">O</a> | <a class="nlink2" href="test-with-name.php?alpha=p" class="dblinkss">P</a> | <a class="nlink2" href="test-with-name.php?alpha=q" class="dblinkss">Q</a> | <a class="nlink2" href="test-with-name.php?alpha=r" class="dblinkss">R</a> | <a class="nlink2" href="test-with-name.php?alpha=s" class="dblinkss">S</a> | <a class="nlink2" href="test-with-name.php?alpha=t" class="dblinkss">T</a> | <a class="nlink2" href="test-with-name.php?alpha=u" class="dblinkss">U</a> | <a class="nlink2" href="test-with-name.php?alpha=v" class="dblinkss">V</a> | <a class="nlink2" href="test-with-name.php?alpha=w" class="dblinkss">W</a> | <a class="nlink2" href="test-with-name.php?alpha=x" class="dblinkss">X</a> | <a class="nlink2" href="test-with-name.php?alpha=y" class="dblinkss">Y</a> | <a class="nlink2" href="test-with-name.php?alpha=z" class="dblinkss">Z</a></td>
              </tr>
              </div>
            </div>

          </div>
          <!-- /.box -->
          </div>
        <!-- left column -->
        <div class="col-md-12">
          <!-- general form elements -->
          <div class="box box-primary">
            <div class="box-header with-border">
              <h3 class="box-title">Test Menu</h3>
            </div>
              <form  method="POST">
                    <table class="table table-bordered">
                        <tr>

                          <th>Test Name </th>
                           <th>Pre Test Information</th>
                          <th>Sample </th>

                          <th>Methodology</th>
                          <th>Reporting Time</th>
                          <th>Automation</th>
                          <th>Price</th>
                          <th>Discount Price</th>
                          <!-- <th>Remarks</th> -->

                        </tr>

                        <?php

                          foreach($data as $d){

                            $mtd =  explode(',',$d['tb_test_method']);
                            $tc =  explode(',',$d['tb_test_condition']);

                            $sty = explode(',',$d['tb_sample_type']);

                        ?>
                        <tr>

                          <td><?php echo $d['name']; ?><br><b>Remarks</b><textarea name="reviews[]" class="form-control"></textarea></td>
                          <input type="hidden" name="test_name[]" value="<?php echo $d['id']; ?>">
                          <td>
                          <select name="testcondition[]" class="form-control">
                              <option value="">Select</option>
                              <?php 

                                foreach($testconditions as $st){

                                  ?>
                                  <option value="<?php echo $st['id']; ?>" <?php if( $st['id'] ==  $tc[0]){ echo ' selected'; }  ?>  ><?php echo $st['name']; ?></option>
                                  <?php
                                }
                              ?>

                          </select>
                          </td>
                          <td>
                          <select name="sample_type[]" class="form-control">
                               <option value="">Select</option>
                              <?php 

                                foreach($sample_type as $st){

                                  ?>
                                  <option value="<?php echo $st['id']; ?>"  <?php if( $st['id'] ==  $sty[0]){ echo ' selected'; }  ?> ><?php echo $st['name']; ?></option>
                                  <?php
                                }
                              ?>

                          </select>
                          </td>
                          <td>
                              <select name="departments[]" class="form-control">
                                <option value="">Select</option>
                              <?php 

                                foreach($departments as $dep){

                                  ?>
                                  <option value="<?php echo $dep['id']; ?>"  <?php if( $dep['id'] ==  $mtd[0]){ echo ' selected'; }  ?>  ><?php echo $dep['name']; ?></option>
                                  <?php
                                }
                              ?>

                              </select>
                          </td>
                          <td>
                                <select name="reporting_time[]" class="form-control">
                                    <option selected="" value="">--Select One--</option>
                                    <option value="Same Day">Same Day</option>
                                    <option value="Next Day">Next Day</option>
                                    <option value="2 - 5 Days">2 - 5 Days</option>
                                    <option value="5 - 10 Days">5 - 10 Days</option>
                                    <option value="10 - 20 Days">10 - 20 Days</option>
                                    <option value="20 - 30 Days">20 - 30 Days</option>
                                    <option value="30 - 60 Days">30 - 60 Days</option>
                                    <option value="N.A.">N.A.</option>  
                                </select>
                              </td>
                              <td>
                                <select name="automation[]" class="form-control">
                                  <option selected="" value="0">--Select One--</option>         
                                  <option value="Manual">Manual</option>                      
                                  <option value="Semi Automatic">Semi Automatic</option>
                                  <option value="Fully Automatic">Fully Automatic</option>
                                  <option value="N.A.">N.A.</option>
                                </select>
                              </td>
                              <td><input type="text" name="price[]" class="form-control"></td>
                              <td><input type="text" name="discount_price[]" class="form-control"></td>

                             <!--  <td></td> -->

                            </tr>

                            <?php } ?>

                    </table>

                      <input type="submit" value="Add" class="btn btn-primary" name="btnSubmit">
              </form>
          </div>
          <!-- /.box -->
        </div>
      <!-- /.row -->
    </section>
    <!-- /.content -->
  </div>
  <?php 

include_once 'footer.php';

  ?>
wbgh16ku

wbgh16ku1#

你错过了 action 表单中的属性。你的表单标签应该是这样的

<form  method="POST" action="yourTargetFile.php">

您正在传递单个值的数组。
看到这里了吗

<input type="hidden" name="test_name[]" value="<?php echo $d['id']; ?>">

<select name="testcondition[]" class="form-control">

如果没有多个值,为什么要传递数组。您需要像这样传递。对于不是多个值的所有字段都要进行更改。

<input type="hidden" name="test_name" value="<?php echo $d['id']; ?>">

插入数据 for 以及 foreach 循环。

相关问题