2012-04-20 45 views
0

我試圖將while循環的結果添加到xml請求中。但它沒有正確顯示。下面我首先創建一個函數,然後嘗試使該函數在xml請求curl標記中工作。這很難解釋,更容易看到:將PHP函數放入XML請求中

//Getting room groups 
    function roomGroups(){ 
    $i = 2; 
      while(isset($_GET['ad'.$i])) 
      { 
       $adult = $_GET['ad'.$i]; 
       $child = $_GET['ch'.$i]; 
       $childAge = $_GET['ch'.$i]; 
       echo "<RoomGroup><Room><numberOfAdults>".$adult."</numberOfAdults><numberOfChildren>".$child."<childAges>".$childAge."</childAges></Room></RoomGroup>"; 
       $i++; 
       }}     
    //Room availablility Request 
    $ch1 = curl_init(); 
    $fp1 = fopen('room_request.xml','w'); 
    curl_setopt($ch1, CURLOPT_URL, "http://api.ean.com/ean-services/rs/hotel/v3/avail?cid=379849&minorRev=13&apiKey=4sr8d8bsn75tpcuja6ypx5g3&locale=en_US&currencyCode=USD&customerIpAddress=67.20.125.193&customerUserAgent=Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/535.11+(KHTML,+like+Gecko)+Chrome/17.0.963.79+Safari/535.11&customerSessionId=0ABAA856-8502-E913-6982-E2210F904B72&xml=<HotelRoomAvailabilityRequest><hotelId>".$hid."</hotelId><arrivalDate>".$arrivalDate."</arrivalDate><departureDate>".$departingDate."</departureDate><RoomGroup><Room><numberOfAdults>".$adults."</numberOfAdults><numberOfChildren>".$children."</numberOfChildren><childAges>".$ages."</childAges></Room></RoomGroup>".roomGroups()."<includeDetails>true</includeDetails></HotelRoomAvailabilityRequest>"); 
    curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch1, CURLOPT_HTTPHEADER, array('Accept: application/xml')); 
    curl_setopt($ch1, CURLOPT_HEADER, 0); 
    curl_setopt($ch1, CURLOPT_FILE, $fp1); 
    $val1 = curl_exec($ch1); 
    curl_close($ch1);//Close curl session 
    fclose($fp1); //Close file overwrite 
    $avail = simplexml_load_file('room_request.xml'); 

//The url that is passing the data looks like this: /hotel_request.php?hid=370111&d=05/02/2012&a=04/30/2012&r=3&ad2=2&ch2=22=16,17,&ad3=3&ch3=33=7,13,16,& 

我什麼也沒有回來。任何對此的幫助將非常感謝!

+0

我沒有跟蹤。你正在迴應xml回瀏覽器吧?它如何進入room_request.xml? – vansimke 2012-04-20 20:00:03

回答

1

roomGroups()不是return什麼,它只是echo s到屏幕上。

嘗試這樣:

function roomGroups(){ 
    $i = 2; 
    $ret = ''; 
    while(isset($_GET['ad'.$i])){ 
     $adult = $_GET['ad'.$i]; 
     $child = $_GET['ch'.$i]; 
     $childAge = $_GET['ch'.$i]; 
     $ret .= "<RoomGroup><Room><numberOfAdults>".$adult."</numberOfAdults><numberOfChildren>".$child."<childAges>".$childAge."</childAges></Room></RoomGroup>"; 
     $i++; 
    } 
    return $ret; 
} 
+0

Duuuh我覺得自己有點白癡。謝謝! – liveandream 2012-04-20 20:18:34

+0

適應我們最好的:-P – 2012-04-20 20:19:08