首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP -如何根据使用javascript生成的动态内容发布关系

PHP -如何根据使用javascript生成的动态内容发布关系
EN

Stack Overflow用户
提问于 2018-11-22 00:56:40
回答 1查看 58关注 0票数 2

代码语言:javascript
运行
复制
 /*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++;
    }
代码语言:javascript
运行
复制
<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>

代码语言:javascript
运行
复制
<?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>';

          }
      }
     }

我已经创建了这段代码,动态地允许"person“根据需要添加多少”车牌号码“。在后端(使用PHP),我想捕捉这种关系。我编写了一些PHP代码,当只添加一个人并且按我想要的方式打印多个车牌号码时,实际上是有效的。但是,当我添加多个人和多个车牌时,它的输出值会增加一倍,但不确定为什么。如果有人能帮忙的话,我将不胜感激。

同样:我们的目标是-> A.动态添加尽可能多的人和车牌号码,然后输出车牌号码属于谁。

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

亚当·乔·E1 P1 P2 Doe John E1 P1 P2

结果:当添加一个人和多个车牌号码时(这就是我想要的,即使在生成多个人时也是如此)。

亚当·乔·P1 P2 P3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-22 12:07:52

当我添加多个人和多个车牌时,它的输出值会增加一倍,不确定原因。

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

我建议你这样做:

  1. 更改js,以便将车牌与一个特定的人联系起来(name="Vehicle'+id+'")

代码语言:javascript
运行
复制
var section = '<hr><div class"section_'+vehicle+'">Belongs To Person With ID: '+id+' <input type="text" name="Vehicle['+id+'][]" placeholder="Plate Number" /></div><hr>';

  1. 打印出时,只使用一个for循环,并使用我们刚才使用的id索引。 对于($i = 1;$i <= count($people);$i++) {//检查人是否有车辆if ($people$i == 1) {//所有者名称: echo $people$i;//输出车牌号码回波‘,print_r($people_vehicle$i,1),’;}}

所以,循环遍历所有的人,得到数字$i的人,并检查它是否有车辆;如果有,那么打印出车辆列表,这些车辆也是用$i号命名的。

结果应该是这样:

代码语言:javascript
运行
复制
A
Array
(
    [0] => A1
    [1] => A2
)
B
Array
(
    [0] => B1
    [1] => B2
)
C
Array
(
    [0] => C1
    [1] => C2
)

我希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53422496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档