【问题标题】:PHP - How to post relationships based on dynamic content generated with javascriptPHP - 如何根据使用 javascript 生成的动态内容发布关系
【发布时间】:2018-11-22 00:56:40
【问题描述】:

 /*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>
<?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),'</pre>';

          }
      }
     }

我创建了这段代码,它允许“人”根据需要动态添加任意数量的“车牌号”。在后端(使用 PHP)我想捕捉这种关系。我编写了一些 PHP 代码,当只添加一个人并且以我想要完成的方式打印多个车牌号时,它实际上可以工作,但是当我添加多个人和多个车牌时,它输出的值加倍,不知道为什么。如果有人可以请帮助我将不胜感激。

再次:目标是 -> A. 动态添加多少人,车牌号,然后输出哪些车牌号属于谁。

结果:当添加多个人和车牌号码时。

亚当·乔 E1 P1 P2 美国能源部约翰 E1 P1 P2

结果:添加一个人和多个车牌号时。(即使生成多个人也是我想要的)。

亚当·乔 P1 P2 P3

【问题讨论】:

    标签: javascript php jquery loops


    【解决方案1】:

    当我添加多个人和多个车牌时,它输出的值加倍,不知道为什么。

    这是因为您打印了列表中每个人的所有车牌号。 (不需要内循环)

    我建议你这样做:

    1. 更改您的 js,以便您将车牌与一个特定的人相关联 (name="Vehicle['+id+'][]")

    var section = '&lt;hr&gt;&lt;div class"section_'+vehicle+'"&gt;Belongs To Person With ID: '+id+' &lt;input type="text" name="Vehicle['+id+'][]" placeholder="Plate Number" /&gt;&lt;/div&gt;&lt;hr&gt;';
    1. 打印出来时,只使用一个for循环并利用我们刚刚使用的那个id索引

      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), '</pre>';
        }
      }
      

    所以,你遍历所有人,找到编号为 $i 的人并检查他是否有车辆;如果是,则打印出同样以 $i 命名的车辆列表。

    结果应该是这样的:

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

    我希望这会有所帮助。

    【讨论】:

    • 它不起作用。我尝试添加 2 个人,其中第 1 个人有 2 个车牌号,而第二个人号只有一个车牌号。我得到以下信息:Mike Array ( [0] => Vehicle 2 ) Ana Array ( [0] => Vehicle 1 )
    • 我试过这个。您一定遗漏了一些东西,请检查,它可以工作并给出以下结果: Mike Array ( [0] => Vehicle 1 [1] => Vehicle 2 ) Ana Array ( [0] => Vehicle 3 )
    猜你喜欢
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2020-06-01
    • 2020-01-30
    • 2017-03-14
    • 2011-04-21
    相关资源
    最近更新 更多