このフォームに必要な部分のほとんどを見つけました(フィールドを動的にするなど)が、現在、このフォームの配列部分は正しく送信できないようです。
私が達成しようとしていること:動的に複製して、フォームの一部として独自のテーブルに送信できる選択フィールドを持つフォーム。したがって、1つのフォームに3人を追加して選択すると、フォームの対象となるイベントへの外部キーを使用して、独自の出席テーブルに送信されます。何人の人がこのイベントに参加するかわからないので、ダイナミックにする必要がありましたが、すべてを1つの形式で行う必要があります。そうだからといって。私の上司はそう言います。
これが、[別のフィールドを追加]ボタンのJavaScriptです。
$(document).ready(function() {
$('#btnAdd').click(function() {
var num = $('.clonedInput').length; // how many "duplicatable" input fields we currently have
var newNum = new Number(num + 1); // the numeric ID of the new input field being added
// create the new element via clone(), and manipulate it's ID using newNum value
var newElem = $('#input' + num).clone().attr('id', 'input' + newNum);
// manipulate the id value of the input inside the new element
newElem.children(':first').attr('id', 'attendee' + newNum).attr('name', 'attendee[' + newNum + ']');
// insert the new element after the last "duplicatable" input field
$('#input' + num).after(newElem);
// enable the "remove" button
$('#btnDel').attr('disabled','');
// business rule: you can only add 5 names
if (newNum == 6)
$('#btnAdd').attr('disabled','disabled');
});
次の形式でフィールドが開始されます。
<div id="input1" style="margin-bottom:4px;" class="clonedInput">
<select name="attendee[1]" id="attendee1" style='float:right;margin-right:4.5%;'>
<option value=''>Please choose one...</option>
<?php
while($row_attendees = mysql_fetch_assoc($res_attendees)){
$attendee_id = $row_attendees['attendee_id'];
$attendee_name = $row_attendees['name'];
echo "<option value='".$attendee_id."'>".$attendee_name." </option>";
}
?>
</select><label style='width:100px;display:inline-block;line-height:28px;' for="attendee">Attendee</label>
</div>
私はすべてのものを正しく変更しています。すべての選択入力は正しくIDおよび名前が付けられています。divも同じように更新されています。それはすべて正しく機能します。私が提出するときはそうではありません。これが私のphpです:
foreach($_POST['attendee'] as $attendee){
$sql_attendees = "INSERT into marketing_calendar.attending (event_title, attendee_id) VALUES ('".$_POST['title']."','".$attendee."')";
$res_attendees = mysql_query($sql_attendees) or die(mysql_error());
}
これをまとめるために使用したすべてのチュートリアルは、これが正しいことを示しています。ただし、機能しません。最初のドロップダウンが何であれ取得しているだけで、他には何も配列に入力されていません。フォームを実行するか、foreachステートメントで出席者変数をエコーする場合、少なくともそれが表示/送信するのはそれだけです。助けてください!:)
事前にトンに感謝します。
更新 $_POST['attendee']の配列を表示するために別のユーザーと話し合ったいくつかの方法を試しましたが、それでも配列に1つのIDが表示され、実際に追加したフィールドはそれほど多くありません。また、selectのname属性の配列から番号を削除してみました。したがって、name='attendee[1]'ではなくname='attendee[]'になります。これも役に立ちません。動的に追加されたフィールドが配列に追加されない理由を誰かに教えてもらえますか?