Заполнение полей формы с помощью jquery - PullRequest
2 голосов
/ 17 декабря 2011

Итак, у меня есть форма, которая будет использоваться для вставки и редактирования данных из MySQL. Я думал, что вместо того, чтобы писать две формы, я бы написал только одну, которая будет использоваться для обеих целей. Таким образом, когда он для вставки новых данных, его поля (входные данные и т. Д.) Являются явно пустыми. Но когда это для редактирования существующих данных, у меня есть Jquery для заполнения полей с помощью .val ().

Как это:

function formSetup(form_name, array_fields)
{
    $(document).ready(function(){
        var selector;
        for(var key in array_fields)
        {
            selector = "form[name=" + form_name + "] [name=" + key + "]";
            //alert(selector);
            $(selector).val(array_fields[key]);
        }
    });
}

А потом:

var fieldsArray = new Array();
fieldsArray["field1"] = "data read from Myqsl php";
fieldsArray["field2"] = "data read from Myqsl php";
//etc

Кстати, PHP выполняет всю работу по сообщению моей странице, должна ли эта форма вставлять или редактировать данные, поэтому эта функция javascript будет вызываться php только при наличии $ _GET ["action"] == "edit"

Что я хочу знать, так это лучший подход для подобных вещей? Есть ли стандартный способ сделать это?

Ответы [ 4 ]

0 голосов
/ 17 декабря 2011

Вместо того, чтобы заполнять форму с помощью javascript, лучше бы обработать эту сторону сервера.

В своем шаблоне php вы можете заполнить входные данные, подобные этому

<input name="field1" type="text" value="<?php echo $fieldValues['field1']; ?>" />
<input name="field2" type="text" value="<?php echo $fieldValues['field2']; ?>" />

Если для каждой переменной нет значения, поле будет пустым, в противном случае будут вставлены данные, полученные из базы данных.

0 голосов
/ 17 декабря 2011

Я к.Я делаю одну и ту же форму для двух действий - вставка и редактирование.Если вы используете какую-то технологию ajax и пытаетесь заполнить форму без обновления страницы, вы идете правильным путем.Но лучше просто добавить значения с помощью php, передав данные в значения полей.Для этого нет таких стандартов.Принимаю тебя.

0 голосов
/ 17 декабря 2011

Я бы сделал это на стороне сервера.

В сыром PHP, то есть без поддержки среды, такой как Yii, Cake и т. Д. Я бы реализовал облегченную среду MVC.

СозданиеКласс бизнес-объекта.

class MyData
{
  $field1;
  $field2;
  ..
}

Затем заполните свой бизнес-объект из источника данных.

 $data = new MyData();
 $data->field1 = "Something";
 $data->field2 = "Other stuff...";

или, если это новые данные.

$data = new MyData();

Создайте шаблон формы,Содержимое form.tmp.php

<form ...>
  <input type="text" name="field1" value="<?= $data->field1; ?>" />
  <input type="text" name="field2" value="<?= $data->field2; ?>" />
</form>

Затем используйте легкую обертку вокруг вашего шаблона.

ob_start();
  include('form.tmp.php');

$html = ob_get_contents();
ob_end_clean();

Давно я не делал ничего подобного.Существует множество фреймворков PHP, которые позаботятся об этом за вас.Некоторые легковесные, тяжелые корпоративные.

Я не проверял это, но это поможет вам начать.

0 голосов
/ 17 декабря 2011

Вы правы, приятно иметь только одну форму. Значения обычно заполняются на стороне сервера (в вашем случае PHP), но это зависит от архитектуры проекта - вы можете использовать jQuery. Пример для PHP:

<input type="text" name="email" id="email" value="<?=$data['email']?:''?>" />

Пример с jQuery:

$.get("getData.php", function(data){
  $("input#id").val(data['id']);
  $("input#email").val(data['email']);
});

Чтобы узнать, используется ли форма для вставки или обновления данных, используйте скрытое поле с первичным ключом записи базы данных (обычно id):

<input type="hidden" name="id" id="id" value="<?=$data['id']?:''?>" />

Когда это поле пустое - создать новую запись. Если оно содержит какое-то значение - обновите запись, содержащую в себе первичный ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...