0

ユーザーが興味のある「サービス」のチェックボックスを選択すると、フォームがメールで送信されるフォームを作成しています。問題は、ボックスがチェックされているかどうか、すべての結果が入力されているかどうかです。これを適切に行うにはどうすればよいですか?

約 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>

OK、チェックボックスがクリックされていなくても、すべての値が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>

これが、すべての結果が表示される理由でしょうか?

4

1 に答える 1

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は、指定された1つまたは複数の要素を配列の最後に追加するため、配列に「動的に」データを入力する簡単な方法になります。

于 2013-02-07T03:52:39.370 に答える