$.ajax - foreach schleife läuft nur einmal durch

grillfleisch

Erfahrenes Mitglied
Hallo,

Ich habe mir für ein BG ein Laufzeitscript geschrieben nun wollte ich es dynamisch per $.ajax laden lassen. Leider läuft er die foreach-Schleife im ajax-request nur einmal durch, ich find den fehler nicht so recht. Denn die erst Version funktioniert ja.

Es kann getestet werden wer interesse hat. links stehen unten und die schleifen auch.


Testseite ajax

Das Ajax tut stammt von www.php4every1.com/tutorials/jquery-ajax-tutorial/

HTML:
<?php
error_reporting(E_ALL);
?>
<!doctype html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <link rel="stylesheet" href="layout.css" type="text/css" media="screen" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
    	$('#submit').click(function() {
    
    		$('#waiting').show(500);
    		//$('#data').hide(0);
    		$('#message').hide(0);
   
    		$.ajax({
    			type : 'POST',
    			url : 'data.php',
                        dataType : 'dataString',          
    			data: {
    				a : $('#a').val(),
                                b : $('#b').val(),
                                h : $('#h').val(),
                                m : $('#m').val(),
                                s : $('#s').val()
    			},
    			success : function(data){
    				$('#waiting').hide(500);
                                $("#data").html(data);
    	
    			},
    			error : function(XMLHttpRequest, textStatus, errorThrown) {
    				$('#waiting').hide(500);
    				$('#message').removeClass().addClass('error')
    					.text('There was an error.').show(500);
    			}
    		});
    
    		return false;
    	});
    });
    </script>
  </head>
  <body>
      <div id="message" style="display: none;"></div>
      <div id="waiting" style="display: none;">
          Please wait<br />
          <img src="img/loader.gif" title="Loader" alt="Loader" />
      </div>
      <div id="lzr_form">
          <form action="" method="POST" id="lzr">
              <div id="textarea_start" class="floatleft">
                  <label>StartKoordinaten:</label>
                  <textarea name="a" rows="8" id="a"></textarea>
              </div>
              <div id="textarea_ziel" class="floatleft">
                  <label>Zielkoordinaten:</label>
                  <textarea name="b" rows="8" id="b"></textarea>
              </div>
              <div id="input_laufzeit" class="clear">
                  <label>Laufzeit(h:m:s):</label>
                  <input class="zeit" type="text" name="h" id="h" value="0" />:
                  <input class="zeit" type="text" name="m" id="m" value="0"/>:
                  <input class="zeit" type="text" name="s" id="s" value="0"/>
              </div>
              <p class="startinput"><input type="submit" id="submit"/></p><br><br>
          </form>
      </div>
    
    
<br>Beispiel Koordinaten<br><br><br>     
675|611<br>
674|612<br>
676|620<br>
668|606<br>
670|612<br>
672|607<br>
...<br>      
671|604<br>
675|610<br>
677|619<br>
677|622<br>
676|622<br>
675|609<br>
672|614<br>
  <div id="data">
  </div>

  </body>
</html>

data.php
PHP:
<?php

#sleep(3);
$troops = array('0' => 18, 
                    '1' => 22, 
                    '2' => 18,
                    '3' => 9,
                    '4' => 10, 
                    '5' => 11, 
                    '6' => 30,
                    '7' => 30, 
                    '8' => 35);
