复选框值插入mysql

时间:2014-07-23 04:37:03

标签: php mysql checkbox

我现在正在苦苦挣扎几天才能获得代码中复选框的值。

基本上我有一个管理页面,客户可以选择和取消选择将在线的图像。

您可以选择和取消选择将在主页上显示的图像,并在图库页面上单独显示。两种检查都是可能的。

我有另一个复选框可以选择从列表中删除图像(image_deleted)。 还有一个数据库条目,图像仍在文件系统上,但稍后我会创建一个清理工作。

这是我的代码:

    <?php

    ini_set('display_errors', 1);
    error_reporting(E_ALL);

    ob_start();

    require('../../lib/dbconnection.php');
    require("../../lib/checklogin.php");
    require("includes/upload.inc.php");

    $query = 'SELECT * FROM gallery where image_deleted != 1 order by id desc';
    $result=$conn->query($query);
    $count=$result->num_rows;

    ?>      
    <!DOCTYPE html>
    <html>
        <head>
            <title>Classic Nails - CMS</title>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
            <meta name="description" content="ClassicNails">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <link rel="stylesheet" href="../css/screen.css">
            <link rel="stylesheet" href="../css/libs/magnific-popup.css"> 
            <script src="../js/libs/min/jquery-min.js" type="text/javascript"></script>
            <script src="../js/min/custom-min.js" type="text/javascript"></script>
            <script src="js/jquery.magnific-popup.js"></script> 
            <script>
                    $(document).ready(function() {
                    $('.image-link').magnificPopup({
                            type:'image',
                                    gallery:{
                                            enabled:true
                                    }
                            });
                    });
            </script>
        </head>
        <body>
            <?php include('includes/header.inc.php'); ?>
            <?php include('includes/nav.inc.php'); ?>
                <div class="wrapper">
                    <article class="content">
                    <h1>Foto gallery</h1>
                    <?php
                    if (isset($uploadResult)) {
                    echo "<p><strong>$uploadResult</strong></p>";
                    }
                    ?>
                    <form action="" method="post" enctype="multipart/form-data" name="uploadImage" id="uploadImage">
                        <p>
                                <label for="image">Upload image:</label>
                                <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_FILE_SIZE; ?>" />
                                <input type="file" name="images" id="imagesd" /> 
                        </p>
                        <p>
                                <input type="submit" name="upload" id="upload" value="Upload" />
                        </p>
                    </form>
                        <div id="maincontent">
                            <h2>Foto informatie</h2>
                            <form name="FotoInformatie" id="fotoInformatie" method="post" action="">
                                <table>
                                    <tr>
                                        <td align="center"><strong>Foto<strong></td>
                                        <td align="center"><strong>Titel</strong></td>
                                        <td align="center"><strong>Beschrijving</strong></td>
                                        <td align="center"><strong>Homepage</strong></td>
                                    </tr>
                                    <?php
                                    while ($rows=$result->fetch_assoc()) {
                                    ?>
                                    <tr>
                                        <td class="hide" align="center"><?php $id[]=$rows['id']; ?><?php echo $rows['id']; ?></td>
                                        <td><a href="../img/uploads/<?php echo $rows['filename'];?>" class="image-link"><img src="../img/thumbs/<?php echo $rows['filename']; ?>"></a></td>
                                        <td align="center"><input name="title[]" type="text" id="title" value="<?php echo $rows['title']; ?>"></td>
                                        <td align="center"><input name="caption[]" type="text" id="caption" value="<?php echo $rows['caption']; ?>"></td>
                                        <td><input type="checkbox" name="checkboxHome[]" id="checkBoxHome" value="<?php echo ($rows['home'] == 1) ? 'checked="checked"' : ''; ?>"/></td>
                                    </tr>
                                    <?php
                                    }
                                    ?>
                                    <tr>
                                    <td colspan="4" align="center">
                                        <input type="submit" name="submit" value="Submit">
                                    </tr>
                                </table>
                            </form> 
                        </div>
                    </article> <!-- end of content -->
                </div> <!-- end of container -->
            <?php include('includes/footer.inc.php'); ?>
        </body>
    </html>

    <?php

    if(isset($_POST['submit'])) {
        $title = $_POST['title'];
        $caption = $_POST['caption'];
        if ($_POST['checkboxHome'] == "") {
            $checkboxHome[] = '0';
        } else {
            $checkboxHome[] = '1';
        }
        for($i=0;$i<$count;$i++){
            $result1=mysqli_query($conn, "UPDATE gallery SET title='$title[$i]', caption='$caption[$i]', home='$checkboxHome[$i]' WHERE id='$id[$i]'");
            header("location:/admin/foto-admin.php");
            }
    }
    ?>

该复选框仅适用于我的数据库中的第一行。当我选择另一条记录时,只会更新我的数据库中的第一条记录。

另一个问题是我的复选框不会被检查,所以当图像在线时,我不知道基于我的屏幕。在数据库中,我看到0中的1。

我知道sql-injection是可能的,我必须准备语句,但这是我解决这个复选框问题的下一步。

希望有人可以帮我处理我的代码。这让我很头疼。

3 个答案:

答案 0 :(得分:1)

检查这些

Attribute name="id[]" for id field is not given. And it should get inside 
if(isset($_POST['submit'])) {
     $id = $_POST['id'];
    }

获取帖子后值的拼写错误

更改

$checkboxHome = $_POST['checkboxHome']; 
$checkboxFotoboek= $_POST['checkboxFotoboek']; 
$checkboxDelete = $_POST['image_deleted'];

$checkboxHome = $_POST['checkBoxHome']; 
$checkboxFotoboek= $_POST['checkBoxFotoboek'];
$checkboxDelete = $_POST['checkboxDelete'];

答案 1 :(得分:0)

你正试图弄错。

您的复选框名称为checkBoxHome,而您正试图获取$_POST['checkboxHome']而不是$_POST['checkBoxHome']

尝试$_POST['checkBoxHome']并将其打印为print_r('checkBoxHome')

checkBoxFotoboek复选框中的错误。

答案 2 :(得分:0)

试试这个

if(isset($_POST['submit'])) {
    $title = $_POST['title'];
    $caption = $_POST['caption'];
    $checkboxHome = $_POST['checkBoxHome'];
    $checkboxFotoboek= $_POST['checkBoxFotoboek'];
    $checkboxDelete = $_POST['checkboxDelete'];
    for($i=0;$i<$count;$i++){
    $result1=mysqli_query($conn, "UPDATE gallery SET title='$title[$i]',   caption='$caption[$i]', home='$checkboxHome[$i]', fotoboek='$checkboxFotoboek[$i]', image_deleted='$checkboxDelete[$i]' WHERE id='$id[$i]'");
        header("location:/admin/foto-admin.php");
    }
}
?>