2016-09-05 2 views
2

I Schleife Innenseite mit einigen Elementen, wie beispielsweise Post Form laufen versuchen, ist die Idee Es ist, wenn die erste Post senden, senden, um die zweite und dritte, usw.Php Loop-Start und Stopp durch das Element im Inneren

<?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++; 
} 

Das Problem, das es ist, sendet es alle gleichzeitig und funktioniert nicht, die Idee, die es zuerst sendet 1, warten, senden 2, usw., ich benutze Schlaf, aber es ist das gleiche, alle Zeitarbeit, die alle auf einmal sendet

die Frage es ist, wie ich in Schleife senden kann, aber der Reihe nach

Grüße und thank's für die Hilfe

+0

Haben Sie Formular erstellen möchten und senden Form nach jeweils 5 Sekunden? –

+0

Sie können POST von PHP-Seite mit diesem Ansatz Preform: http://StackOverflow.com/Questions/5647461/How-Do-i-Send-a-Post-Request-With-PHP –

Antwort

0

Ihre Logik ist falsch: Sie reichen Ihre Formulare mit Javascript ein, aber Sie setzen Ihre Auszeit in PHP.

Das einzige, was Sie tun, ist die Verzögerung der Generierung Ihres HTML/Javascript; es wird 15 Sekunden später im Browser ankommen und dann werden alle Formulareinreichungen gleichzeitig ausgelöst.

Wenn Sie Javascript verwenden möchten, um die Formulare zu senden, sollten Sie auch JavaScript-Timeouts verwenden, um die Verzögerung zwischen ihnen zu behandeln.

Und Sie sollten wahrscheinlich Ajax für das Formular verwenden, macht geltend, weil Sie wollen Ihre Seite nicht jedes Mal neu geladen, wenn eine der Formen eingereicht ...

Die Alternative in PHP zum Beispiel ist cURL zu Machen Sie POST-Anfragen. Dann brauchen Sie kein Javascript und Sie können mit der Verzögerung in PHP umgehen, so wie Sie es jetzt tun.

Bearbeiten: Beachten Sie auch, dass alle Ihre Formulare die gleiche ID haben und IDs müssen eindeutig sein. Jetzt wird nur das erste (wahrscheinlich ...) Formular dreimal eingereicht.

+0

Ich möchte Javascript nicht verwenden Für nichts, ich sende oder zeige nur Elemente innerhalb, wenn Start 1 und Ende zeigen die zweite, etc, vergessen Sie das Formular senden, ist es möglich, Elemente nacheinander oder Nein, meine Idee es ist in der Schleife zeigt jedes Mal ein Element bis zum Ende der Schleife –

1

Ihre Anforderung kann mit Javascript erreicht werden. Bitte überprüfen Sie das folgende Snippet für mehr Verständnis.

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);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="newFrom"></div>

Verwandte Themen