【问题标题】:Dynamically generate textboxes for php form, put them into array, implode to string and write string to db为php表单动态生成文本框,将它们放入数组,内爆到字符串并将字符串写入数据库
【发布时间】:2014-11-21 06:00:41
【问题描述】:

以下 Javascript 函数可以工作并将 1-10 个输入字段添加到表单中。用户可以使用选项菜单选择多少。

function run() {
    var i = document.getElementById("radioNumber").value;
    while (document.getElementById("neu").firstChild) {
        neu.removeChild(neu.firstChild);
    }
    for(j=0; j<i; j++){
        var feld = document.createElement("input");
        feld.setAttribute("name", "myNewField[]");
        document.getElementById("neu").appendChild(feld);
    }
}

这是表格:

<div class="radio field" style="display:none">
    <form action="&lt;?php echo htmlspecialchars($_SERVER[" php_self"]);?>
        " method="post"> <label for="title2">Name your textfield</label> 
        <input type="text" name="title2"> </br>
        </br>
        <label for="text">Choose a step</label> 
        <select name="step2">
            <option value="0">Select</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
        </select>
        </br>
        </br>
        <label for="pos2">Choose a position</label> 
        <input type="text" name="pos2"></br>
        </br>
        </br>
        <label for="radio">How many radio fields do you want to add?</label> 
        <select id="radioNumber" onchange="run()">

<!--Call run() function-->
            <option value="0">Select</option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
            <option value="8">8</option>
            <option value="9">9</option>
            <option value="10">10</option>
        </select>
        <br> 
        <div id="neu">
        </div>
        </br>
        <input type="submit" name="radio" value="Confirm"> 
    </form>
</div>

这是我尝试在数据库中插入值的 PHP 代码。除了插入变量$entries,一切都很好。我得到了数组 myNewField[] 并想要将其内爆以便插入例如 entry1$$entry2$$entry3$$entry4 作为字符串。 db 中的字段条目仍然为空,但 print_r($_POST) 显示条目写入数组 myNewField[]... 有人看到错误吗?

<?php
if(isset($_POST["title2"])){
        $title2 = htmlspecialchars ($_POST["title2"]);
        $req = htmlspecialchars ($_POST["required"]);
        $step2 = htmlspecialchars ($_POST["step2"]);
        $pos2 = htmlspecialchars ($_POST["pos2"]);
        $entries = implode("$$",$_POST["myNewField[]"]);
        echo "test".$entries;
        mysql_query("INSERT INTO field(type_id, title, step, pos, visible, entries, required) VALUES ('2', '".$title2."', '".$step2."', '".$pos2."', '1', '".$entries."', '".$req."');");
        print_r($_POST);
    }
    else{
        $title2 = "";
        $req ="";
        $step2 = "";
        $pos2 = "";
        $entries = "";
    }
?>

【问题讨论】:

  • 请注意,mysql_* 函数已被弃用。我建议你开始使用 PDOmysqli_* 函数。

标签: javascript php mysql arrays implode


【解决方案1】:

变化:

$entries = implode("$$",$_POST["myNewField[]"]);

收件人:

$entries = implode("$$",$_POST["myNewField"]);

【讨论】:

    猜你喜欢
    • 2018-12-14
    • 2016-11-21
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多