-1

var_dump()配列を文字列と見なす理由がわかりません。以下のコードで何が問題なのかを確認してください。

<div id="chooseForm">
  <input type="checkbox" name="forms[]" id="forms" value="ArticlesOrderForm"> <b>Articles Order Form </b><br>
  <input type="checkbox" name="forms[]" id="forms" value="PressReleasesForm"> <b> Press Releases Form </b><br>
</div>



if(isset($_POST['forms']) && $_POST['forms']!=''){
        $table = $wpdb->prefix . "eshop_orders";            
        $forms=$_POST['forms'];

        var_dump($forms);

    }



次のように出力を取得してvar_dump($forms)います: string(5) "Array"

なぜ配列と見なさないのですか?誰かがこの問題を解決できたらうれしいです..

編集:

// Add an additional field to the checkout within a new fieldset
add_filter('eshopaddtocheckout','eshop_extras_checkout');

function eshop_extras_checkout($echo){

$echo .= '  <script>
        jQuery(function($) {
            $(".formGroup").hide();
            $("#chooseForm input:checkbox").on("change", function() {
                if($(this).is(":checked")) {
                    $("#" + $(this).val()).show();
                }
                else {
                    $("#" + $(this).val()).hide();
                }
            });
        });

    </script>';



    $echo .= '<fieldset class="eshop eshop_extra">' . "\n";


    $echo .= '<legend>Select the Approriate Form</legend>' . "\n";

    $echo .= ' <div id="chooseForm">
        <input type="checkbox" name="forms[]"  value="ArticlesOrderForm"> <b>Articles Order Form </b><br>
        <input type="checkbox" name="forms[]"  value="PressReleasesForm"> <b> Press Releases Form </b><br>
    </div>

    <div id="ArticlesOrderForm" class="formGroup">
        <legend>Articles Order Form</legend>
        <label for="kwd1">Art-Keywords1</label><input class="short" type="text" name="kwd1" value="" id="kwd1" maxlength="20" size="20" > <br>

    </div>

    <div id="PressReleasesForm" class="formGroup">
        <legend>Press Releases Form</legend>
        <label for="kwd2">PRKeywords2</label><input class="short" type="text" name="kwd2" value="" id="kwd2" maxlength="20" size="20"> <br>
    </div>';


 $echo .= '<fieldset class="eshop eshop_extra">' . "\n";

    $echo .= '<legend>Extras</legend>' . "\n";
    $echo .= '<label for="eshop_extra">'.__('Extra Field','eshop').' <span class="reqd">*</span><br />
          <input class="short" type="text" name="eshop_extra" value="" id="eshop_extra" maxlength="20" size="20" /></label><br />';
    $echo .= '</fieldset>' . "\n";

    return $echo;
}


// Saves extra field data in db
add_action('eshoporderhandle','eshop_extras_orderhandle',1,2);
function eshop_extras_orderhandle($_POST,$checkid){
    //we need to save the data
    global $wpdb;
    if(isset($_POST['eshop_extra']) && $_POST['eshop_extra']!=''){
        $table = $wpdb->prefix . "eshop_orders";
        $eshop_extra=$wpdb->escape($_POST['eshop_extra']);
        $query1=$wpdb->query("UPDATE $table SET eshop_extra='$eshop_extra' where checkid='$checkid' limit 1");
    }

    if(isset($_POST['kwd1']) && $_POST['kwd1']!=''){
        $table = $wpdb->prefix . "eshop_orders";
        $kwd1=$wpdb->escape($_POST['kwd1']);
        $query1=$wpdb->query("UPDATE $table SET kwd1='$kwd1' where checkid='$checkid' limit 1");
    }

    if(isset($_POST['kwd2']) && $_POST['kwd2']!=''){
        $table = $wpdb->prefix . "eshop_orders";
        $kwd2=$wpdb->escape($_POST['kwd2']);
        $query1=$wpdb->query("UPDATE $table SET kwd2='$kwd2' where checkid='$checkid' limit 1");
    }


    if(isset($_POST['forms']) && $_POST['forms']!=''){
        $table = $wpdb->prefix . "eshop_orders";            
        $forms=$_POST['forms'];

        var_dump($_POST);




    }


}
4

2 に答える 2

0

代わりに $_REQUEST リソースを使用してみてください。何かがあなたの $_POST を混乱させていることは明らかですが、あなたが提供したコードではそれを見つけることができません。また、$_POST 配列がスーパーグローバルである場合、引数として関数に渡す目的がわかりません。

于 2012-10-22T08:01:25.683 に答える
0

これは私にとってはうまくいきます:

<?php

if(isset($_POST['forms'])){
  $forms=$_POST['forms'];
  var_dump($forms);
}

?>

<form method="post" name="test" action="">
  <input type="checkbox" name="forms[]" id="forms" value="ArticlesOrderForm"> <b>Articles Order Form </b><br>
  <input type="checkbox" name="forms[]" id="forms" value="PressReleasesForm"> <b> Press Releases Form </b><br>
  <input type="submit" name="test" value="go"/>
</form>

出力

array(2) { [0]=> string(17) "ArticlesOrderForm" [1]=> string(17) "PressReleasesForm" }
于 2012-10-22T07:49:59.027 に答える