Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多参数信息集_Php_Wordpress_Forms_Isset - Fatal编程技术网

Php 多参数信息集

Php 多参数信息集,php,wordpress,forms,isset,Php,Wordpress,Forms,Isset,我正在尝试在我的网站上创建一个类别过滤器,允许用户在两个类别列表中选择一个类别。一个列表称为“区域”,另一个列表称为“业务类型”。单击表单上的“提交”按钮时,页面应刷新,并且仅显示用户选择的类别中的帖子。这是完整的代码: $zones = get_field('zones_list'); $business_types = get_field('business_type'); echo'<form role="search" method="post" id="searchform"&

我正在尝试在我的网站上创建一个类别过滤器,允许用户在两个类别列表中选择一个类别。一个列表称为“区域”,另一个列表称为“业务类型”。单击表单上的“提交”按钮时,页面应刷新,并且仅显示用户选择的类别中的帖子。这是完整的代码:

$zones = get_field('zones_list');
$business_types = get_field('business_type');

echo'<form role="search" method="post" id="searchform">
    <div>';
    foreach( $zones as $zone ):
        echo'<input type="radio" value="'.$zone->slug.'" name="zone_list[]">'.$zone->name.'</input>';
    endforeach;
    echo'</div>
    <div>';
    foreach( $business_types as $business_type ):
        echo'<input type="radio" value="'.$business_type->slug.'" name="business_type[]">'.$business_type->name.'</input>';
    endforeach;
    echo'</div>
    <input type="submit" id="searchsubmit" value="Submit" />
</form>';

if(isset($_POST['zone_list'])) {
    $list_name = $_POST['zone_list'];
    $list_formated = implode('+', $list_name);
} else if (isset($_POST['business_type'])) {
    $list_name = $_POST['business_type'];
    $list_formated = implode('+', $list_name);
} else if (isset($_POST['zone_list'], $_POST['business_type'])) {
    $list_name_1 = $_POST['zone_list'];
    $list_name_2 = $_POST['business_type'];
    $list_both = array_merge($list_name_1,$list_name_2);
    $list_formated = implode('+', $list_both);
} else {}

$args = array(
        'post_type' => 'post',
        'orderby' => 'date',
        'category_name' => $list_formated,
        'order' => 'DESC',
        'posts_per_page'=> '3',
        'paged' => get_query_var( 'paged' ),
    );
        global $wp_query;
        $wp_query = new WP_Query( $args );
        if( $wp_query->have_posts() ):
        while( $wp_query->have_posts() ): $wp_query->the_post(); global $post;

我只是在学习PHP,所以可能有更好的方法,但这是迄今为止我找到的唯一解决方案。我真的很感激能得到的任何帮助

你可以这样写

如果(isset($_POST['zone_list'])和&isset($_POST['business_type'])){


&&表示两个ISSET都必须为真。您可以编写&&or and,它是相同的。

我尝试了此操作,但仍然不起作用。我不知道为什么,但由于某些原因,它从未运行过该条件。当您选择两个类别时,它只运行第一个条件。因为第一个语句为真,其他语句不起作用。请将if-elseif-else分开如果不是这样的话,谢谢你!谢谢你!
else if (isset($_POST['zone_list'], $_POST['business_type'])) {
    $list_name_1 = $_POST['zone_list'];
    $list_name_2 = $_POST['business_type'];
    $list_both = array_merge($list_name_1,$list_name_2);
    $list_formated = implode('+', $list_both);
} else {}