如何使用复选框在php中进行多个查询?

时间:2012-05-17 10:41:32

标签: php mysql forms

我正在构建一个简单的应用程序,其基本任务是批准从MySQL表中列出的内容。列表项很长,比如15到20项。我想在列表项右侧放置一个复选框,允许用户检查多个项目,然后单击“提交”按钮批准所选项目。

我在表格上设置了一个基本标志列,将0或1设置为批准或拒绝。在我现有的系统中,用户必须单击该链接并转到特定页面,然后单击批准以批准该项目。我想通过允许用户选中复选框并选择多个条目来批准这些项目来缩短该过程。时间。

enter image description here

这是我的表格,该项目是YouTube链接,因此管理员可以查看视频,如果好,他/她可以通过选中复选框来批准该视频。

这是特定于批准项目的当前页面的php代码

<?php 
$msg = "";
$idForm = $_GET['id'];

if( isset( $_POST['submit'] ) ){
    $msg= approveVideo($idForm);
}
?>

approveVideo功能:

function approveVideo($id) {
    $message ="";
    $query= "UPDATE locus_videos SET set_flag='1' WHERE id='{$id}'";

    if(mysql_query($query)) {
        $message ="Video Approved ";
    }else {
        die("failed: " . mysql_error());    
    }

    return $message;

}

php文件的表格式:

<table width="100%" height="487" border="0" cellpadding="5" cellspacing="5">

                                &#34;方法=&#34; POST&#34;&GT;

    <table width="100%" border="0" cellspacing="5" cellpadding="5">

    上传者名称     视频链接   

  

           &#34;&GT;               &#34;目标=&#34; _blank&#34;&GT;                                                             

  </form>
</td>

在我当前的版本中,当用户点击视频链接时,会重定向到特定页面,只有他才能批准视频(YouTube链接)

2 个答案:

答案 0 :(得分:2)

相当容易。对于您要批准的每个内容,您需要一系列复选框(如下所示)。将每个复选框的值作为内容标识

<input type="checkbox" id="chk_1" name="**band[]**" value="ABC" /> ABC <br/>
<input type="checkbox" id="chk_2" name="**band[]**" value="PQR" /> PQR <br/>
<input type="checkbox" id="chk_3" name="**band[]**" value="XYZ" /> XYZ <br/>

现在上面的复选框将封装在你的。当您提交表单并检查POSTed数组(即$ _POST)时,它将有条目为

阵列(     “band”=&gt;阵列(           “0”=&gt; ABC,1 =&gt; PQR。     ); );

使用php的implode函数将其转换为逗号分隔的php字符串,并将此字符串传递给Update查询的WHERE的IN子句。

有两件事很重要。

1)您需要使用我在上面的示例中使用的复选框数组。

2)您需要将复选框的value属性设置为内容ID或内容表的主键。希望这会有所帮助。

答案 1 :(得分:2)

有两种方法,具体取决于您是只想“批准”行,还是“批准”和“拒绝”行。

首先:

<table>
    <thead>
        <tr>
            <td>&nbsp;</td>
            <td>Url</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><input type="checkbox" name="Approve[]" value="1" /></td>
            <td>http://www.youtube.com/...</td>
        </tr>
        <tr>
            <td><input type="checkbox" name="Approve[]" value="2" /></td>
            <td>http://www.youtube.com/...</td>
        </tr>
        <tr>
            <td><input type="checkbox" name="Approve[]" value="3" /></td>
            <td>http://www.youtube.com/...</td>
        </tr>
    </tbody>
</table>

如您所见,有一个名为“Approve []”的复选框,每行的值不同。该值是表格的ID列。

在PHP中,您将使用以下内容:

function approveVideos($ids)
{
    $message = '';
    $query = 'update locus_videos set set_flag = 1 where id in (' . implode(',', $ids) . ')';
    if(mysql_query($query)) 
    {
        $message ="Videos Approved ";
    }
    else 
    {
        die("failed: " . mysql_error());    
    }
    return $message;
}


$ids = $_POST['Approve'];
approveVideos($ids);

第二

<table>
    <thead>
        <tr>
            <td>&nbsp;</td>
            <td>Url</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><input type="hidden" name="Approve[1]" value="0" /><input type="checkbox" name="Approve[1]" value="1" /></td>
            <td>http://www.youtube.com/...</td>
        </tr>
        <tr>
            <td><input type="hidden" name="Approve[2]" value="0" /><input type="checkbox" name="Approve[2]" value="1" /></td>
            <td>http://www.youtube.com/...</td>
        </tr>
        <tr>
            <td><input type="hidden" name="Approve[3]" value="0" /><input type="checkbox" name="Approve[3]" value="1" /></td>
            <td>http://www.youtube.com/...</td>
        </tr>
    </tbody>
</table>

在PHP中,您将执行以下操作:

function setVideoFlag($id, $flag = 1)
{
    $message = '';
    $query = 'update locus_videos set set_flag = ' . $flag . ' where id = ' . $id;
    if(mysql_query($query)) 
    {
        $message ="Video " . ($flag == 1 ? 'Approved' : 'Disapproved');
    }
    else 
    {
        die("failed: " . mysql_error());    
    }
    return $message;
}

foreach($_POST['Approve'] as $id => $flag)
{
    setVideoFlag($id, $flag);
}

我希望有帮助吗?

加文