根据选定的复选框进行过滤

时间:2019-03-03 00:02:27

标签: php

每种电影类型都有一些复选框。每个复选框(电影类型)都来自数据库,因此每种电影类型都有一个复选框。

 <input type='checkbox' name='movieGenre[]' value='Comedy'>Comedy/>
 <input type='checkbox' name='movieGenre[]' value='Action'>Action/>
 ...

用户可以选择1个或多个复选框,然后单击“显示”按钮,应该在其中显示一个表格,其中包含与选中的电影流派相关的电影。

但是,要实现此目的,必须验证选中了哪些复选框,并进行查询以仅显示与所选复选框(电影类型)相关的电影。您知道这需要什么吗?

1 个答案:

答案 0 :(得分:0)

为了让您入门,这是一个简单的示例

//...

if ( ! empty ( $_POST['movieGenre'] ) && is_array ( $_POST['movieGenre'] ) )
{
    // bind param container

    $query = [];

    // bind param types, (s)

    $binds = '';

    // trim and remove possible empty values

    $selected = array_filter ( array_map ( 'trim', $_POST['movieGenre'] ) );

    // go through the $_POST data

    foreach ( $selected AS $genre )
    {
        // valid data should only contain [a-zA-Z]

        if ( ctype_alpha ( $genre ) )
        {
            // valid data, build up the (OR) clause

            $query[] = $genre;

            $binds .= 's';
        }
    }

    if ( ! empty ( $query ) )
    {
        // db connect

        // db statement

        // db prepare

        // db bind

        // db execute

        // db result

        // while ( db fetch )

        // db free result

        // db close
    }
    else
    {
        // error, all $_POST data was invalid
    }
}
else
{
    // error, nothing selected
}

//...