0

名前の異なる 2 つのドロップダウン リストがあり、1 つのフィールドだけでクエリを実行しようとしています。

item 1が選択されている場合はドロップダウンリスト1が表示され、が選択されている場合はドロップダウンリスト2が表示されるjQuery関数を使用していitem 2ます。

これは、mysql データベースとテーブルからドロップダウン リストを作成する方法です。

     <div id="minquep">
       <label>Branch</label>
          <SELECT name="user_min"> 
              <OPTION VALUE="0">Choose a branch
              <?=$minq_options?> 
          </SELECT> 
     </div>
    <div id="albury">
        <label>Branch</label>
          <SELECT name="user_branch"> 
              <OPTION VALUE="0">Choose a branch
              <?=$al_options?> 
          </SELECT> 

これは、フォームにドロップダウン リストを入力して、クエリを mysql に挿入する方法です。

if (isset($_REQUEST['Submit'])) { 
$sql = "INSERT INTO $db_table(branch) values ('".mysql_real_escape_string(stripslashes($_REQUEST['user_branch'])).",".mysql_real_escape_string(stripslashes($_REQUEST['user_min']))."')";


if($_REQUEST['user_branch']= ""){

    ($_REQUEST['user_branch']) = NULL;
}


if($result = mysql_query($sql ,$db)) { 
echo '<script type="text/javascript">alert("The user has been added successfully!\n");return true;</script>';
echo "<meta http-equiv=\"refresh\" content=\"0;URL=add_user.php\">";
}

else { 
echo "ERROR: ".mysql_error(); 
} 
}

テスト シナリオは、以下の値を選択することです<select name="user_min">。したがって、SQLuser_branchはnullであるため、結果をバイパスするだけだと思います。ただし、挿入クエリの後に、代わりに「0」を出力します。たとえば、挿入された($_REQUEST['user_min'])値が「ブリスベン」で、($_REQUEST['user_branch']) の値がnull(ドロップダウン リストで値を選択しなかったためuser_branch) の場合、ブランチ フィールドは「ブリスベン」になります。 、それを知ってuser_branchいるNULL。しかし、それは 0 で "BRISBANE" を出力します 0のように、私の mysql テーブルに Brisbaneがあります。

どうすればこれを修正できますか?

すでに条件を入れようとしifましたが、うまくいきませんでした。

if($_REQUEST['user_branch']= ""){

        ($_REQUEST['user_branch']) = NULL;
    }

また、 user_minを同じ名前に変更しようとしましたが、ブリスベンの代わりに「0」を出力するだけuser_branchで、選択した値を取得できません。

4

3 に答える 3

5

いくつかのこと -

  1. $sql の後に user_branch = NULL を設定しています。

  2. 値を引用符で囲んでいます。Null 以外の値で問題ありません。NULL 値があるかどうかを確認してから、$sql で引用符を使用しないでください。

  3. IF ステートメントで単一の「=」を使用しています。これは If ステートメントに失敗しています。に変更しますif($var == '')

アップデート

既存のコードに基づくいくつかの提案 - ただし、達成しようとしているものを達成するための他のベストプラクティスがあります....

$user_branch =  $_REQUEST['user_branch'];
$user_min =  $_REQUEST['user_min']; 
//you should validate above values first 

if$user_branch == "" || $user_min == "") {
    $db_value = "NULL"; 
} else 
{
$db_value = "'".mysql_real_escape_string(stripslashes($user_branch.','.$user_min))."'";
}


$sql = "INSERT INTO $db_table(branch) values (".$db_value.")";
于 2012-08-07T14:35:01.627 に答える
0

0 が必要ない場合は、次のように変更します。

<option value="0">Chose a Branch</option>

に:

<option value="">Chose a Branch</option>

それ以外の場合は、フォームを次のように通過します。0

また、PHP コードが思いどおりに動作しません。

if (isset($_REQUEST['Submit'])) { 
  // do this before the query
  if($_REQUEST['user_branch']== ""){ // note the extra = in there, so you aren't assigning the variable, you are compairing
    $_REQUEST['user_branch'] = NULL; // no need for brackets round the variable
  }
  $sql = "INSERT INTO $db_table(branch) values (".mysql_real_escape_string(stripslashes($_REQUEST['user_branch'])).",".mysql_real_escape_string(stripslashes($_REQUEST['user_min'])).")"; // you had single quotes around everything inside the VALUES() function

  if($result = mysql_query($sql ,$db)) { 
    echo '<script type="text/javascript">alert("The user has been added successfully!\n");return true;</script>';
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=add_user.php\">";
  }
  else { 
    echo "ERROR: ".mysql_error(); 
  } 
}
于 2012-08-07T14:36:55.653 に答える
-1
$sql = "INSERT INTO reg(Name ,Email) values ('".mysql_real_escape_string(stripslashes($_REQUEST['Name']))."','".mysql_real_escape_string(stripslashes($_REQUEST['Email']))."')";

これは私のコードです。ここで、未定義のインデックスのエラーが見つかりました。

于 2012-12-23T12:50:11.420 に答える