2016-06-04 10 views
0

Ich versuche, Array-Daten zu einem anderen PHP-Post, aber es funktioniert nicht ..POST-Array-Daten in PHP

Hier ist mein Code unten.

in func.php

function search($x, $y) 
{ 

    ... 

    $martx = array(); 
    $marty = array(); 


    foreach($load_string->channel as $channel) { 
    foreach($channel->item as $item) { 
     array_push($martx, $item->mapx); 
     array_push($marty, $item->mapy); 

    } 
    } 

    echo"<form method=post action='map.php'>"; 
    for($i = 0; $i < 8; $i++) 
    { 
     //echo $martx[$i]."<br/>"; 
     //echo $marty[$i]."<br/>"; 
     echo "<input type='hidden' name='martx[]' value='".$martx[$i]."'>"; 
     echo "<input type='hidden' name='marty[]' value='".$marty[$i]."'>"; 
    } 
    echo "</form>"; 

    header("location: map.php?x=$x&y=$y"); 
} 

martx und marty haben Daten aus geparsten xml $load_string

Und ich möchte diese Daten veröffentlichen, indem Form mit POST map.php. So erwarte ich, dass ich martx und marty in map.php wie $_POST[martx][0] zwei Arrays verwenden können ..

Aber wenn ich diesen Code ausführen, Seite bleibt in func.php, statt Umleitung

Bin ich map.php einen Fehler machen?

Vielen Dank im Voraus.

============================================== ========================

Vielen Dank für Ihre freundliche und hilfreiche Beratung!

ich meinen Code mit Ihrem Rat bearbeiten,

  1. ich alle lösche echo mit javascript

  2. Und ich einreichen Code hinzufügen

hier ist mein Code unten

.... 

$martx = array(); 
$marty = array(); 

foreach($load_string->channel as $channel) { 
foreach($channel->item as $item) { 
    array_push($martx, $item->mapx); 
    array_push($marty, $item->mapy); 

    } 
} 

?> 
<form method='post' action='map.php?x=<?=$x?>&y=<?=$y?>' id='market'> 
    <script language="javascript"> 
    for(i = 0; i < 8; i++) 
    { 
     document.write('<input type="hidden" name="martx[]" value="<?=$martx[i]?>">'); 
     document.write('<input type="hidden" name="marty[]" value="<?=$marty[i]?>">'); 
    } 
    document.getElementById('market').submit(); 
    </script> 
</form> 
<?php 
//header("location: map.php?x=$x&y=$y"); 

}

Mit diesem Code wird die Seite erfolgreich an map.php weitergeleitet.

Aber ich kann nicht Daten wie $_POST['martx'][i] erhalten in map.php

denke ich document.write Linie Ursache Problem

wenn ich schreibe Code wie

document.write('<input type="hidden" name="martx[]" value="$martx[i]">'); 

Ergebnis $_POST['martx'][i] ist „$ martx [i ] "

Ist ein Fehler in diesem Code?

Ich möchte POST-Methode verwenden, aber wenn ich nicht Daten mit POST veröffentlichen können,

dann werde ich Session-Methode als @Amit Ray und @weigreen vorgeschlagen verwenden.

nochmals vielen Dank für Ihr Interesse.

+0

verlässt nach der Kopfarbeit? – ikdekker

+0

echo '

'; –

+0

Ich legte eine Echozeile nach dem Header, Es zeigt. nach Kopfzeile noch am Leben. – furyhunter

Antwort

0

Zuerst versuchen Sie, header('location: xxx') zu Benutzer auf eine andere Seite umzuleiten.

Als Ergebnis sind Sie nicht senden das Formular, so erhalten Sie keine Daten wie $_POST[martx][0], wie Sie erwarten.

Vielleicht sollten Sie versuchen, Sitzung zu verwenden.

+0

Eigentlich wird 'header()' ignoriert, weil es nach dem Echo ist. Siehe http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php – Barmar

0

Ich kann einige Fehler sehen, die Sie machen, wenn Sie Header-Redirect machen. Es sollte keine Ausgabe geben, bevor Sie Header-Redirect aufrufen, aber Sie tun Echo vor Redirect. Verwendung Sitzung dieses Problem

function search($x, $y) 
{ 

    ... 

    $martx = array(); 
    $marty = array(); 


    foreach($load_string->channel as $channel) { 
    foreach($channel->item as $item) { 
     array_push($martx, $item->mapx); 
     array_push($marty, $item->mapy); 

    } 
    } 

if (session_status() == PHP_SESSION_NONE) { 
    session_start(); 
} 
$_SESSION["martx"] = $martx; 
$_SESSION["marty"] = $marty; 
header("location: map.php"); exit; 

dann in map.php angehen können Sie die Session-Variablen abrufen

if (session_status() == PHP_SESSION_NONE) { 
     session_start(); 
} 
$martx = $_SESSION["martx"]; 
$marty = $_SESSION["marty"]; 

Dann können Sie eine for-Schleife oder foreach-Schleife verwenden, um durch die Werte iterieren