Subject: infinite loop
Posted By: smilesmita Post Date: 11/16/2007 11:32:47 AM
i have this while loop which when the $tn doesnt match with the tracking number in the tuple array it shud update the table else it shud insert.insert is working fine but when it the tn matches with tracking number ..it just is going in an infinite loop.i tried printing the update queries and they just get printed infinitely....any ideas where i am going wrong?


$rd = $db->Query("SELECT usp_tracking_number from am_ups_shipment_package_reference");
$i = 0;

 while ($flag=true && $i < $rd->Row_Count()){
   
   $tuple=$rd->Fetch_Row($i);


      if($tuple["usp_tracking_number"]=$tn){
      $flag=false;
      if(Is_Array($shipment)){
     $query = "UPDATE am_ups_shipment 
                  SET us_delivery_date=to_timestamp($shipment[us_delivery_date]),us_delivery_time=$shipment[us_delivery_time],
                  us_billto_option=$shipment[us_billto_option],us_billto_number='$shipment[us_billto_number]',
                     us_shipper_id='$shipment[us_shipper_id]'  WHERE us_id in (select us_id from am_ups_shipment_package_reference where usp_tracking_number='$tn');";
       $rn = $db->Query($query);
       
       }
       $query1="UPDATE am_ups_shipment_location 
               SET usl_ups_id='$shipmentt[us_shipper_id]' WHERE usl_id='$shipment[us_shipper_id]';";
       $rn1 = $db->Query($query1);
       
       $ship_ref1=Array();
       if(Is_Array($ship_ref)){
      
        $ship_ref1["usr_code"]=$ship_ref[0]["usr_code"];
        $ship_ref1["usr_value"]=$ship_ref[0]["usr_value"];
       
       
        $query2 = "UPDATE am_ups_shipment_reference 
                  SET usr_code='$ship_ref1[usr_code]',usr_value='$ship_ref1[usr_value]' WHERE us_id in (select us_id from am_ups_shipment_package_reference where usp_tracking_number='$tn');";
        $rnn=$db->Query($query2);

       }
     if(Is_Array($ship_ref_pack)){
        
          $query3 = "UPDATE am_ups_shipment_package_reference 
                  SET uspr_code='$ship_ref_pack[uspr_code]',uspr_value='$ship_ref_pack[uspr_value]' WHERE us_id in (select us_id from am_ups_shipment_package_reference where usp_tracking_number='$tn');";
          $rn2 = $db->Query($query3);
   
        }
       
      }
     
     }
      $i++;
     echo "insert";
     $this->Write_UPS($shipment,$ship_ref,$ship_ref_pack,$sp); 
  
     }




Reply By: v08i Reply Date: 12/21/2007 9:44:10 AM
Hi,

change the = in this line to == (comparison operator)
 ==>  if($tuple["usp_tracking_number"]=$tn)

currently it is assigning the value of $tn to $tuple["usp_tracking_number"] and it is being evaluated as true each time.
Therefore going in a infinite loop

Regards
Vijay


Go to topic 67785

Return to index page 1