ユーザーがhtmlドロップダウンリストを使用して性別を選択するphpでプロファイルページを作成しました。ユーザーが性別を選択すると、関数を使用してフォームがディスパッチされ、データがプロファイル テーブルに保存されます。私が欲しいのは、前回ユーザーが選択した値を保持するドロップダウンリストだけです。たとえば、ユーザーがプロファイルを作成し、gender=male を選択したとします。次にプロファイル ページにアクセスしたときにプロファイルを更新する場合は、ドロップダウン リストで選択された値として「男性」を保持します。
これが私のコードです:
<?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'],
'zip' => $_POST['zip']);
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>
ZIP<input name="zip" type="text" size="15" placeholder="type your ZIP code"/>
これが私の機能です:
<?php
function update_user_profile($user_id, $update_data_profile){
$result = mysql_query("select user_id from profile where user_id = $user_id limit 1");
if(mysql_num_rows($result) === 1) {
$update = array();
array_walk($update_data_profile, 'array_sanitize');
foreach($update_data_profile as $field => $data ){
if(!empty($data)){
$update[]='`' . $field . '` = \'' . $data . '\'';
}
}
if(isset($update) && !empty($update)) {
mysql_query(" UPDATE `profile` SET " . implode(', ', $update) . " WHERE `user_id` = $user_id ") or die(mysql_error());
}
}
else {
$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());
}
}
?>