Создание и заполнение значений переменных - PullRequest
0 голосов
/ 08 ноября 2018

Я делал это раньше без проблем, но сейчас не могу заставить его работать. Из массива я хочу создать переменные значений и затем заполнить любые, которые были отправлены формой, или присвоить им пустое значение, если они не были отправлены.

Массив $ Fields, который содержит имена столбцов базы данных и генерируется автоматически из запроса, выглядит следующим образом:

Array
(
    [0] => ID
    [1] => Name
    [2] => EMail
    [3] => Message
    [4] => Site
)

и код PHP:

// Create variables from table columns and populate on post
foreach ($Fields as $key => $val) :
    if (isset($_POST) && isset($_POST[$val])) :
        $$key = $val;
        $val = $_POST[$val];
    else :
        $$key = $val;
        $val = "";
    endif;
endforeach;

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

С помощью miken32 он теперь работает и значительно упрощен по сравнению с моим оригинальным длинным кодом:

// Create variables from table columns and populate on post
foreach ($Fields as $val) :
        $$val = (isset($_POST[$val])) ?  $_POST[$val]  : "";
endforeach;

Это создаст переменные из массива имен столбцов, и когда форма будет отправлена ​​сама себе, она выберет значения записей, чтобы поля заполнялись до тех пор, пока поля формы имеют имена, соответствующие именам столбцов.

0 голосов
/ 08 ноября 2018

Я согласен, что вам следует придерживаться использования массивов, а не создавать переменные переменные, но, поскольку вы все равно делаете это и знаете, какие из них вам нужны; Вы можете изменить $Fields:

$Fields = array("ID"=>"", "Name"=>"", "Email"=>"", "Message"=>"", "Site"=>"");

Затем просто добавьте массивы и извлеките:

extract($_POST + $Fields);
0 голосов
/ 08 ноября 2018

Если то, что вы делаете, пытается установить некоторые переменные на основе значений выбранных элементов $_POST, с пустым значением по умолчанию, просто сделайте это:

$fields = ["ID", "Name", "Email", "Message", "Site"];
foreach ($fields as $field) {
    $$field = $_POST[$field] ?? "";
}

Но переменные переменные не часто используются; лучше просто придерживаться вызова их из массива. Это делает ваш код более понятным относительно того, откуда берутся значения. Чтобы установить значения по умолчанию, вы можете использовать array_merge() для пустого массива:

$fields = ["ID" => "", "Name" => "", "Email" => "", "Message" => "", "Site" => ""];
$posts = array_merge($fields, $_POST);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...