当选择框onchange时更新mysql表中的值

时间:2019-06-14 06:07:18

标签: javascript php mysql database

我有一个html表,其中包含mysql db表中的值。客户要求对我的html表中的数据进行前端编辑。因此,单击时我会将td转换为选择框,用户将在其中选择X和O注释。

这是我的脚本:

 $(document).on('click', 'td', function() { ////---make td transform to dropdown list box when click---///
          if($(this).find('select').length == 0) {
              $(this).empty();  //clears out current text in the table
              $(this).append('<select onchange="myFunction()" id="Remarks" name="Remarks"><option value=""></option><option <?php if ($Remarks=='X') echo 'selected';?> value="X" style="font-size:20px;font-weight:bold;">X<option style="font-size:20px;color:green;font-weight:bold;" <?php if ($Remarks=='O') echo 'selected';?> value="O">O</select>');
          }
    });


    $(document).on('focusout', 'td select', function(){ 
        var myValue = $(this).val();
        var $parent = $(this).parent();
        $(this).remove();
        $parent.append(myValue);        
    });

我需要根据用户从选择框中选择的内容来更新td的值。

这是我尝试过的方法:为选择框进行一次

function myFunction(){
        var emp_name = document.getElementById('employeeName').value;
        var r = document.getElementById('Remarks').value;
                $.ajax({
                    type: 'post',
                    url: 'update_data.php',
                    data: {
                        'employeeName' :emp_name,
                        'DAY1' : r
                    },
                    success: function(data){
                        $("#content").html(data)
                        $(".loader").fadeOut("veryslow");               
                        $("#content").hide().fadeIn(500)  
                        //alert(r); 
                        //alert(emp_name);
                    },
                    error:function(data){
                        alert('Failed');
                    }
                })

    };

这是我的update_data.php:

<?php
    $employeeName = $_REQUEST["employeeName"];
    $Remarks = $_REQUEST["Remarks"];
    //$id = $_REQUEST["id"];

    try {
        $pdo = new PDO('mysql:host=localhost:***;dbname=******;', '*****', '*****' );
        $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        $pdo->query( 'SET NAMES UTF8' );
        $stmt = $pdo->prepare(
            "UPDATE `mbwa`
            SET
                `DAY1` = :Remarks
            WHERE
                `employeeName` = :employeeName
            "
        );
        $stmt->bindValue(':employeeName',$employeeName,PDO::PARAM_STR);
        $stmt->bindValue(':Remarks',$Remarks,PDO::PARAM_STR);
        //$stmt->bindValue(':id',$id,PDO::PARAM_STR);
        $stmt->execute();
        header('location:./');
    } catch ( PDOException $e ) {
        var_dump( $e->getMessage() );   
    }

    $pdo = null;
    ?>

它更新数据库,但是它给出了我更改的td值的null值。我认为在更新查询中它没有获得':Remarks'的值。

有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

检查$_REQUEST["Remarks"];应该为$_REQUEST["DAY1"];

因为您的data在Ajax中的发送方式如下:

data: {
       'employeeName' :emp_name,
       'DAY1' : r
},

因此,在 PHP 中,您必须将其更改为此:

$employeeName = $_REQUEST["employeeName"];
$Remarks = $_REQUEST["DAY1"];