2

ボードとGoogleでこのコードを確認しましたが、何も見つかりませんでした。どんな助けでも大歓迎です。

私は、車のメーカーに基づいて車のモデルをデータベースに照会するチュートリアルを実行しました。コードでは、車のモデルが動的である間、車のメーカーは選択にハードコードされています。コードの最初の部分は次のとおりです。

    <?php 
    require_once("Connections/xxx.php"); // database connection

    $make = $_POST['make'];


    if ($make){
    $query= sprintf("SELECT * FROM car_model where car_model_id='$make'");
    $result = @mysql_query($query); 
    $rowModel = mysql_fetch_array($result);
    }
    ?>

選択したハードコードは次のとおりです。

<select name="make" onChange="document.forms[0].submit()">
<option value="">Select Make</option>
<option value="1" <?php if(!(strcmp(1, $make))){echo "selected";}?>>Alfa Romeo</option>
<option value="2" <?php if(!(strcmp(2, $make))){echo "selected";}?>>Audi</option>
<option value="3" <?php if(!(strcmp(3, $make))){echo "selected";}?>>BMW</option>
<option value="4" <?php if(!(strcmp(4, $make))){echo "selected";}?>>Citroen</option>

そして、これは動的に入力される選択です:

 <select name="model">
<option value="">Select Model</option>
<?php do {  ?>
<option value="<?php echo $rowModel['car_model_id']; ?>"><?php echo $rowModel['car_model']; ?></option>
<?php  }while ($rowModel = mysql_fetch_array($result));  ?>

この動的に入力された選択フィールドにonChange関数を追加して、結果をテキストフィールドにエコーしたいと思います。多くの組み合わせを試しましたが、これを理解できませんでした。ありがとうございました

4

3 に答える 3

0

javascriptをインラインにする代わりにjqueryを使用することをお勧めします。そうすれば、コードを再利用できます。

<select name="model">
    <option value="">Select Model</option>
    <?php while ($rowModel = mysql_fetch_assoc($result)){  ?>
      <option value="<?php echo $rowModel['car_model_id']; ?>">
       <?php echo $rowModel['car_model']; ?>
      </option>
    <?php  } ?>
</select>
<input type="text" id="model_text">

これは、一般的なjsファイルに入れる必要のあるjavascriptです。

<script>
  $(document).ready(function(){
     $('select[name="model"]').change(function(){
       $('#model_text').val($(this).text());
     });
  });
</script>

また、ArunKilluがSQLインジェクションを行わないために何かをするように言ったように勧めます。最初に変数をクリーンアップせずにSQLに変数を配置することは、決して良い考えではありません。現在、ユーザーが変更するためのアクセス権を持っていない場合でも。

于 2012-10-29T13:35:41.100 に答える
0

クエリはSQLインジェクションにさらされ、クエリを作成する前に入力をエスケープするか、準備されたクエリを使用します(php pdoの使用をお勧めします)

<select name="model">
    <option value="">Select Model</option>
    <?php while ($rowModel = mysql_fetch_assoc($result)){  ?>
    <option value="<?php echo $rowModel['car_model_id']; ?>" onChange="textfield(this.value)" ><?php echo $rowModel['car_model']; ?></option>
    <?php  } ?>
<script>
function textfield(val)
{
  document.getElementById('your_text_filed_id').value=val;
}

<script>
于 2012-10-29T12:20:09.737 に答える
0

あなたは私のjqueryバージョンが気に入らなかったので、私はまだここでより良い答えだと感じています。これは、すべてのブラウザでサポートされるわけではなく、非常にバグがあると確信しています(したがって、ほとんどの人がjqueryを使用する理由)

<select name="model" onchange="update_textbox()" id="model">
    <option value="">Select Model</option>
    <?php while ($rowModel = mysql_fetch_assoc($result)){  ?>
      <option value="<?php echo $rowModel['car_model_id']; ?>">
       <?php echo $rowModel['car_model']; ?>
      </option>
    <?php  } ?>
</select>
<input type="text" id="model_text">
<script>
 function update_textbox(){
  var selectbox = document.getElementById('model');
  var model = selectbox[selectbox.selectedIndex].text;
  document.getElementById('model_text').value=model ;
 }
</script>
于 2012-10-31T13:35:54.593 に答える