2009-10-06 2 views
0

У меня есть форма, где пользователь выбирает поле 1, а затем выбирает поле 2, который заполняется по своему выбору на поле 1.изменение поля формы, чтобы после того, как выбран после PHP

Проблема заключается в том, что после того, как они находятся на шаг 2, поле 1 не отображает их выбор (даже если выбор по-прежнему переносится в поле скрытой формы). Я не уверен, как это сделать, когда вы устанавливаете форму ниже. Мне нужно выяснить, как ее пометить выбранный вариант.

функции выбора в поле 1 и 2 ниже

function GetCategoryList(){ 
    $push .= "<form action=\"main.php\" method=POST>"; 
    $push .= "<select name=cat>"; 
    $result = mysql_query("SELECT * FROM `cats`") or trigger_error(mysql_error()); 
    while($row = mysql_fetch_array($result)){ 
     foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
      $id = $row['id']; 
      $cat = $row['cat']; 
      $push .= "<option value=$id>$cat</option>"; 
    } 
    $push .= "</select>"; 
    $push .= "<input type=submit name=button id=button value=\"Set Category\"></form>"; 
    return $push; 
} 

function GetSubCategoryList($cat){ 
    $push .= "<form action=\"main.php\" method=POST>"; 
    $push .= "<select name=subcat>"; 
    $result = mysql_query("SELECT * FROM `subcats` WHERE cat = '$cat'") or trigger_error(mysql_error()); 
    while($row = mysql_fetch_array($result)){ 
     foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
      $id = $row['id']; 
      $subcat = $row['subcat']; 
      $cat = $row['cat']; 
      $push .= "<option value=$id>$subcat</option>"; 

    } 
    $push .= "</select>"; 
    $push .= "<input type=hidden name=cat value=$cat>"; 
    $push .= "<input type=submit name=button id=button value=\"Set Sub-Category\"></form>"; 
    return $push; 
} 

Это код на самой странице

Category 
<? echo GetCategoryList(); ?> 
    <br /> 

    SubCategory 
<? if(isset($_POST['cat'])){ echo GetSubCategoryList($_POST['cat']); } else { echo "<em>select a category</em>"; } ?> 
<br /> 

ответ

1

Вы должны указать выбранный вариант с атрибутом selected.

function GetCategoryList($selectedId=null) { 
//... 
    $selected = ($id==$selectedId) ? "selected" : ""; 
    $push .= "<option $selected value=$id>$cat</option>"; 
//... 
} 

echo GetCategoryList(isset($_POST['cat']) ? $_POST['cat'] : null); 

(для XHTML он должен быть selected="selected")

+0

работает как шарм, спасибо! Кроме того, если вы не возражаете, не могли бы вы объяснить, как вы написали эхо функции внизу, кажется более чистым, но я не понимаю, что именно происходит (я понимаю результат, а не специфику) – mrpatg

+0

Вы, вероятно, x? y: z' часть. Это тернарный оператор, http://docs.php.net/ternary. Мне просто нравится избегать создания переменных «один раз», хотя иногда их можно читать с ними. Если задано '_POST [cat]', значение передается функции, в противном случае передается NULL. – VolkerK

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