每次添加新数据时,select选项中的所有值都将保存到所有数据库。我想只保存所选的选项。 Php,Javascript

时间:2018-03-02 09:40:37

标签: javascript php jquery

我在 index.php

中有这个JavaScript代码
$(document).on('blur', '.first_name', function(){  
           var id = $(this).data("id1");  
           var first_name = $(this).text();  
           edit_data(id, first_name, "first_name");  
      });  
      $(document).on('blur', '.last_name', function(){  
           var id = $(this).data("id2");  
           var last_name = $(this).text();  
           edit_data(id,last_name, "last_name");  
      });
      $(document).on('blur', '.gender', function(){  
           var id = $(this).data("id3");  
           var gender= $(this).text();  
           edit_data(id,gender, "gender");  
      });

AND select.php

while($row = mysqli_fetch_array($result))  
      {  
           $output .= '  
                <tr>  
                     <td class="first_name" data-id1="'.$row["id"].'" contenteditable>'.$row["first_name"].'</td>  
                     <td class="last_name" data-id2="'.$row["id"].'" contenteditable>'.$row["last_name"].'</td>  
                     <td><select class="type" data-id3="'.$row["id"].'">  
                               <option>'.$row["gender"].'</option>  
                               <option>male</option>
                               <option>female</option>                                 
                          </select></td> 
                     <td><button type="button" name="delete_btn" data-id3="'.$row["id"].'" class="btn btn-xs btn-danger btn_delete">x</button></td>  
                </tr>  
           ';  
      }  

此处 edit.php

<?php  
 $connect = mysqli_connect("localhost", "root", "", "test");  
 $id = $_POST["id"];  
 $text = $_POST["text"];  
 $column_name = $_POST["column_name"];  
 $sql = "UPDATE tbl_sample SET ".$column_name."='".$text."' WHERE id='".$id."'";  
 if(mysqli_query($connect, $sql))  
 {  
      echo 'Data Updated';  
 }  
 ?>

我的问题是,每次添加新数据时,性别选项中的所有文本都将保存到数据库中。我想只保存所选的选项。请帮帮我。

2 个答案:

答案 0 :(得分:0)

  

性别选项中的所有文本都将保存到数据库

是的,这是使用$(this).text();

时会发生的情况

性别是选择输入,而不是文本字段(.text()正常工作)。因此你应该使用

var gender= $(this).val();

修改:它.val(),而非.value()

答案 1 :(得分:0)

$(document).on('blur', '.type', function(){  
   var id = $(this).data("id3");
   var gender= $(this).val();
   edit_data(id,gender, "gender");
});

使用此代码更新数据库中的用户性别类型。

首先你出错了性别元素,请使用 .type 而不是 .gender ,然后第二次抓取下拉列表中的所有文字,这不是很好的代码练习。在输入字段中使用此.val()而不是.text()

PHP代码

        $m = $row["gender"] == "male" ? "selected" : "";
        $f = $row["gender"] == "female" ? "selected" : "";
         $output .= '
               <tr>
                    <td class="first_name" data-id1="' . $row["id"] . '" contenteditable>' . $row["first_name"] . '</td>
                    <td class="last_name" data-id2="' . $row["id"] . '" contenteditable>' . $row["last_name"] . '</td>
                    <td><select class="type" data-id3="' . $row["id"] . '">
                              <option>select</option>
                              <option value="male" ' . $m .'>male</option>
                              <option value="female" '. $f .'>female</option>
                         </select></td>
                    <td><button type="button" name="delete_btn" data-id3="' . $row["id"] . '" class="btn btn-xs btn-danger btn_delete">x</button></td>
               </tr>
          ';