2016-11-30 2 views
0

Ich bin mit einer API arbeiten, die eine Anfrage auf meinen Server mit einigen POST Werte sendet, darunter diese:PHP - Schleife durch POST-Werte N-mal

'NumMedia' => '1' 

Der Wert für NumMedia bestimmt, wie viele zusätzliche Parameter wird empfangen. Zum Beispiel, wenn NumMedia 1 = Ich werde 2 weitere Parameter wie diese:

'MediaContentType0' => 'image/jpeg' 
'MediaUrl0' => 'https://api.server.com/2010-04-01/Accounts/xxxxxxxx', 

Wenn NumMedia größer als 1 ist werde ich einen zusätzlichen Satz von Parametern wie diese:

'MediaContentType0' => 'image/jpeg' 
'MediaUrl0' => 'https://api.server.com/2010-04-01/Accounts/xxxxxxxx' 
'MediaContentType1' => 'image/jpeg' 
'MediaUrl1' => 'https://api.server.com/2010-04-01/Accounts/zzzzzzzz' 

und so weiter , wobei die ersten Parameter mit 0 enden und für jeden weiteren zurückgegebenen Parametersatz um 1 erhöht werden.

Was ich tun möchte ist, basierend auf der Anzahl der Parameter, die durch den Wert des NumMedia-Parameters angezeigt werden, durchlaufen jede dieser und setzen Sie sie in Variablen und dann einige Datenbank Datensätze schreiben. Etwas entlang der Linien von:

if (isset($_POST['NumMedia']) && $_POST['NumMedia'] !== '') { 
    $totalParams = $_POST['NumMedia']; 
    $counter = 0; 

    // set a variable for the first set of parameters 
    $mediaContentType = $_POST['NumMediaXXX'] // XXX = $counter 
    $mediaURL = $_POST['MediaUrlXXX'] // XXX = $counter 

    // save these variables to database record 
    // increment counter to get next set of parameters 
    // exit when $counter = $totalParams 

    $counter ++; 
} 

Ich kann konzeptionell sehen, was ich einfach nicht sicher tun müssen, wie die Schleife in Gang zu bringen und einen dynamischen POST Parameter zu verweisen und die Schleife verlassen, wenn ich die Anzahl der erwarteten Parameter getroffen ?

+0

WARUM NICHT Schleife durch alle Postwerte 'foreach ($ _ POST als $ key => $ val) {// Ihr Code hier} ' – Noman

+0

Ich muss die Parameter gruppieren, die {N} mal existieren können, das sind die Parameter MediaUrl {N} und MediaContentType {N}, und für jeden dieser Sätze schreibe ich sie aus zu einem Datensatz in einer Datenbank. Es fühlt sich an, als müsste ich diese durchlaufen, da ich weiß, basierend auf NumMedia, wie viele zu erwarten sind. – user982124

+0

WARUM NICHT alle Post-Werte durchforschen 'foreach ($ _ POST als $ key => $ val) {if (strpos ($ key, 'NumMedia')! == 'false') {// Dein Code hier}}' – degr

Antwort

0

Sie müssen den Wert durch Schleifen erhalten.

if (isset($_POST['NumMedia']) && $_POST['NumMedia'] !== '') { 

    $totalParams = $_POST['NumMedia']; 

    for($i=0; $i<$totalParams; $i++) 
    { 
     // set a dynamic variables 
     ${"mediaContentType" . $i} = $_POST['mediaContentType'.$i]; // XXX = $counter 
     ${"mediaURL" . $i} = $_POST['MediaUrl'.$i]; // XXX = $counter 
    } 

} 

Sie haben den Wert in dynamische Variablen zu setzen und den Wert von $mediaContentType0 , $mediaURL0, $mediaContentType1 , $mediaURL1 usw. zugreifen können ....

+0

Er möchte die Daten in der db innerhalb der Schleife speichern, es gibt keine Notwendigkeit für dynamische Variablen, verwenden Sie einfach $ mediaContentType und $ mediaURL – phobia82

+0

Oder verwenden Sie ein Array, wenn Sie die Werte außerhalb der Schleife verwenden möchten, klingt die dynamische Variable wie a komisch/schwieriger zu implementieren Lösung für mich. – phobia82

+0

@ phobia82 lass ihn entscheiden, was er mit der Variablen machen will: P –