Лучший способ выполнить запрос POST в PHP с длинными или сложными формами? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть несколько форм с контентом, который пользователи могут редактировать, простой пример - профиль. php с пятью полями, из которых пользователь может изменить три (на данный момент); имя, фамилия и адрес. Форма html извлекает их существующие данные из sql и представляет их в редактируемых текстовых полях.

Ниже показано, как получить различные переменные:

<?php
//PHP to submit content of profile fields.

if($_SERVER["REQUEST_METHOD"] == "POST"){
//Set ID for insert statement
$id=$rows['id'];
//Get name from form
if(empty($_POST['name'])){
$name = $rows['name'];
}
elseif($_POST['name'] == $rows['name']){
    $name = $rows['name'];
}
else{
        $name = $_POST['name'];
            print $name;
}
//Get Surname from form
if(empty($_POST['surname'])){
$name = $rows['surname'];
}
elseif($_POST['surname'] == $rows['surname']){
    $surname = $rows['surname'];
}
else{
        $surname = $_POST['surname'];
}
//Get Address from form
if(empty($_POST['address'])){
$name = $rows['address'];
}
elseif($_POST['address'] == $rows['address']){
    $address = $rows['address'];
}
else{
        $address = $_POST['address'];
}


$sql    = "UPDATE usr SET name = ?, surname = ?, address = ?  
where id = ?"

(а затем остальные кода для отправки запроса, я не собираюсь включать его здесь, если вы, ребята, не нуждаетесь в нем. Это основы c mysqli.)

Выше просто кажется очень вялым и затяжным, есть лучший способ сделать это, особенно если формы становятся длиннее? В сущности, я сделал свое «if (empty)» как можно более простым, чтобы избежать необходимости создавать эхо-ошибку для каждого из них, поскольку функция в основном сохраняет все, что находится в форме, при загрузке, если пользователь пытается ввести пустое поле.

Я чувствую, что, как только я начну добавлять дату рождения, номер телефона и другие вещи, запросы будут очень длинными, оператор обновления sql сойдет с ума от "ssssss" et c.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Вы можете создать массив с вашими ключами, а затем перебрать их и извлечь из Post ваше значение и построить другой массив с допустимыми данными.

$keys = ['name', 'surname', 'address'];
$final = [];
foreach ($keys as $key) {
    $final[$key] = $_POST[$key] ?? $rows[$key];
}
0 голосов
/ 21 апреля 2020

Вы также можете использовать троичную функцию:

$name = (empty($_POST['name'])? $rows['name'] : $_POST['name']);

, например. Если вызов empty() равен true (переменная формы пуста), он вернет переменную из $rows, а если нет, то вернет переменную из формы.

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

...