0

これは私がやろうとしていることです..私はデータベースでeprofileを取得しました。データベースは、個人データと国籍の2つのテーブルで構成されています。最初のユーザーは古い個人情報を表示できます。その後、更新/編集ページを作成します。ドロップダウンメニューに国籍があるため、国籍は別の表にあります。次に、ユーザーは自分の個人情報と情報を変更できます。新しい情報を挿入した後、送信ボタンをクリックして、データベースの更新プロセスが発生する process.php に移動します。私の問題は、更新クエリでpersonal_dataとnationalityである2つのテーブルを定義/接続する方法がわからないことです。

国籍コード

  <?php
            $query = "SELECT nationality_type FROM nationality";
            $result = mysql_query ($query); ?>
            <select name="personal_nationality" >
            <?php while($row = mysql_fetch_array($result)){ ?>
            <option value="<?php echo $row['nationality_type']?>"  <?php if ( $personal_nationality ==  $row['nationality_type']){ ?> selected <?php } ?>>
            <?php echo $row['nationality_type']?></option>
            <?php }?>
            </select>

process.php コード

    <?php

    $host="localhost"; // test local
    $username="lasadmin"; // Mysql username 
    $password="lasadmin"; // Mysql password 
    $db_name="eprofile"; // Database name 
    $db = mysql_connect($host, $username, $password); 
    $link = mysql_select_db($db_name,$db);


$personal_designation = $_POST['personal_designation'];
$personal_department = $_POST['personal_department'];
$personal_job_grade = $_POST['personal_job_grade'];
$personal_emp_group = $_POST['personal_emp_group'];
$personal_current_company = $_POST['personal_current_company'];
$personal_work_location = $_POST['personal_work_location'];


mysql_query("UPDATE personal_data SET personal_designation = '".mysql_real_escape_string($_POST["personal_designation"])."', personal_department = '".mysql_real_escape_string($_POST["personal_department"])."', personal_job_grade = '".mysql_real_escape_string($_POST["personal_job_grade"])."', personal_emp_group = '".mysql_real_escape_string($_POST["personal_emp_group"])."', personal_current_company = '".mysql_real_escape_string($_POST["personal_current_company"])."', personal_work_location = '".mysql_real_escape_string($_POST["personal_work_location"])."' WHERE LAS_login_id = '".mysql_real_escape_string($_POST["LAS_login_id"])."'");


$personal_full_name = $_POST['personal_full_name'];
$personal_title = $_POST['personal_title'];
$personal_date_birth = $_POST['personal_date_birth'];
$personal_marital_status = $_POST['personal_marital_status'];
$personal_nationality = $_POST['nationality_type'];


mysql_query("UPDATE personal_data SET personal_full_name = '".mysql_real_escape_string($_POST["personal_full_name"])."', personal_title = '".mysql_real_escape_string($_POST["personal_title"])."', personal_date_birth = '".mysql_real_escape_string($_POST["personal_date_birth"])."', personal_marital_status = '".mysql_real_escape_string($_POST["personal_marital_status"])."', nationality_type = '".mysql_real_escape_string($_POST["personal_nationality"])."' WHERE LAS_login_id = '".mysql_real_escape_string($_POST["LAS_login_id"])."'");


?>

情報(テスト)を変更しようとすると、このエラーが表示されます -Notice: Undefined index: nationality_type in C:\wamp\www\eprofile\process.php 行 26

これは26行目のコードです

$personal_nationality = $_POST['nationality_type'];

何が問題なのか、この問題の解決策は何か教えてもらえますか? 定義されたインデックスで何をすべきですか??

4

2 に答える 2

0

あなたには2つの問題があります...

最初のものはUPDATE sqlクエリにあります。

WHERE LAS_login_id= '$LAS_login_id'

$LAS_login_id はどこで見つかりましたか? あなたは私が見ることができるどこにもそれを定義していません...

2番目の問題は、上記のコードに含まれていないインデックスnationality_typeにあります...

お役に立てれば

于 2013-09-30T03:35:49.537 に答える
0

最初に、受け取ったコンテンツを $_POST 変数でエスケープすることをお勧めします。追加の変数にコピーする必要はありません。(別の用途に使わない限り)

2 番目の問題は、 $LAS_login_id が初期化されておらず、値がないため、UPDATE ステートメントが何も更新しないことです。

//simple update
mysql_query("UPDATE mytable SET 
myvalue = '".mysql_real_escape_string($_POST["my_value"])."' 
WHERE mycriteria = '".mysql_real_escape_string($_POST["my_criteria"])."'");

また、未定義のインデックスとして nationality_type を持つ配列が必要です。

于 2013-09-30T03:43:18.803 に答える