Php循环由元素内部启动和停止

时间:2016-09-05 10:06:48

标签: php loops

我尝试使用一些元素运行循环,例如post form,这个想法是在第一个帖子发送时,发送第二个和第三个等等

<?php
$list="1,2,3";

$exp=explode(",",$list);

$b=0;
foreach($exp as $ids)
{ ?>
    <form action="" method="post" id="form_2">
    <input type="hidden" name="send_end" value="ok" />
    </form>
    <script>
    document.getElementById('form_2').submit();
    </script>
    <?php
    sleep (5);

    if ($b=="2")
    {
        exit("All Send");
    }
    $b++;
}

问题是它同时发送并且不起作用,它的想法是先发送1,等待,发送2等,我使用睡眠但它是相同的,所有时间工作发送所有一次性

问题是我如何循环发送,但顺序

关心并感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您的要求可以使用javascript实现。请查看以下代码段以获得更多理解。

// Add the X Axis
svg.append("g")
  .style("font", "14px open-sans")
  .attr("transform", "translate(0," + height + ")")
  .call(d3.axisBottom(x).ticks(d3.timeDay.every(1)).tickFormat(d3.timeFormat("%d/%m")));


// Add the Y Axis
svg.append("g")
  .style("font", "14px open-sans")
  //.tickSize(-height)
  .call(d3.axisLeft(y).ticks(5));
var $list="1,2,3";

var $exp= $list.split(',');
var $b=0;

function createFromAndSubmit($exp,$b){
  alert("Form Create & submit - "+($b+1));
  var newForm = '<form action="" method="post" id="form_2"><input type="hidden" name="send_end" value="ok" /></form>';
  $("#newFrom").html(newForm);
  $('#form_2').submit();
  
  $b = $b+1;
  
  if($exp.length == $b){
    alert("finished");
  }else{    
    setTimeout(function() {      
      createFromAndSubmit($exp,$b);
    }, 5000);
  }
}

createFromAndSubmit($exp,$b);

答案 1 :(得分:0)

您的逻辑错误:您使用javascript提交表单,但是您正在设置PHP的超时。

所以你唯一要做的就是延迟你的html / javascript的生成;它将在15秒后到达浏览器,然后所有表单提交将同时触发。

如果您想使用javascript提交表单,您还应该使用javascript timeout来处理它们之间的延迟。

您应该使用ajax表单提交,因为您不希望每次提交任何表单时都重新加载页面...

php中的替代方法是使用cURL来发出POST请求。那么你就不需要javascript了,你可以像现在一样处理php中的延迟。

修改:另请注意,您的所有表单都具有相同的ID,并且ID必须是唯一的。现在只有第一个(可能......)表格会被提交3次。