include_once('berechnung.function.php');

   #var_dump($_POST);
                    
   if(isset($_POST['a'])) {
    
        $a_POST = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['a']);
        $b_POST = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['b']);
        $h = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['h']);
        $m = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['m']);
        $s = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['s']);
        
        $time = "{$h}:{$m}:{$s}";
        $fenster = 1800; 
        $t_fenster_up = $s+($m+($h*60)*60)+$fenster;
        $t_fenster_down = $s+($m+($h*60)*60)-$fenster;
        
        #echo "<br>Zeitpunkt: {$time}<br>"; #({$t_fenster_down}|{$t_fenster_up})
        $a_village_lines = preg_split("/\r\n/", $a_POST);
        $b_village_lines = preg_split("/\r\n/", $b_POST);
        
        #echo "a_village_lines";
       #echo "<pre>";
        #var_dump($a_village_lines);
        #echo "</pre>";
        
        $i=0;
        $j=0;
        foreach($a_village_lines as $key => $value) {
            #var_dump($value);
            $DATA[] = explode("|",$value);
            $a_data[$i][] = $DATA[$i][0];
            $a_data[$i][] = $DATA[$i][1];
            $a_data[$i][] = $value;
            echo "<table>";
            echo "<tr><th colspan=\"10\">{$value}</th></tr>";
            echo "<tr>";
            
            
            foreach($b_village_lines as $key => $value2){
                
                $DATA2[] = explode("|",$value2);
                #$a_data[$i][] = $DATA2[$j][0];
                #$a_data[$i][] = $DATA2[$j][1];
                $a_data[$i][] = array($DATA2[$j][0],$DATA2[$j][1],$value2);
                echo "<td><b>{$value2}<b/></td>";

                $u=0;
                foreach($troops as $unit){
                    $erg = entfernung($DATA[$i][0],$DATA2[$j][0],$DATA[$i][1],$DATA2[$j][1],$troops[$u]);
                    $t_roh[] = explode(":",$erg);
                    #echo "<pre>";
                    #var_dump($t_roh);
                    #echo "</pre>";
                    $t_fein = $t_roh[0][2]+($t_roh[0][1]+($t_roh[0][0]*60)*60);
                    if($t_fein <= $t_fenster_up && $t_fein >= $t_fenster_down){
                        $style = 'class="green"';
                    }
                    else {
                        $style = 'class=""';
                    }
                    $a_data[$i][] = array($u=>$erg);
                    echo "<td {$style}><img src=\"/ds/unit_$u.png\">{$erg}</td>";  # - ({$t_fein})
                    unset($t_roh);
                    $u++;
                }
                $j++;
                echo "</tr>";
                
            }
            #echo "</tr>";
            echo "</table>";
            $i++;
            echo $i;
        } 
        #echo "<br />a_data";
        #echo "<pre>";
        #var_dump($a_data);
        #echo "</pre>";      
        
    }
?>

In der normalen Version als ich alles in eine Datei geschrieben habe, macht es das was es soll.

Test mich bitte

PHP:
...
if(isset($_POST['a'])) {
    
        $a_POST = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['a']);
        $b_POST = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['b']);
        $h = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['h']);
        $m = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['m']);
        $s = preg_replace('/[^0-9|\r\n]/isU', '', $_POST['s']);
        
        $time = "{$h}:{$m}:{$s}";
        $fenster = 1800; 
        $t_fenster_up = $s+($m+($h*60)*60)+$fenster;
        $t_fenster_down = $s+($m+($h*60)*60)-$fenster;
        
        echo "<br>Zeitpunkt: {$time}<br>"; #({$t_fenster_down}|{$t_fenster_up})
        $a_village_lines = preg_split("/\r\n/", $a_POST);
        $b_village_lines = preg_split("/\r\n/", $b_POST);
        
        $i=0;
        $j=0;
        foreach($a_village_lines as $key => $value) {

            $DATA[] = explode("|",$value);
            $a_data[$i][] = $DATA[$i][0];
            $a_data[$i][] = $DATA[$i][1];
            $a_data[$i][] = $value;
            echo "<table>";
            echo "<tr><th colspan=\"10\">{$value}</th></tr>";
            echo "<tr>";
            
            
            foreach($b_village_lines as $key => $value2){
                
                $DATA2[] = explode("|",$value2);

                $a_data[$i][] = array($DATA2[$j][0],$DATA2[$j][1],$value2);
                echo "<td><b>{$value2}<b/></td>";

                $u=0;
                foreach($troops as $unit){
                    $erg = entfernung($DATA[$i][0],$DATA2[$j][0],$DATA[$i][1],$DATA2[$j][1],$troops[$u]);
                    $t_roh[] = explode(":",$erg);

                    $t_fein = $t_roh[0][2]+($t_roh[0][1]+($t_roh[0][0]*60)*60);
                    if($t_fein <= $t_fenster_up && $t_fein >= $t_fenster_down){
                        $style = 'class="green"';
                    }
                    else {
                        $style = 'class=""';
                    }
                    $a_data[$i][] = array($u=>$erg);
                    echo "<td {$style}><img src=\"/ds/unit_$u.png\">{$erg}</td>";  # - ({$t_fein})
                    unset($t_roh);
                    $u++;
                }
                $j++;
                echo "</tr>";
                
            }

            echo "</table>";
            $i++;
        }

    }
...
 

Neue Beiträge

Zurück