首页 > 解决方案 > 如何将 SQL 值发布到复选框中

问题描述

首先,我的问题可能是这个问题的重复问题:Need html checkbox to be checked by mysql result但我不明白答案 - 操作没有发布任何代码,我不知道如何适应建议将代码放入我的案例中,因为我需要从 SQL (?) 中获取值。

这里是所有数据:我有一个带有复选框的 HTML 表单,它在提交表单时将选中的值存储为“1”和未选中的“0”到 SQL 数据库中。现在我想让它(在页面加载时)从数据库中提取数据并在同一用户返回页面时填充表单的复选框。(我知道我的代码在某些地方有问题,我仍然需要解决这个项目的很多问题)现在,我要解决的是让 SQL 将结果输出到现有的 HTML 复选框(而不是创建新的复选框或新的 HTML 表单)。

注意:我的 HTML 表单和我的 php 表单位于两个单独的文件中,它们无法合并(我不知道这是否会有所不同)。

默认情况下,表单中的所有复选框都是空的。我在我的表单中使用 Ajax,以便在页面加载时将用户 ID 传递给一个 php 文件,然后运行 ​​SQL 查询以拉出“1”(如果应选中复选框),如果应不选中则拉出“0”。

这是与案例相关的 HTML 片段:

<input type=text id="userid" name="userid" value="">
    </div>                     
    <div class="grid">
        <div>
            <div class="grid-item">
                <img src="image.png" alt="">
            </div>
            <div class="grid-item-title">
                <h2>Title</h2>
            </div>
            <div class="grid-item">
                <p>
                    <input type="hidden" name="owns[item1]" value="0"><input type="checkbox" onclick="this.previousSibling.value=1-this.previousSibling.value">I own this<br>
                </p>
            </div>
        </div>
        <div>
            <div class="grid-item">
                <img src="image.png" alt="">
            </div>
            <div class="grid-item-title">
                <h2>Title 2</h2>
            </div>
            <div class="grid-item">
                <p>
                    <input type="hidden" name="owns[item2]" value="0"><input type="checkbox" onclick="this.previousSibling.value=1-this.previousSibling.value">I own this<br>
                </p>
            </div>
        </div>

这是我正在使用的 Ajax 代码:

document.addEventListener("DOMContentLoaded", function myFunction() {
    var x = 3 //replace with user ID
 
    $.ajax({
        url: 'libraryRequest.php',
        method: "post",
        data: {"userid": x }, // sends id to PHP 
        dataType: "html",
        async: false,
        success: function(data){
            $('#content').html(data); // currently this overwrites all HTML on the page... 
        },
        error: function (xhr, ajaxOptions, thrownError) {
            var errorMsg = 'Ajax request failed: ' + xhr.responseText;
            $('#content').html(errorMsg); // currently this overwrites all HTML on the page... 
        }
    })
});

这是到目前为止我设法整理的 PHP 代码:

$userid = 0;
$userid = $_POST['userid'];
if ($userid != 0) {  //only execute if there is a user id
    $userquery = "SELECT * FROM libraryG WHERE userid =$userid"; //find if userid exists
    $result = mysqli_query($con, $userquery);
    if(mysqli_num_rows($result)>0) { //if user id exists run this code to pull the data
        $sqlupdate = "SELECT * FROM libraryG WHERE userid = $userid";
        mysqli_query($con, $sqlupdate); 
        
        if ($result->num_rows > 0) {
        while($row = $result->fetch_row()) {
        print json_encode($row);  // edited
        }

    } //if user id doesn't exist in db or there is no user id - do nothing 

    } 

每个复选框值都存储在 SQL 中的单独列中。

我已经研究了好几个小时了,但在大多数情况下,我发现的类似问题正在解释我从未使用过的 C# 或 ASP 的解决方案,并且在我试图避免那些我不知道的事情上有点新是另一种方法。

标签: jsonajaxcheckbox

解决方案


推荐阅读