从Array Elements获取POST值

时间:2011-10-16 07:33:49

标签: php arrays post elements

我无法从动态生成的txtinput []和MultiSelect获取POST值,因为它们形成了一个数组。我看了很多文章,但我感到困惑..

下面给出了我的代码的简短形式..

请以最佳方式帮助我如何以字符串“value1,value2,value3”的形式获取数组值

问候......谢谢...... 下面是我的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta charset="UTF-8">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>

<script type="text/javascript">

$(function(){
       //initially hide the textbox
            $("#other_lang").hide();
            $('#lang').change(function() {
              if($(this).find('option:selected').val() == "Other - specify"){
                $("#other_lang").show();
              }else{
                $("#other_lang").hide();
              }
            });
            $("#other_lang").keyup(function(ev){
                var othersOption = $('#lang').find('option:selected');
                if(othersOption.val() == "Other - specify")
                {
                    ev.preventDefault();
                    //change the selected drop down text
                    $(othersOption).html($("#other_lang").val()); 
                } 
            });
            $('#form_id').submit(function() {
                var othersOption = $('#lang').find('option:selected');
                if(othersOption.val() == "Other - specify")
                {
                    // replace select value with text field value
                    othersOption.val($("#other_lang").val());
                }
            });
        });

    var counter = 1;
    var limit = 3;
    var phonefields = "<input name='phoneno[]' id='phoneno[]' class='phoneno' type='text'/>";
function addInput(divName){


     if (counter == limit)  {
          alert("Max. " + counter + " Phone numbers only");
     }
     else {
          var newdiv = document.createElement('div');
          newdiv.innerHTML = phonefields;
          document.getElementById(divName).appendChild(newdiv);
          counter++;
     }
}

</script>

</head>

<body>
<form  class="form" method="post" name="form" action="">
        <label for="langs">Languages:</label><?php dyn_languages() ;?>
        <input id="other_lang" name="other_lang" type="text" placeholder="Other lang" /><br /><br /><br />

        <label for="phoneno[]">Phone No:</label>
        <input id="buttonAsLink" type="button" onClick="addInput('dynamicInput')">         
        <div id="dynamicInput"><input name='phoneno[]' id='phoneno[]' type='text'/></div>

        <input name="submit" type="submit" value="Submit" />
</form>

<?php 
//----Dynamic SelectBox for languages
function dyn_languages(){
        $langs = array (1 => 'English', 'French', 'German', 'Russian', 'Spanish', 'Other - specify');

        echo "<select size='6' name='lang' id='lang' multiple='multiple'>";
        foreach ($langs as $value) {
            echo (in_array($value,$_POST)) ? '<option value="'.$value.'" selected>'.$value.'</option>\n' : '<option value="'.$value.'">'.$value.'</option>\n';
        } echo '</select>';

}//--END Function* --Dynamic SelectBox for languages

//--- POST Action
if(isset($_POST['submit'])){
        $phoneno = $_POST['phoneno'];
        $langs = $_POST['lang'].",".$_POST['other_lang'];

        $sql = "INSERT INTO table(lang, phoneno) VALUES ('$phoneno','$langs')";
        echo "<hr />".$sql; 
}
//--- END POST Action
?>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你应该试试这个

$phoneno = implode(', ',$_POST['phoneno']);

http://php.net/manual/en/function.implode.php

答案 1 :(得分:0)

我设法用

做到了
foreach ($_POST['phoneno'] as $ph) {$phoneno.= $ph.", ";}
foreach ($_POST['lang'] as $lng) {$langs.= $lng.", ";}