非常基本的PHP数组问题

时间:2013-02-07 03:35:09

标签: php arrays

我正在创建一个表单,用户可以选择他们可能感兴趣的“服务”复选框,然后表单会通过电子邮件发送给我。问题是天气是否检查了盒子,所有结果都被填写。我该如何正确地做到这一点?

大约有25个,但这里只有几个:

    $services = array();
if($_POST['master_planning']) {$services[] = "Master planning";} 
if($_POST['snow_plowing']) {$services[] = "Snow plowing";} 
if($_POST['fine_gardening']) {$services[] = "Fine Gardening";} 
if($_POST['deer_protection']) {$services[] = "Deer Protection";} 

$interested = implode(", ", $services);

我知道这是一件非常基本的事情,但我似乎无法自己解决它

HTML就像:

<li><label for="planting"><input type="checkbox" name="planting" id="planting" value="x" /> Planting</label></li>

好吧,我想(我认为)为什么所有值都返回true,即使没有点击复选框,现在我该如何解决....

我想我应该提到这是表单(process.php)的第2页,实际的表单是index.php,我使用的是ajax脚本来传递值。

    <script type="text/javascript">
$(document).ready(function() {
    $('#submit').click(function () {        

        var name = $('input[name=name]');
        var phone = $('input[name=phone]');
        var email = $('input[name=email]');
        var master_plan = $('input[name=master_plan]');
        var front_foundation = $('input[name=front_foundation]');
        var backyard_plan = $('input[name=backyard_plan]');
        var specialty_garden = $('input[name=specialty_garden]');
        var lawn_cutting = $('input[name=lawn_cutting]');
        var lawn_plant_health_care = $('input[name=lawn_plant_health_care]');
        var organic_property_care = $('input[name=organic_property_care]');
        var seasonal_clean_ups = $('input[name=seasonal_clean_ups]');
        var pruning = $('input[name=pruning]');
        var fine_gardening = $('input[name=fine_gardening]');
        var deer_protection = $('input[name=deer_protection]');
        var snow_plowing = $('input[name=snow_plowing]');
        var planting = $('input[name=planting]');
        var walk = $('input[name=walk]');
        var terrace = $('input[name=terrace]');
        var wall = $('input[name=wall]');
        var outdoor_kitchen = $('input[name=outdoor_kitchen]');
        var fireplace = $('input[name=fireplace]');
        var driveway = $('input[name=driveway]');
        var fencing = $('input[name=fencing]');
        var pergola = $('input[name=pergola]');
        var swimming_pool = $('input[name=swimming_pool]');
        var irrigation = $('input[name=irrigation]');
        var lighting = $('input[name=lighting]');
        var grading_drainage = $('input[name=grading_drainage]');

        var newsletter = $('input[name=newsletter]');
        var comments = $('textarea[name=comments]');

        if (name.val()=='') {
            name.addClass('hightlight');
            return false;
        } else name.removeClass('hightlight');

        if (email.val()=='') {
            email.addClass('hightlight');
            return false;
        } else email.removeClass('hightlight');

        var data = 
        'name=' + name.val() + 
        '&phone=' + phone.val() + 
        '&email=' + email.val() + 
        '&master_plan=' + master_plan.val()+            
        '&front_foundation=' + front_foundation.val()+
        '&backyard_plan=' + backyard_plan.val()+
        '&specialty_garden=' + specialty_garden.val()+
        '&lawn_cutting=' + lawn_cutting.val()+
        '&lawn_plant_health_care=' + lawn_plant_health_care.val()+
        '&organic_property_care=' + organic_property_care.val()+
        '&seasional_clean_ups=' + seasional_clean_ups.val()+
        '&pruning=' + pruning.val()+
        '&fine_gardening=' + fine_gardening.val()+
        '&deer_protection=' + deer_protection.val()+
        '&snow_plowing=' + snow_plowing.val()+
        '&planting=' + planting.val()+
        '&walk=' + walk.val()+
        '&terrace=' + terrace.val()+
        '&wall=' + wall.val()+
        '&outdoor_kitchen=' + outdoor_kitchen.val()+
        '&fireplace=' + fireplace.val()+
        '&driveway=' + driveway.val()+
        '&fencing=' + fencing.val()+
        '&pergola=' + pergola.val()+
        '&swimming_pool=' + swimming_pool.val()+
        '&irrigation=' + irrigation.val()+
        '&lighting=' + lighting.val()+
        '&grading_drainage=' + grading_drainage.val()+

        '&newsletter=' + newsletter.val() + 
        '&comments='  + encodeURIComponent(comments.val());

        $('.text').attr('disabled','true');
        $('.loading').show();

        $.ajax({
            url: "process.php", 
            type: "GET", 
            data: data, 
            cache: false, 
            success: function (html) { 
                if (html==1) { 
                    $('.form').fadeOut('slow'); 
                    $('.done').fadeIn('slow'); 
                } else alert('Sorry, unexpected error. Please try again later.'); 
            } 
        });
        return false;
    });                         
}); 
</script>

这可能是每个结果都显示的原因吗?

1 个答案:

答案 0 :(得分:0)

您的支票不正确。让我们假设您的表单中有复选框的HTML代码:

<input type="checkbox" name="master_planning" value="yes" />

然后在你的PHP上你想做这样的检查:

if(isset($_POST['master_planning']) && $_POST['master_planning'] == 'yes'){
    array_push($services, "Master planning"];        
}

函数 array_push 在数组的末尾添加给定元素,这样就可以“动态”填充数组。