2016-04-27 24 views
0

このコードを使用して、フォームにさらにテキストボックスを追加します。基本的には、ユーザーが話す複数の言語を追加できるようにしています。送信ボタンをマルチプルテキストボックス入力を新しいレコードとしてSQLデータベースに追加

<script> 
jQuery(function($) { 
    var i = 0; 
    $('#theButton').click(addAnotherTextBox); 
    function addAnotherTextBox() { 
     $("#theForm").append("<br><label>Language <input type='text' name='language" + i + "' >"); 
    } 
}); 
</script> 


<div id='theForm'></div> 
<form id="form" name="form"> 
    <input id='theButton' type='button' value='Add Medical History'> 
    <input id="submit" onclick="myFunctionlanguage()" type="button" 
value="Update" class="btn btn-primary btn-block" > 
</form> 

機能基本的に投稿し、それは別のページへの直接またはそれを投稿するために更新する必要がないように、それは(AJAXを使用してPHPファイルに収集します。

データです私が現在持っているPHPコードは

$language = $_POST['language'];  
if (isset($_POST['language1'])) { 
    $sql_insert1 = "INSERT into `languages` (`language`,`cc`,`userid`) 
VALUES('$language','cc','$user->id')"; 
    mysql_query($sql_insert1) or die("Insertion Failed:" . mysql_error()); 
} 

これは私が新しいテキストボックスを追加したら、私が入力した各言語を追加していないようである。

任意のアイデア?

ありがとうございます。

編集: - 私は以下の例を試しましたが、それでも私のデータベースに追加されていないようです。

実際のクリック機能と関係がありますか?

<script> 
function myFunctionlanguage() { 
    var language = document.getElementById("location").value;  
    // Returns successful data submission message when the entered information is stored in database. 
    var dataString = '&language1=' + language; 
    if (location == '') { 
     alert("Please enter a language!"); 
    } else { 
     // AJAX code to submit form. 
     $.ajax({ 
      type: "POST", 
      url: "includes/updatelanguage.php?userid=<?echo $user->id;?>", 
      data: dataString, 
      cache: false, 
      success: function(html) { 
       alert(html); 
       document.getElementById('close').click() 
       window.location.reload(); 
      } 
    }); 
    } 
    return false; 
} 
</script> 
+0

の代わりに '言語+を使用して、あなたは[]'これは '$ _POST'で配列を作成します'言語を使用することができi'。これをデータベースの文字列として保存する場合は、格納する前に 'implode()'を使用する必要があります。各言語のエントリを追加する場合は、 'foreach()'を使う必要があります。 – RST

答えて

0

これを試してみてください。 私はあなたを得ているので、あなたにとって役に立つかもしれません。

<script> 
jQuery(function($) { 

$('#theButton').click(addAnotherTextBox); 
function addAnotherTextBox() { 
var i=parseInt($("#max").val()); 
i=i+1; 
$("#max").val(i); 
$("#form").prepend("<br><label>Language <input type='text' name='language" + i + "' >"); 
} 
}); 

</script> 

<form id="form" name="form"> 
<input type="hidden" name='max' id="max" value="0"/> 
<input id='theButton' type='button' value='Add Medical History'> 
<input id="submit" onclick="myFunctionlanguage()" type="button" 
value="Update" class="btn btn-primary btn-block" ></form> 



$max=$_POST['max']; 

for($i=1;$i<=$max;$i++){ 

$language = $_POST['language'.$i]; 


if (isset($_POST['language'.$i])) { 

$sql_insert1 = "INSERT into `languages` 
(`language`,`cc`,`userid`) 
VALUES('$language','cc','$user->id')"; 


mysql_query($sql_insert1) or die("Insertion Failed:" . mysql_error()); 
} 

} 
0

の代わりに、動的に各入力ボックスに名前を代入しようと、あなたはちょうどあなたが$POST配列の1つの変数として名languages[]で、すべての入力ボックスを投稿できるようになりますどのそれらすべてlanguages[]を、名前を付ける必要があります。

HTML:

<script> 
jQuery(function($) { 
    $('#theButton').click(addAnotherTextBox); 
    function addAnotherTextBox() { 
     $("#theForm").append("<br><label>Language <input type='text' name='languages[]' >"); 
    } 
}); 

</script> 

<div id='theForm'></div> 
<form id="form" name="form"> 
<input id='theButton' type='button' value='Add Medical History'> 
<input id="submit" onclick="myFunctionlanguage()" type="button" 
value="Update" class="btn btn-primary btn-block" ></form> 

はPHP:

if (isset($_POST['languages'])) { 
    foreach ($_POST['languages'] as $language) {} 
     $sql_insert1 = "INSERT into `languages` (`language`,`cc`,`userid`) VALUES ('$language','cc','$user->id')"; 

     mysql_query($sql_insert1) or die("Insertion Failed:" . mysql_error()); 
    } 
} 
関連する問題