使用按钮从文本框中使用值更新数据库字段,它显示空白值

时间:2013-09-09 23:24:56

标签: php javascript mysql ajax pdo

我正在尝试从数据库中显示一个字段,其中数据库字段以文本框开头,如下所示:

  

307,o = o~正在进行〜(文本框)[批准按钮]

我希望能够更改文本框中的值来说lala,然后按批准按钮并使用数据库中的新值和 window.location.reload更新字段(); 它会在文本框中显示更新的字段值,因此它最终会如下所示:

  

307,o = o~正在进行〜(lala)[批准按钮]


这是来自views.php的代码:

      echo "<br><b>request to join site: {$row9['count']}</b><br>";
while ($row99 = $prep99->fetch(PDO::FETCH_ASSOC)) {
    echo "{$row99['starID']} , {$row99['starName']} = {$row99['twitter']}";
    if ($row99['guest'] == 0) {
        $guest = 'ongoing';
    };
    if ($row99['guest'] == 1) {
        $guest = 'guest';
    };
    if ($row99['guest'] == 2) {
        $guest = 'PLEASE SELECT ONE';
    };
    echo " ~ $guest ~ <br>";
    echo "<input type='text' name='starurl' value='{$row99['starURL']}' id='starurl' style='width:100px; height:30px;'/>";
    echo "<br><button onclick='save_a9({$row99['starID']})'>Approve</button><button onclick='save_d9({$row99['starID']})'>Disapprove</button><br>";
}

这是views.php顶部的函数:

     <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script>
function save_a9(id) {
          $.post('response6.php', {starID:id, starURL: $('#starurl').val()}, function(result) { 
       alert(result); 
       window.location.reload();
    });
}
    </script>

这是response6.php:

<?php
include("db_conn.php");
$sql = "update stars set approved = 1, starURL = ? where starID = ?";
$qc = $pdo_conn->prepare($sql);
$qc->execute(array($_POST['starURL'], $_POST['starID']));
echo 'saved';
?>


状态更新:它几乎可以正常工作,只需将fireURug控制台上的starURL值空白{starID:id, starURL: $('#starurl').val()}留在帖子下即可显示:starID=307&starURL=

1 个答案:

答案 0 :(得分:1)

我不知道你的数据库的细节,但有些事情可能会出错。您在response6.php中的SQL有一个语法错误,应该如下所示:

$sql = "update stars set approved = 1, starURL = ? where starID = ?";

(即用逗号分隔而不是&符号)

此外,您没有在ajax post调用中传递starURL的值,因此在绑定它并执行UPDATE语句时它将为null。您是否要在ajax发布数据中包含starURL的值,例如

$.post('response6.php', {starID:id, starURL: 'whatever'}, ...

最后,对页面进行全面刷新可能有点过头了。您正在使用ajax发布轻量级请求,并且可以在响应回来时对您的页面进行部分更新。