无法使用复选框数据

时间:2016-04-27 11:11:00

标签: php mysql

我有一个项目的4张图片列表。 其中一个应该显示在另一个页面中,作为从该页面到项目页面的链接。

我希望能够选中一个方框,以便这个方框将成为主要的图片,并显示在类别页面中。

这是表格的代码:

$all_pics_of_item = fetch_all_pics_of_item($item_id);
//print_r($all_pics_of_item);
if(is_array($all_pics_of_item))
{
    echo '<ul>';
    foreach($all_pics_of_item as $key=>$val)
    {
        if ($val['pics_main']=='yes')
        {
         $set_checked = "checked";
         $action = true;
        }
        else
        {
        $set_checked = "";
        $action = false;
        }
        echo '<li style="float: left;margin:10px;border: 1px solid #000;padding:10px;">';
        echo '<img style="width:120px;height:120px;" src="../../gallery_images/thumbs/'.$val['pics_source'].'">';
        echo '<br>'.$val['pics_name'];
        echo '<br><a href="delete_pic.php?picsrc='.$val['pics_source'].'&picid='.$val['pics_id'].'&iid='.$item_id.'"><div class="delet"><b>x</b></div></a>';
        echo '<br><form method="post" action="update_main_pic.php" enctype="text/plain" >
              Show in cat. page<input type="checkbox" class="myCheckbox" name="main" value="no"'.$set_checked.'&action='.$action.' data-picid="'.$val['pics_id'].'" data-itemid="'.$item_id.'" />
              </form>';
        echo '</li>';
    }   
    echo '<ul>';
}

这是AJAX和脚本:

 $(document).ready(function(){

$(':checkbox').click(function() {
     $(':checkbox').not(this).removeAttr('checked');

    var picid = $(this).attr('data-picid');
    var itemid = $(this).attr('data-itemid');
    var action = $(this).is(':checked');
    //if((this).attr('checked',true))
    //{
    //  var action = true;
    //}
    //else
    //  {
    //      var action = false;
    //  }


    $.ajax({
        url: "ajax_update_main_pic.php",
        type: "POST",
        data: "itemid=" + itemid + "&picid=" + picid + "&action=" + action,
        timeout:5000,
        dataType: "html",
        beforeSend:function(){


        },
        error: function(){
            alert('Problem !');
        },
        success: function(msg){
            if(msg == 'no')
            {

            }
            else
            {

            }

        },
        complete: function(){

        }
    })

});  

}); //END READY

这是更新功能:

<?php

require_once "../../db.php";
require_once "../../functions.php";

if(isset($_POST['itemid']) && isset($_POST['picid']) && isset($_POST['action']))
{
$item_id = $_POST['itemid'];
$pic_id = $_POST['picid'];
$action = $_POST['action'];
}
else
{
header('location: upload_image.php');
    die();
}


if($action == 'true')
{
$pic_show = 'yes';
}
else
{
$pic_show = 'no';
}
//print_r($pic_show);
function update_main_pic($item_id, $pic_id, $pic_show )

{
    global $db;

    try
    {
        $sql = "
                UPDATE pics SET
                pics_main = :pic_show
                WHERE pics_id = :pic_id AND pics_items_id = :item_id

               ";       

        $stmt = $db->prepare($sql);
        $stmt->bindParam(':pics_id', $pic_id, PDO::PARAM_INT);
        $stmt->bindParam(':pics_items_id', $item_id, PDO::PARAM_INT);
        $stmt->bindParam(':pics_main', $pic_show, PDO::PARAM_STR);
        $stmt->execute();

        return true;    
    }
    catch(Exception $e) 
    {
       return false;        
    }
}



$result = update_main_pic($item_id, $pic_id, $pic_show );

if($result == false)
{
    die('Problem updating pics');
}
else
{
    header('location: upload_image.php?iid='.$item_id);
    die();
}

?>

我总是 &#39;问题更新照片&#39;

看起来只有已复选的复选框被传输,而我希望列PIC_MAIN将显示&#34;是&#34;如果这是选择的那个和&#34;不&#34;所有其他照片的敌人

1 个答案:

答案 0 :(得分:1)

问题在于你的约束力。

您的sql具有以下名称变量:pic_show:pic_id:item_id,但您绑定的是:pics_main':pics_items_id:pics_id

将绑定更改为:

$sql = "
        UPDATE pics SET
        pics_main = :pic_show
        WHERE pics_id = :pic_id AND pics_items_id = :item_id

       ";       

    $stmt = $db->prepare($sql);
    $stmt->bindParam(':pic_id', $pic_id, PDO::PARAM_INT);
    $stmt->bindParam(':item_id', $item_id, PDO::PARAM_INT);
    $stmt->bindParam(':pic_show', $pic_show, PDO::PARAM_STR);