#javascript #php #html #iteration
#javascript #php #HTML #итерация
Вопрос:
У меня есть набор входных элементов HTML, которые будут вызываться итеративно PHP-файлом, чтобы их значения можно было отправлять в базу данных. Во время разработки я в настоящее время не знаю, сколько версий элемента будет.
У меня есть форма HTML / JavaScript, где количество строк в таблице может быть изменено. При чтении таблицы я хочу прочитать все значения из элементов, хранящихся в одной из строк, и использовать их для создания SQL-запроса. Затем я бы повторил этот процесс, чтобы для каждой строки был запрос.
Все HTML-элементы помечены так, чтобы заканчиваться номером строки, который я бы использовал, чтобы указать процессу, какой элемент требуется. Проблема, которую я нахожу, заключается в том, что когда я пытаюсь это сделать, я получаю пустое значение.
Чтобы добавить некоторый контекст, вот мой код:
JavaScript (фрагмент из второй таблицы меньшего размера, следующий тому же процессу) Пример:
var indexAdd = 1;
function addRow(){
var table = document.getElementById("addExtDet");
var row2=table.insertRow(table.rows.length);
var cell7=row2.insertCell(0);
cell7.innerHTML = indexAdd;
var cell8=row2.insertCell(1);
var t8=document.createElement("input");
t8.id = "addGrpInfo:" indexAdd;
t8.className = "tablebox";
cell8.appendChild(t8);
var cell9=row2.insertCell(2);
var t9=document.createElement("input");
t9.id = "addGrpBus:" indexAdd;
t9.className = "tablebox";
cell9.appendChild(t9);
indexAdd ;
}
PHP:
//Add the groups specified by the user. This while loop iterates for each group added.
$query = "";
$grpCount = $_POST['numGrps']; //This is a hidden value in the HTML code which gives the number of rows.
for($i=1; i<=$grpCount; $i ) {
$grpNum = $_POST['addGrpNum:'.$i];
$grpTime = $_POST['addGrpTime:'.$i];
$grpLoc = $_POST['addGrpLoc:'.$i];
$grpLead1 = $_POST['addGrpLead1:'.$i];
$grpLead2 = $_POST['addGrpLead2:'.$i];
$grpSpace = $_POST['addGrpSpc:'.$i];
$grpInfo = $_POST['addGrpInfo:'.$i];
$grpBus = $_POST['addGrpBus:'.$i];
//Example, the variable '$grpTime' appears to be empty/blank.
echo $grpTime;
$query = //Where each 'Insert Into Table' query will be added.
}
Комментарии:
1. Я думаю, что у вас неверная базовая концепция о том, что такое PHP или HTML. HTML не является языком программирования в том смысле, что он не допускает: ввод, обработку, вывод. HTML не может быть «вызван». PHP, с другой стороны, не заботится о том, что вы сделали с HTML или JavaScript (не путать с Java). PHP не может вызывать HTML или JavaScript. Единственный способ взаимодействия с PHP — это запросы AJAX / HTTP, которые не включают HTML.
2. Я сразу вижу вопиющую проблему, и вы тоже должны увидеть ее с изменениями цвета в вашем коде, опубликованными выше. В строке, в которой вы устанавливаете, отсутствует одинарная кавычка
$grpTime
.3. @dmikester1 Вы абсолютно правы. Исправил это, и это сэкономит мне много времени в будущем. Спасибо! Хотя это не влияет на проблему: (
4. JavaScript — это совсем не то же самое, что Java
5. Если вы назовете свои повторяющиеся элементы
name="someName[]"
, то someName будет массивом в PHP при ОТПРАВКЕ входных данных с помощью формы. В качестве альтернативы используйте form.serialize и ajax для сервера