2013-02-28 104 views
1

我已经在php中创建了一个用户配置文件页面。用户插入性别和电话号码,所有这些都存储在数据库中的一个称为配置文件的表中。我的问题是,如何让下拉列表保持用户以前输入的选定值。例如,如果用户选择男性,则下拉列表应将男性保留为选定的选项,并且仅当用户决定再次更改时才更改。下拉列表保持选定的最后一个值输入php

下面是代码:

<form action="" method="POST" >  
<?php 

if (isset($_GET['success']) === true && empty($_GET['success'])===true){ 
    echo'Profile Updated Sucessfuly'; 
}else{ 
    if(empty($_POST) === false && empty($errors) === true){ 
     $update_data_profile = array('gender' => $_POST['gender'], 
               'telephone' => $_POST['telephone']); 

     update_user_profile($session_user_id, $update_data_profile); 
     header('Location: profile_update.php?success');        
     exit(); 
    }else if (empty($errors) === false){ 
     echo output_errors($errors); 
    } 
?> 


Gender<select name="gender" id="gender"> 
    <option value=" "> EMPTY </option> 
    <option value="Male">Male</option> 
    <option value="Female">Female</option> 
</select> 

Telephone <input name="telephone" type="text" size="25" /> 

<input type="submit" value="" name="submit"/></br> 

这是我用在数据库中插入数据的功能:

function update_user_profile($user_id, $update_data_profile){ 

    $result = mysql_query("select user_id from profile where user_id = $user_id limit 1"); 

    $user_id = $update_data_profile['user_id'] ; 

    if(count($update_data_profile)){ 

    $columns = array(); 
    $values = array(); 

    foreach($update_data_profile as $field => $data){ 
    $columns[] = $field; 
    $values[] = $data; 
    } 
    } 

mysql_query(" INSERT INTO `profile` (" . implode(",", $columns) .") values ('" . implode("','", $values) . "')") or die (mysql_error()); 
+0

[你有什么试过](http://whathaveyoutried.com)?是的,你给我们提供了你已经完成的代码,但你试图完成你的问题的是什么?提示:[选择HTML选项](http://www.w3schools.com/tags/att_option_selected.asp) – UnholyRanger 2013-02-28 17:03:07

+0

什么都还不知道如何 – 33528 2013-02-28 17:09:58

+0

为什么不把这些张贴值存储在用户会话或cookie中,以及如果他们是目前,默认值的格式为 – Waygood 2013-02-28 17:13:50

回答

-1

你可以改变这样的代码:

<select name="gender" id="gender" default="Male"> 
0

由此您将得到逻辑

<select name="gender" id="gender"> 
<?php 
    if($_POST['gender'] == 'male' { 
    echo '<option value="Male" selected>Male</option>'; 
    } else { 
    echo '<option value="Female" selected>Female</option>'; 
?> 
</select> 
+0

最好用selected =“selected” – Waygood 2013-02-28 17:17:13

+0

为什么最好? – 2013-02-28 17:21:01

+0

在XHTML中,属性最小化是被禁止的,并且所选属性必须被定义为

0

您可以在页面加载期间检索最后一个性别并添加所选选项。

<?php 
    result = mysql_fetch_array(mysql_query("SELECT user_id FROM profile ORDER BY user_id DESC LIMIT 1")); 
    $gender = $result['gender']; //you need to change the ['gender'] with what your column name is for gender. 
?> 
<select name="gender" id="gender"> 
    <option value=" "> EMPTY </option> 
    <option value="Male" <?php if($gender == "Male") echo "selected='selected'"; ?>>Male</option> 
    <option value="Female" <?php if($gender == "Female") echo "selected='selected'"; ?>>Female</option> 
</select> 
+0

在我的代码中,我应该复制并粘贴你写的前两行,因为我得到这个错误行$ gender = $ result ['gender']; – 33528 2013-02-28 17:33:51

+0

之前的任何地方,你可以放在我会更新你的代码 – 2013-02-28 17:47:10

相关问题