2017-01-13 14 views
0

フォームに追加のフィールドフォームを追加するフォームを用意しています。選択/オプションのデータベースからデータを選択します。フォームフィールドを追加/削除する

これはうまくいきますが、完全には正しくありません。誰かがコードを見て、もっときれいな方法で行えるかどうか気にしないかと思っています。

主な問題は、selectがアクションスクリプトに正しい値を送信していないことです。フォームの

HTML出力:

<?php $dashboardId = $_GET['dashboard_id']; ?> 

<form action="cm.php" method="POST"> 
    <input type="hidden" name="dashboardId" value="<?php echo $dashboardId; ?>"> 


    <div id="exercises"> 
     <div class="team"> 
      <select name="teamId[]"> 
      <?php 
      $sql = "SELECT * FROM teams WHERE dashboard_id = $dashboardId"; 
      $result = $conn->query($sql); 
       if($result->num_rows > 0){ 
        while($row = $result->fetch_assoc()){ 
         echo '<option value="' . $row["team_id"] . '">' . $row["team_name"] . '</option>'; 
        } 
       } 
      ?>     
      </select> 
      <button class="remove">x</button> 
     </div> 
    </div> 
    <button id="add_exercise">add more</button> 
    <br> 
    <input type="text" name="memberName"> 
    <br> 
    <input type="submit" name="submit" value="Create Member" /> 
</form> 

は、したがって、上記の私の簡単なフォームをレンダリングします。 2番目の部分は、追加の選択フィールドを追加するための機能を処理するJQueryです。

<script type="text/javascript"> 
$('#add_exercise').on('click', function() { 
    $('#exercises').append('<div class="team"><select name="teamName[]"><?php 
      $sql = "SELECT * FROM teams WHERE dashboard_id = $dashboardId"; 
      $result = $conn->query($sql); 
       if($result->num_rows > 0){ 
        while($row = $result->fetch_assoc()){ 
         echo '<option value="' . $row["team_id"] . '">' . $row["team_name"] . '</option>'; 
        } 
       } 
      ?> </select><button class="remove">x</button></div>'); 
    return false; //prevent form submission 
}); 

$('#exercises').on('click', '.remove', function() { 
    $(this).parent().remove(); 
    return false; //prevent form submission 
}); 
</script> 

今ではしかし、私はそれを分離する方法を他にわからないPHPでのjQueryを組み合わせたソリューションのneatestではありません見ることができるように?私は、生成の選択は、私はそれがSQLインジェクションに開いているが、今の私は、これは少し作るしようとしています完全に承知しています、それは["teamId"]=> array(1) { [0]=> string(3) "211"

を渡すべきである["teamName"]=> array(1) { [0]=> string(3) "211"を渡すことがわかりvar_dump($_POST)を行うときに何が起こっていることです一部の仕事。

アップデート - チームテーブルscehema

enter image description here

+0

「チーム」テーブルのスキーマを教えてください。 – x3ns

+0

1. button type = "button"を作ります。2.決して 'name =" submit "をフォームで呼んではいけません。それは、イベントハンドラを壊すでしょう3.エディタで '<>'ボタンをクリックして、レンダリングされたHTMLを[mcve]に投稿してください。 – mplungjan

+0

ボタンをクリックしてajaxを使用して、Ajaxを使用してドロップダウンデータと追加情報を取得してみてください....私はそれが作品だと思う –

答えて

1

Main.phpファイルは

<!DOCTYPE html> 
<html> 
    <head> 
<meta charset="utf-8"> 
<title></title> 
</head> 
<body> 
<div class="wrapper"> 
    <div> 
    <select class="options" name=""> 
    <option value="1">item_1</option> 
    <option value="1">item_2</option> 
    <option value="1">item_3</option> 
    </select> 
</div> 
</div> 
<button type="button" class="addme" name="button">Add More</button> 
</body> 
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"> </script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $('.addme').click(function(){ 
    $.ajax({ 
     url:'getData.php', 
     type:'GET', 
     success:function(result){ 
      console.log(result); 
      $('.wrapper').append(result); 
     } 
    }) 
    }); 
}); 

getData.phpファイル

<select> 
<option value='1'>Item1</option> 
<option value='2'>Item2</option> 
<option value='3'>Item3</option> 
</select><br> 

この例では、getDataファイルのデータは静的ですが、ドロップダウンリストデータを取得して成功応答を渡すための書き込みクエリがあります。

関連する問題