0

ユーザーが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&nbsp;<select name="gender"  id="gender"> 
    <option value=" "> EMPTY </option> 
    <option value="Male">Male</option> 
    <option value="Female">Female</option> 
</select>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 


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());

    }

}
?>
4

1 に答える 1

0

データベースから性別を取得し、デフォルトでドロップダウンに表示するには、次のようにします。

  $con=mysqli_connect("example.com","peter","abc123","my_db");
  // Check connection
  if (mysqli_connect_errno())
  {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

  $result = mysqli_query($con,"select * from profile where user_id = $user_id limit 1");

  while($row = mysqli_fetch_array($result))
  {
   $gender = $row['gender']; 
  }

  mysqli_close($con);

  if($gender == "Male"){
echo'
Gender&nbsp;<select name="gender"  id="gender"> 
<option value="Male" selected>Male</option> 
<option value="Female">Female</option> 
</select>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 
';
  } else {
 echo' Gender&nbsp;<select name="gender"  id="gender"> 
<option value="Male" >Male</option> 
<option value="Female" selected>Female</option> 
</select>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; ';
  }
于 2013-02-27T10:51:35.997 に答える