Динамически генерировать текстовые поля для php-формы, помещать их в массив, взрывать в строку и записывать строку в БД.

Следующая функция 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 в виде строки. Записи полей в БД остаются пустыми, но 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 = "";
    }
?>

person Toby    schedule 26.09.2014    source источник
comment
Сразу предупреждаю, функции mysql_* устарели. Я бы посоветовал вам начать использовать PDO или mysqli_*.   -  person Bono    schedule 26.09.2014


Ответы (1)


Изменять:

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

To:

$entries = implode("$$",$_POST["myNewField"]);
person Ganhammar    schedule 26.09.2014