dsgs8208 2016-03-06 16:55
浏览 124
已采纳

通过PHP从HTML表单插入数据库的多个选项

I have drop-down list, after selecting any value It adding new row with some fields, example shown in image below:

drop-down list

I have insert.php to insert values to MySQL database. But there is problem, that only values from first row are inserted to database.

PHP looks like:

foreach($_POST['CertificateType'] as $key => $val){ 

    $CertificateType = $val;

    $CertificateType = $_POST['CertificateType'][$key]; 
    $STCWCode        = $_POST['STCWCode'][$key];            
    $CertNo          = $_POST['CertNo'][$key];          
    $FromCert        = $_POST['FromCert'][$key];            
    $ToCert          = $_POST['ToCert'][$key];  

    $CertificateType = mysqli_real_escape_string($link, $CertificateType);  
    $STCWCode        = mysqli_real_escape_string($link, $STCWCode);                 
    $CertNo          = mysqli_real_escape_string($link, $CertNo);           
    $FromCert        = mysqli_real_escape_string($link, $FromCert);                 
    $ToCert          = mysqli_real_escape_string($link, $ToCert);      

    $sql3 = "INSERT INTO Tbl (
        CertificateType     
        ,UserId    
        ,STCWCode               
        ,CertNo                 
        ,FromCert               
        ,ToCert
        ,DateCreated
    ) VALUES (
        '$CertificateType',
        '$UserID',  
        '$STCWCode',            
        '$CertNo',          
        '$FromCert',            
        '$ToCert',
        now())";
    if(mysqli_query($link, $sql3)){
        echo "Resume created successfully.";
    } else{
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
} 

HTML looks like:

<fieldset class="fieldset-borders">
    <legend>4. Licenses & Certificates</legend>
    <ul class="header"> 
      <li>
        <select id='options' name="CertificateType[]" class="field-style div-format align-left">
          <option selected disabled value="0">Select certificates</option>
          <option value="1">One</option>
          <option value="2">Two</option>
          <option value="3">Three</option>  
        </select>  
      </li>
    </ul>  
    <ul class="cert" id="cert">     
      <li>
        <ul class="column">         
          <li><p class="test-label11">Name</p></li>                     
        </ul>
      </li>
      <li>
        <ul class="column">         
          <li><p class="test-label11">STCW Code</p></li>                        
        </ul>
      </li>
      <li>
        <ul class="column">         
          <li><p class="test-label11">Cert. No</p></li>                     
        </ul>
      </li>
      <li>
        <ul class="column">         
          <li><p class="test-label11">Place of Issue</p></li>                       
        </ul>
      </li>
      <li>
        <ul class="column">         
          <li><p class="test-label11">Date of Issue</p></li>                        
        </ul>
      </li>
      <li>
        <ul class="column">         
          <li><p class="test-label11">Date of Expire</p></li>                       
        </ul>
      </li>
      </ul>
        <div class="action2" ></div>


</fieldset>

Javascript code you can check at JS FIDDLE

I've created JS FIDDLE to check that part of the form. Have you ideas how to fix It?

  • 写回答

8条回答 默认 最新

  • douji1877 2016-03-14 11:24
    关注

    Use your fiddle JavaScript and add certificate type in hidden field for every row; and name it RowCertificateType same as other fields for row;

    <input type="hidden" name="RowCertificateType[]" value="" />
    <!-- set value of this field same as you are showing in li as label for this row; -->
    

    then in your php script use as follows:

    foreach($_POST['RowCertificateType'] as $key=> $val){
    
      $CertificateType = $val;
    
      $STCWCode = $_POST['STCWCode'][$key];
      $CertNo = $_POST['CertNo'][$key];
      $FromCert = $_POST['FromCert'][$key];
      $ToCert = $_POST['ToCert'][$key];
    
      $CertificateType = mysqli_real_escape_string($link, $CertificateType);
      $STCWCode = mysqli_real_escape_string($link, $STCWCode);
      $CertNo = mysqli_real_escape_string($link, $CertNo);
      $FromCert = mysqli_real_escape_string($link, $FromCert);
      $ToCert = mysqli_real_escape_string($link, $ToCert);
    
      $sql3 = "INSERT INTO Tbl (
            CertificateType     
            ,UserId    
            ,STCWCode               
            ,CertNo                 
            ,FromCert               
            ,ToCert
            ,DateCreated
        ) VALUES (
            '$CertificateType',
            '$UserID',  
            '$STCWCode',            
            '$CertNo',          
            '$FromCert',            
            '$ToCert',
            now())";
      if(mysqli_query($link, $sql3)){
        echo "Resume created successfully.";
      }else{
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
      }
    }     
    

    :)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名