【问题标题】:I can't save specific selected value. it saved all data from database我无法保存特定的选定值。它保存了数据库中的所有数据
【发布时间】:2019-09-03 07:09:45
【问题描述】:

我正在插入多个数据。当我从下拉列表中选择一个项目时会发生什么。它保存选择中的所有数据。请先看下图

    function sample($con){
  $select = "SELECT * FROM project_tbl";
  $select_result = mysqli_query($con,$select);
    if (mysqli_num_rows($select_result)> 0) {
      while ($row = mysqli_fetch_assoc($select_result)) {
        echo "<option value=".$row['project_name'].">" .$row['project_name']."</option>";
      }
    }
  }

*html 代码(我使用下拉列表从数据库中填充数据)

<td class="pro">
  <select class="pro">
  <option value=""><?php sample($con); ?></option>
  </select>   
</td>

*ajax 代码(添加、保存和删除)

$(document).ready(function(){
 var count = 1;
 $('#add').click(function(){
  count = count + 1;
  var html_code = "<tr id='row"+count+"'>";
  html_code += "<td class='pro'><select class='pro'><option value=''><?php sample($con); ?></option></select></td>";
  html_code += "<td contenteditable='true' class='desc'></td>";
  html_code += "<td contenteditable='true' class='comp'></td>";
  html_code += "<td contenteditable='true' class='entry'></td>";
  html_code += "<td contenteditable='true' class='remarks'></td>";
  html_code += "<td><button type='button' name='remove' data-row='row"+count+"' class='btn btn-outline-danger btn-xs remove' title='remove'><i class='fa fa-times' aria-hidden='true'></i></button></td>";
  html_code += "</tr>";  
  $('#crud_table').append(html_code);
 });

  $(document).on('click', '.remove', function(){
  var delete_row = $(this).data("row");
  $('#' + delete_row).remove();
 });

  $('#save').click(function(){
    var desc = [];
    var pro = [];
    var comp = [];
    var entry = [];
    var remarks = [];

    $('.desc').each(function(){
    desc.push($(this).text());
    });
    $('.pro').each(function(){
    pro.push($(this).text());
    });
    $('.comp').each(function(){
    comp.push($(this).text());
    });
    $('.entry').each(function(){
    entry.push($(this).text());
    });
    $('.remarks').each(function(){
    remarks.push($(this).text());
    });
    $.ajax({
      url:"insert_inspection.php",
      method:"POST",
      data:{desc:desc, pro:pro, comp:comp, entry:entry, remarks:remarks},
      success:function(data){
        alert(data);
        $("td[contentEditable='true']").text("");
        $('select').prop('selectedIndex',0);
        for(var i=2; i<= count; i++){
          $('tr#'+i+'').remove();
        }
      }
    });
  });
});

这是我保存时发生的情况。

database

我是 PHP 新手。

插入_inspection.php

<?php
$con = mysqli_connect("localhost", "root", "", "pms");
if (isset($_POST["desc"])){
  $desc = $_POST["desc"];
  $pro = $_POST["pro"];
  $comp = $_POST["comp"];
  $entry = $_POST["entry"];
  $remarks = $_POST["remarks"];
  $query = '';

  for($count = 0; $count<count($desc); $count++){
    $desc_clean = mysqli_real_escape_string($con, $desc[$count]);
    $pro_clean = mysqli_real_escape_string($con, $pro[$count]);
    $comp_clean = mysqli_real_escape_string($con, $comp[$count]);
    $entry_clean = mysqli_real_escape_string($con, $entry[$count]);
    $remarks_clean = mysqli_real_escape_string($con, $remarks[$count]);

    if($desc_clean != '' && $pro_clean != '' && $comp_clean != '' && $entry_clean != '' && $remarks_clean != ''){
      $query .= 'INSERT INTO `inspection_tbl`(`description`, `project_name`, `completion`, `entry`, `remarks`) VALUES("'.$desc_clean.'", "'.$pro_clean.'", "'.$comp_clean.'", "'.$entry_clean.'", "'.$remarks_clean.'"); 
        ';
    }
  }
  if($query != ''){
    if(mysqli_multi_query($con, $query)){
      echo 'Item Data Inserted';
    }else{
      echo 'Error';
    }
  }else{
    echo 'All Fields are Required';
  }
}
?>

【问题讨论】:

    标签: javascript php jquery ajax


    【解决方案1】:

    这样保存是因为你的选择元素只有一个选项值

    修改自:

    <td class="pro"> <select class="pro"> <option value=""><?php sample($con); ?></option> </select> </td>
    

    到:

    <td class="pro">
        <select class="pro">
            <option value=""></option>
            <?php sample($con); ?>
        </select> 
    </td>
    

    并修改您的选择元素处理程序以仅推送您选择的项目

    类似这样的:

    $('.pro').each(function(){ 
        if($(this).prop("selected")) { 
            pro.push($(this).text()); 
        }
    });
    

    或将此部分修改为:

    $(".pro > option:selected").each(function(){
        pro.push($(this).text());
    });
    

    【讨论】:

    • 还是一样。它保存了数据库中的所有数据
    • 我添加了修改

    • 通知C:\xampp\htdocs\PMS\admin\insert_inspection中未定义的idex:pro 5
      所有字段均为必填项
    • 您尝试了哪个代码?一个班轮还是块?
    • 对不起,我没有看到最后一部分。我使用了它保存的最后一部分!但是当我插入更多列时,它只保存了最后一列。错误说 >>
      通知:未定义的偏移量:C:\xampp\htdocs\PMS\admin\insert_inspection 中的 1 行 13
      已插入项目数据
    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多