2012-02-22 4 views
0

В PHP Project я создаю страницу a, которая извлекает данные из базы данных при загрузке страницы, а затем позволяет пользователю изменять данные. & Update. Я должен использовать input text и option элементы управления для отображения данных. Редактирование данных формы может включать в себя несколько запросов POST. Чтобы загрузить данные из базы данных и сохранить данные между POST s, я использую этот подход.Загрузить данные из базы данных и сохранить данные между postbacks

Загрузка данных из базы данных

$oClass = new DataClass(); 
$oClass ->GetRecordById($_REQUEST['id']); 
$dataName = $oClass ->Name; 
$dataYear = $oClass ->Year; 

ВХОД ТЕКСТЫ

<input type="text" name="txtName" value="<?php echo isset($_POST['txtName']) ? $_POST['txtName'] : $dataName ?>" > 

КЛЮЧИ

$arrYears = GetYears(); 
foreach ($arrYears as $year) { 

    if (isset($_POST['ddlYear'])) { 
     if ($_POST['ddlYear'] == $year) { 
      echo '<option value="' . $year . '" selected="selected">' . $year . '</option>'; 
     } else { 
      echo '<option value="' . $year . '">' . $year . '</option>'; 
     } 
    } else { 
     if ($dataYear == $year) { 
      echo '<option value="' . $year . '" selected="selected">' . $year . '</option>'; 
     } else { 
      echo '<option value="' . $year . '">' . $year . '</option>'; 
     } 
    } 
} 

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

if (isset($_POST['NAME'])) 
{$_POST['NAME']} 
else 
{$name} 

ответ

0

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

Выше, если вы назначаете $ year = $ oClass -> Year; но он нигде не упоминается. $ year в цикле foreach является локальной переменной области видимости только для этого цикла foreach, после того как этот цикл завершает выполнение, он исчезает.

вы можете делать такие вещи.

if (isset($_POST['txtName'])) 
{ 
    $name = $_POST['txtName']; 
} 
else 
{ 
    $name = ''; 
} 

<input type="text" name="txtName" value="<?php echo $name; ?>" /> 

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

if (isset($_POST['ddlYear'])) { 
    echo '<option value="' . $year . ($_POST['ddlYear'] == $year) ? '" selected="selected"' : '' . '>' . $year . '</option>'; 
} 
else { 
    echo '<option value="' . $year . ($movieyear == $year) ? '" selected="selected"' : '' . '>' . $year . '</option>'; 
} 

Кроме того, чтобы получить более быстрый ответ, пожалуйста обеспечивают самый простой рабочий вариант использования, например, выше пример $ _POST переменные, которые не определены в любом месте и иже $ movieyear также не определен.

+0

В «$ year» была опечатка, исправлена. Спасибо за ответ... – Nalaka526

Смежные вопросы