Сбор HTML-элементов в PHP с использованием итеративного процесса

#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 для сервера