2016-06-22 6 views
0

PHPを使用してShopifyのWebサイトに注文をアップロードするためのCSVアップローダーを作成しています。 私のコードを調べると、$errorsTRUEと設定した2つのインスタンスが表示されます。次に、すべてのエラーの可能性の後、私は$errorsが真であるかどうかをチェックし、肯定の場合はcontinueというループを実行して、注文が処理されないようにします。何らかの理由で、breakのようにforloop全体を停止しています。これはコミュニティからの助けになりますか?ここに私のコードは次のとおりです。continue機能がPHP forloopをシャットダウンしています

$url = 'https://xxxxxxxxxxx:[email protected]/admin/orders.json'; 
    $rows = explode(PHP_EOL, $_POST['CSV']); 
    $customer = $_POST['customer']; 
    $thisID = explode(',', $_POST['IDs']); 
    $lines = count($rows); 
    $IDs = count($thisID); 
    for ($x = 0; $x < $lines; $x++) { 
    $ordtot = 0; 
    $cells = str_getcsv($rows[$x]); 
    $line_items = array(); 
    $POs = array(); 
if ($x > 0){ 
    $csmpo = $cells[0]; 
    $orddte = $cells[1]; 
    $shipvia = $cells[2]; 
    $shipdte = $cells[3]; 
    $cncldte = $cells[4]; 
    $ohsname = $cells[5]; 
    $ohsaddr1 = $cells[6]; 
    $ohsaddr2 = $cells[7]; 
    $ohscity = $cells[8]; 
    $ohsstate = $cells[9]; 
    $ohszip = $cells[10]; 
    $ohsphone = $cells[11]; 
    $oddpart = $cells[12]; 
    $oddupc = $cells[13]; 
    $oddprice = $cells[14]; 
    $oddordqty = $cells[15]; 
    $ohdnote = $cells[16]; 
    if ($ohsphone == ""){ 
     $ohsphone = "1111111111"; 
    } 
    for($a = 0; $a <= $IDs; $a++){ 
     if ($a == $IDs){ 
      $result .= "Order " . $csmpo . " NOT processed, item " . $oddpart . " not found. Please contact the webmaster.<br>"; 
      $error = true; 
      break 1; 
     } 
     $myID = explode('/', $thisID[$a]); 
     $mySKU = explode('_', $thisID[$a]); 
     if ($mySKU[0] == $oddpart){ 
      $line_items[] = array('variant_id' => $myID[1], 'quantity' => $oddordqty); 
      $ordtot = $ordtot + $oddordqty; 
      break 1; 
     } 
    } 
    $lines2 = $lines - $x; 
    $w = $x + 1; 
    for ($y = $w; $y < $lines2; $y++){ 
     $cells2 = str_getcsv($rows[$y]); 
     if ($cells2[0] == $csmpo){ 
      for($b = 0; $b <= $IDs; $b++){ 
       if ($b == $IDs){ 
        $result .= "Order " . $csmpo . " NOT processed, item " . $oddpart . " not found. Please contact the webmaster.<br>"; 
        $error = true; 
        break 1; 
       } 
       $myID = explode('/', $thisID); 
       $mySKU = explode('_', $thisID); 
       if ($mySKU[0] == $cells2[12]){ 
        $line_items[] = array('variant_id' => $myID[1], 'quantity' => $cells2[15]); 
        $ordtot = $ordtot + $cells2[15]; 
        break 1; 
       } 
      } 
      $x = $x + 1; 
     } else { 
      break 1; 
     } 
    } 
    if ($error){continue;} 
$order = array(
    "order" => array(
    "customer" => array(
     "id" => $customer 
    ), 
    "financial_status" => "pending", 
    "shipping_address" => array(
         "first_name" => '', 
         "address1" => $ohsaddr1, 
         "addres2" => $ohsaddr2, 
         "phone" => $ohsphone, 
         "city" => $ohscity, 
         "zip" => $ohszip, 
         "province" => $ohsstate, 
         "country" => "United States", 
         "last_name" => $ohsname, 
         "name" => $ohsname, 
         "country_code" => "US", 
         "province_code" => $ohsstate 
    ), 
    /*"billing_address" => array(
         "first_name" => '', 
         "address1" => $_POST["bill_address1"], 
         "phone" => $_POST["bill_phone"], 
         "city" => $_POST["bill_city"], 
         "zip" => $_POST["bill_zip"], 
         "province" => $_POST["bill_state"], 
         "country" => "United States", 
         "last_name" => $_POST["bill_name"], 
         "name" => $_POST["bill_name"], 
         "country_code" => "US", 
         "province_code" => $_POST["bill_state"] 
    ),*/ 
    "line_items" => $line_items, 
    "note_attributes" => array(
        array("name" => "POnumber", 
          "value" => $csmpo), 
        array("name" => "shipdate", 
          "value" => $shipdte), 
        array("name" => "canceldate", 
          "value" => $cncldte) 
    ), 
    "gateway" => "Achim Credit Terms" 
)); 
$session = curl_init(); 
curl_setopt($session, CURLOPT_URL, $url); 
curl_setopt($session, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8')); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($session, CURLOPT_VERBOSE, 0); 
curl_setopt($session, CURLOPT_HEADER, 1); 
curl_setopt($session, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($session, CURLOPT_POST, 1); 
curl_setopt($session, CURLOPT_POSTFIELDS, json_encode($order)); 
curl_setopt($session, CURLOPT_SSL_VERIFYPEER,false); 
$APIresult = curl_exec($session); 
curl_close($session); 
usleep(500000); 
$result .= "Processed Order " . $csmpo . " for a total of " . $ordtot . " items, shipping to " . $ohdcity . ", " . $ohdstate . "<br>"; 
} 
    } 
    print_r($result); 
+1

あなたはどのようなエラーが出るのですか? – johnny

+1

リファクタリングを検討してください。あなたのコードは読み込めません。 forループでcurlを使用する必要がありますか? – PatNowak

+0

'break'と同じことをすることができます。https://secure.php.net/continue –

答えて

0

あなたがfalseに$errorをリセットすることはありません、$エラーが真になると、それはすべてのさらなる反復のために忠実になります。あなたのループの最初の行に

リセット$エラー:

for ($x = 0; $x < $lines; $x++) { 
    $error = false; 
    .... 
+0

私は5年間のプログラミングの後、私はこれを残して信じられない。サイモンに感謝します。今すぐ動作します。ところで、誰かがコードにコメントをつけていると(私の最初のPHPプログラムであるビルドに時間がかかりました)、私はそれを感謝します。 – Mennyg

関連する問題