0

複数の値をjavascript関数「get2」に渡してから、「data2.php」ファイルを呼び出して、ドロップダウンリスト/テキストボックスから送信された値に従ってデータベースからデータを取得しようとしています。どちらも別々に機能しますが、一緒には機能しません。エラーは「未定義のインデックス」です。誰でも私を助けてもらえますか?

<script type="text/javascript">
    function get2() { 
        $.post('data2.php', { gender: form2.gender.value },
            function(output) {
                $('#gender').html(output).show();
            }
        );
        $.post('data2.php', { skills: form2.skills.value },
            function(output) {
                $('#skills').html(output).show();
        });
    }

</script>
...
...
<form name="form2">
        <Select name="gender">
            <OPTION>Male</OPTION>
            <OPTION>Female</OPTION></SELECT>

What is the patients relationship status?
(hold "Ctrl" key to select multiple options at one time):
<br/><br/>
        <BR>
        <BR>
        <select name="skills">
            <OPTION value="Single" selected="selected">Single</OPTION>
            <OPTION value="With partner">With partner</OPTION>
            <OPTION value="Separated from partner">Separated from partner</OPTION>
            <OPTION value="Partner died">Partner died</OPTION>
        <OPTION value="DK">DK</OPTION>
        </select>
        <BR>
        <BR>
        <INPUT TYPE="button" VALUE="search" onClick="get2();">
</form>
<div id="gender"></div>
<div id="skills"></div>

DATA2.PHP

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("grist");

$gender = $_POST['gender'];
$skills =  $_POST['skills'];

if (($gender==NULL) && ($skills==NULL)) {
    echo"please enter gender and skills!";
    }
else 
{
    $dob4 = mysql_query("SELECT * FROM patients WHERE gender='$gender' AND relationship_status='$skills'");
    //$dob_num_rows = mysql_num_rows($dob);
    while($row4 = mysql_fetch_array($dob4)){
    $a=$row4['patient_id'];
    $b=$row4['gender'];
    $c=$row4['dob'];
        echo "<b>Patient:</b> $a";
        echo "<b>Patient:</b> $b";
        echo "<b>Patient:</b> $c";
    }
}
?>
4

1 に答える 1

1

これは、POST リクエストを使用してページに 2 つの値を送信する方法です。

<script type="text/javascript">
    function get2() { 
        $.post('data2.php', { gender: form2.gender.value, 
                              skills: form2.skills.value },
            function(output) {
                $('#gender').html(output).show();
                $('#skills').html(output).show();
            }
        );
    }
</script>

これにより、性別とスキルの両方の要素が更新されることに注意してください。何をしたいのかわかりません。data2.php は、両方のパラメーターの使用を要求/許可します。

ユーザー入力もサニタイズする必要があります。現在、SQL インジェクション攻撃に対して脆弱です。PDO などのプリペアド ステートメントを使用できるデータベース クライアント ライブラリを使用することをお勧めします。使用している古い mysql ライブラリは非推奨であり、ある時点で PHP から削除されます。

于 2013-03-25T19:10:11.367 に答える