Jak zapisać wiele danych z dynamicznie dodanych pól tekstowych (JavaScript) do bazy danych MySQL?
Próbowałem tego, ale bez powodzenia. Używam PHP, HTML, JavaScript i MySQL. Oto mój kod HTML:
<code><div id="Author"> <LI>Author</LI> <input type = "text" name="Author[]" value = "1. "/> <input type="button" value="+" id="Authorbutton" onclick="addAuthor()" /> </div> </code>
Jeśli klikniesz przycisk Dodaj, pojawi się kolejne pole tekstowe i użytkownik, a następnie umieścisz inną nazwę. Oto mój JavaScript:
<code>var counter3 = 0; function addAuthor() { // Get the main Div in which all the other divs will be added var mainContainer = document.getElementById('Author'); // Create a new div for holding text and button input elements var newDiv = document.createElement('div'); // Create a new text input var newText = document.createElement('input'); newText.type = "text"; //var i = 1; newText.name = "Author[]"; newText.value = counter3 + 2 + ". "; //Counter starts from 2 since we already have one item //newText.class = "input.text"; // Create a new button input var newDelButton = document.createElement('input'); newDelButton.type = "button"; newDelButton.value = "-"; // Append new text input to the newDiv newDiv.appendChild(newText); // Append new button input to the newDiv newDiv.appendChild(newDelButton); // Append newDiv input to the mainContainer div mainContainer.appendChild(newDiv); counter3++; //i++; // Add a handler to button for deleting the newDiv from the mainContainer newDelButton.onclick = function() { mainContainer.removeChild(newDiv); counter3--; } } </code>
Oto mój kod PHP:
<code>if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db($database, $con); $sql="INSERT INTO savetest (type, number) VALUES ('$_POST[type]','$_POST[Author]')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "1 record added"; mysql_close($con); echo "Thank you for submitting your details!"; </code>
Słyszałem, że wiele osób może sprawić, by działało to przy użyciu tablic, ale dane, które zapisałem w bazie danych, sąArray
. Nie ma znaczenia, ile pól tekstowych stworzyłem, tylkoArray
.
Czy korzystam z prawidłowego podejścia? Czy powinienem zapisać tę tablicę danych w jednym polu bazy danych?