如何在数据库显示的数据旁边放置复选框 - pho,sql

时间:2014-04-25 16:56:06

标签: php html sql

我正在显示我的数据库中的一些数据,我希望能够在显示的每条记录旁边放置复选框。 此外,我希望用户打包提交他们的选择,然后删除所选的记录。 我搜索了很多东西,但无法做任何事情。我正在寻找简单的东西。 这是我的代码:

<?php
//include('conn.php');
$con=mysqli_connect();
session_start();
if (!isset($_SESSION['ID'])){
header('location:login.php');
}
//
?>
<?php

if (!$link = mysql_connect()) {
    echo 'Could not connect to mysql';
    exit;
}

if (!mysql_select_db()) {
    echo 'Could not select database';
    exit;
}

$villageId = $_GET['village']; 
$ID = $_SESSION['ID'];



$sql ="SELECT * 
FROM favourites
INNER JOIN attractions ON favourites.AttractionID = attractions.AttractionID
INNER JOIN customer ON favourites.ID = customer.ID
WHERE favourites.ID = '$ID' ";

$result = mysql_query($sql, $link);

if (!$result) {
    echo "DB Error, could not query the database\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}








while ($row = mysql_fetch_assoc($result)) {

echo $row['Name'] ;



}









 if (!mysqli_query($con,$sql))
{
  die('Error: ' . mysqli_error($con));
}



mysqli_close($con);



?>

有人能给我一些建议吗? 谢谢。

2 个答案:

答案 0 :(得分:2)

数据输出附近的简单添加复选框:

while ($row = mysql_fetch_assoc($result)) {
    echo " <input type='checkbox' value='".$row['id']."' /> ".$row['Name'];
}

据我所知你需要这个:

  1. 输出一些行data - checkbox
  2. 用户将选择一些复选框和数据,与该复选框相关联的数据将从数据库中删除。
  3. 从页面中删除已删除的数据。
  4. 如何实现这一目标?

    你需要下面的html代码才能得到你想要的东西(+你需要一些javascript,我稍后会告诉你):

    <form id='myForm'>
        <div id='1'>
            <input type='checkbox' name='data[]' value='1' />Row 1</div>
        <div id='2'>
            <input type='checkbox' name='data[]' value='2' />Row 1</div>
        <div id='3'>
            <input type='checkbox' name='data[]' value='3' />Row 1</div>
    </form>
    

    在链接onclick处理程序here上查看该代码+序列化表单的示例。

    在PHP中生成相同的输出:

    // execute query
    echo "<form id='myForm'>";
    while ($row = mysql_fetch_assoc($result)) {
        echo "<div id='".$row['id']."'><input type='checkbox' value='".$row['id']."' /> ".$row['Name']." </div>";
    }
    echo "<a href='#' id='delete'>Delete</a>";
    echo "</form>";
    

    所以,现在我们列出了第一项,第二项是第二项(序列化形式)。

    如何实现第二项的另一半。我们必须创建php脚本,我们将从数据库中删除行。

    deleteScript.php脚本:

    // connect to the base
    foreach($id in $_POST['data']) {
        $query = "delete from `favourites` where `id` = ".$id;
        // execute your query
    }
    

    脚本准备好了。现在您必须从我们的页面发送请求到此脚本。使用ajax请求:

    $("#delete").on('click', function () {
        var data = $("#myForm").serialize();
        if(data != '') {
            $.ajax({
                url: "deleteScript.php",
                data: data
            });
        }
        else
        {
            alert("select some checkboxes");
        }
    });
    

    此javascript代码适用于之前的HTML代码

    Example here

    现在,我们的清单的第1和第2项已经完成。

    让我们从我们的页面中删除已删除的项目(第三项待办事项清单):

    $("input:checkbox:checked").each(function()
    {
        var id = $(this).val();
        $("div#"+id).remove();
    });
    

    您可以测试此代码here

    创建该示例是为了向您展示我的方法是有效的。但!仅当请求已成功发送时,您才必须删除div。因此,您必须编辑$.ajax success处理程序。请检查this fiddle

    所以,现在我们列出了所有项目。

    最后的例子:http://jsfiddle.net/575VS/18/

    您必须将其复制到您的文件中:)

    希望,这会有所帮助。

    注意,您可以获得ajax-request响应。

    $.ajax({
       //some properties
       success: function(data) {
           //response will be in data variable
       }
    });
    

    如果要在删除数据库中的选定行后立即重定向页面,请使用以下代码:

    if(data != '') {
        $.ajax({
            url: "deleteScript.php",
            data: data,
            success: function() {
                window.location.replace("new link here");
            }
        });
    }
    

答案 1 :(得分:1)

只是为了扩展Sharikov的答案:你需要按照他的描述将复选框放在循环中,但是如果你希望能够将该信息传递给另一个脚本,这对用户输入起作用,则需要更多的东西:

echo "<form action='receiver.php' method='post'>";
while ($row = mysql_fetch_assoc($result)) {
    echo " <input type='checkbox' value='".$row['id']."' name='checkedBoxes[]'/> ".$row['Name'];
}
echo "<input type='submit' value='process'>";
echo "</form>";

然后在receiver.php上:

foreach($_POST['checkedBoxes'] as $box){
    $id = $box;
    //THEN DO SOMETHING TO EACH ID 
}

如果您还想查看未选中哪些框,则事情会变得复杂一些,因为POST和GET只传递已选中复选框的值。我有几种方法可以做到这一点。一种方法是将通过$ _SESSION变量显示的所有id的数组传递给下一个脚本:

session_start();
$ids = new Array();
echo "<form action='receiver.php' method='post'>";
while ($row = mysql_fetch_assoc($result)) {
    echo " <input type='checkbox' value='".$row['id']."' name='checkedBoxes[]'/> ".$row['Name'];
    array_push($ids, $row['id'];
}
$_SESSION['ids'] = $ids;
echo "<input type='submit' value='process'>";
echo "</form>";

然后在receiver.php上,您可以使用$ _SESSION ['ids']引用该数组,并将其与已检查的值进行比较。只要确保你放置session_start();在你的代码中能够看到变量!

祝你好运!