PHP - Как опубликовать отношения на основе динамического контента, созданного с помощью JavaScript - PullRequest
0 голосов
/ 22 ноября 2018

 /*On call - Add person fields dynamically*/
     var i=1;

    $("#add_row").click(function(){

        $('#addr').append("<tr class='row_"+i+"'><td>Person ID:"+i+"</td><td><input name='Person["+i+"][Name]' type='text' placeholder='Name' class='form-control input-md'  /> </td><td><input  name='Person["+i+"][Email]' type='text' placeholder='Email'  class='form-control input-md'></td><td><input  name='Person["+i+"][Mobile]' type='text' placeholder='Mobile' class='form-control input-md'></td><td><button type='button' id='"+i+"' onclick='add_vehicle(this.id);'>Add Vehicle</button></td></tr>");
        i++;
    });
 

    /*On call - Add hidden input value to section requesting to add vehicle license plate number and create plate field*/
    var vehicle = 0;
    function add_vehicle(id){

        $('<td><input type="hidden" name="Person['+id+'][hasVehicle]" value="1"></td>').appendTo('.row_'+id);

        var section = '<hr><div class"section_'+vehicle+'">Belongs To Person With ID: '+id+' <input type="text" name="Vehicle['+vehicle+'][PlateNumber]" placeholder="Plate Number" /></div><hr>';

        $(section).appendTo(".vehicle");

        vehicle++;
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form method="post" action="server.php">
    <table id="tab_logic">
        <tbody>
        <tr id='addr'></tr>
        </tbody>
    </table>
    <div class="vehicle"></div>
    <a id="add_row" class="btn btn-default pull-left">Add Person </a><hr>

    <input type="submit" value="submit">
</form>
<code><?php
     /* Posted array values*/
     $people = $_POST['Person'];
     $people_vehicle = $_POST['Vehicle'];

     //check for each person
     foreach ($people as $person) {

      //check if person has a vehicle
      if($person['hasVehicle'] == 1){

          //Owner Name:
          echo $person['Name'];

          //get all the vehicle plate numbers specified for current person
          foreach($people_vehicle as $person_vehicle) {

              //output plate numbers
              echo 
          '<pre>',print_r($person_vehicle['PlateNumber'],1),'
';}}}

Я создал этот код, который динамически позволяет «человеку» добавлять столько «номеров», сколько необходимо.В бэкэнде (с использованием PHP) я хотел бы зафиксировать эти отношения.Я написал некоторый код PHP, который на самом деле работает, когда добавляется ТОЛЬКО один человек и печатаются несколько номеров, как я хочу, однако, когда я добавил несколько человек и несколько номерных знаков, он выдает двойные значения, не зная почему.Если кто-то может помочь, я был бы признателен.

ОПЯТЬ: Цель состоит в том, чтобы -> A. Добавить столько людей, сколько необходимо, и таблички с номерами динамически, а затем вывести, какие таблички принадлежат кому.

Результаты: при добавлении нескольких человек и номеров.

Адам Джо E1 P1 P2 Доу Джон E1 P1 P2

Результаты: При добавлении одного человека и нескольких номеров. (Это то, что я хочудаже при создании нескольких людей).

Адам Джо P1 P2 P3

1 Ответ

0 голосов
/ 22 ноября 2018

, когда я добавил несколько человек и несколько номерных знаков, он выдает двойные значения, не зная почему.

Это потому, что вы печатаете все номера номеров для каждого человека в списке.(внутренний цикл не нужен)

Я предлагаю вам сделать это:

  1. изменить ваши js так, чтобы вы связывали номера с одним конкретным человеком (name = "Vehicle ['+ id +'][] ")

var section = '<hr><div class"section_'+vehicle+'">Belongs To Person With ID: '+id+' <input type="text" name="Vehicle['+id+'][]" placeholder="Plate Number" /></div><hr>';

при распечатке, используйте только один для цикла и используйте тот индекс id, который мы только что использовали

<code>for ($i = 1; $i <= count($people); $i++) {

  //check if person has a vehicle
  if ($people[$i]['hasVehicle'] == 1) {

    //Owner Name:
    echo $people[$i]['Name'];

    //output plate numbers
    echo
    '<pre>', print_r($people_vehicle[$i], 1), '
';}}

Итак, вы просматриваете всех людей, получаете человека с номером $ i и проверяете, есть ли у него автомобиль;если так, то распечатайте список автомобилей, которые также названы с номером $ i.

Результат должен быть таким:

A
Array
(
    [0] => A1
    [1] => A2
)
B
Array
(
    [0] => B1
    [1] => B2
)
C
Array
(
    [0] => C1
    [1] => C2
)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...