Форма PHP разрабатывает лучшую практику

Вам нужно будет подключить профилировщик Java (VisualVM) или ваш набор и проанализировать вашу кучу, чтобы узнать, какие объекты на самом деле вызывают это. Весьма вероятно, что какой-то клиентский SDK-контракт нарушен, в результате чего много Java-объектов лежат без GC.

8
задан 18 May 2009 в 07:38
поделиться

2 ответа

Вот как я, вероятно, сделал бы это без использования каких-либо других фреймворков / библиотек и т. Д. Это в основном то, что сказал Элазар Лейбович.

  <?php
    //id is zero or a record id depending on whether updating or inserting
    //an existing record could be edited using edit.php?id=10
    //if the id GET parameter is omitted a new record will be created
    $id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
    $error = '';

    if ($id) {
        //this array would be in the same format as the one below
        $record = fetchRecordFromDb($id);    
    } else {
        $record = array( 'field1' => 'default value', 'field2' => 'some other default' );    
    }

    //allow POST data to override what is already in the form
    foreach ($record as $key => $value) {
        if (isset($_POST[$key])) {
            $record[$key] = $_POST[$key];
        }
    }

    if (isset($_POST['submit'])) {
        if (!validateForm()) {
            $error = 'Some form error';
        } else {
            if ($id) {
                updateRecord($id, $record);
            } else {
                insertRecord($record);
            }

            //ok, redirect somewhere else
            header('Location: http://somewhere');
            exit();
        }
    }

    ?>

    <form method="post">
       <?php echo $error; ?>
       <input type="hidden" name="id" value="<?php echo $id; ?>">
       <input type="text" name="field1" value="<?php echo htmlspecialchars($record['field1']); ?>"><br />
       <input type="text" name="field2" value="<?php echo htmlspecialchars($record['field2']); ?>"><br />
       <input type="submit" name="submit">
    </form>
1
ответ дан 5 December 2019 в 22:20
поделиться

Вы можете использовать одну форму со скрытым полем для id . Если это поле установлено - то вам следует обновить запись $ _ POST ['id'] остальной частью формы. Если поле не задано (то есть имеет значение = ""), вы должны вставить данные формы в новую запись.

Вы установите поле id в соответствии с действием, например / data / edit / 1 установит для поля id значение , а / data / new` не установит для него значение.

Для Например, ваше представление может быть

<form action="/data/edit/1">
<input type="hidden" value="<?php echo $data->id; ?>" />
<input type="text" value="<?php echo $data->name; ?>" />
</form>

В случае новой записи вызовите ваше представление со следующими данными

$data->id = '';
$data->name = '';

В случае известной записи просто инициализируйте объект $ data с данными

$data->id = $record_id;
$data->name = $record_name;
]
5
ответ дан 5 December 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: