howdy gang,
i'm a total noob coming to the forum a little exasperated. i've taken on a half baked project and am 99.9% done! the final step is correcting a booking problem

background:
this is a hotel booking system pulling from the ihs xml database. if you would like to see the site in action go to:
http://alltrips.com/ihs/hotel_details.php?id=96304
(i've included a sample hotel, but feel free to search others if you prefer)

if you run a booking (choose dates, click 'get rates' and then 'book it' on the following page you will see where the error is occurring. it seems that the 'book it' submit button always passes the last rate listed on the page.

the other thought (my strong belief, but i'm totally new to php) is that the hotel_book.php page is overwriting what should be posted from the previous page.

you may also notice that there is a js alert when 'book it' is clicked. this is the only proof i have for myself that the correct info is being posted, but as you can see, it isn't.

i've been so buried in this and i think i've just lost the ability to think about it clearly. any help would be much appreciated. i'll post code in next post.

Thanks in advance!
sam

    <? session_start();
    //**STEP 1 & 2 INCLUDES MUST BE THE TOP MOST LINES ON THE PAGE**
    //**STEP 1 (FUNCTIONS) MUST BE INCLUDED BEFORE STEP 2 (LIBRARY)**
    // STEP 1: INLCUDE SERVER AJAX FUNCTIONS
       include ("../ajaxserverfx.php");
    // STEP 2: INCLUDE AJAX AGENT LIBRARY
       include_once("../ajaxagent.php");
    // IHS Integration
        include_once "../ihsHttpRequest.php";
            $baseurl = "http://xml.ihsadvantage.com/xmlhotel.jsp?xml=";
            $f = 1;
            $c = 2;//1 for header, 2 for body, 3 for both
            $r = NULL;
            $a = NULL;
            $cf = NULL;
            $pd = NULL;
    
        //     Posting Variables already acquired from previous requests.
        $hotelID = $_POST['hotelID'];
        $numOfRooms = $_POST['numOfRooms'];
        $selectedRoom = $_POST['selectedRoom'];
        $numberOfAdults = $_POST['numberOfAdults'];
        $numberOfChildren = $_POST['numberOfChildren'];
        $inDate = $_POST['inDate'];
        $outDate = $_POST['outDate'];
        $supplierID = $_POST['supplierID'];
    
        // Availability Request
        $availQueryStr = "<HotelSessionRequest%20method='runHotelAvailRequest'>";
        $availQueryStr = $availQueryStr . "<HotelAvailRequest>";
        $availQueryStr = $availQueryStr . "<hotelID>" .$hotelID. "</hotelID>";
        $availQueryStr = $availQueryStr . "<inDate>" .$inDate. "</inDate>";
        $availQueryStr = $availQueryStr . "<outDate>" .$outDate. "</outDate>";
        $availQueryStr = $availQueryStr . "<numberOfAdults>" .$numberOfAdults. "</numberOfAdults>";
        $availQueryStr = $availQueryStr . "<affiliateID>5469</affiliateID>";
        $availQueryStr = $availQueryStr . "<numOfRooms>" .$numOfRooms. "</numOfRooms>";
        $availQueryStr = $availQueryStr . "<numberOfChildren>" .$numberOfChildren. "</numberOfChildren>";
        $availQueryStr = $availQueryStr . "<supplierID>0</supplierID>"; // supplierID = 0 for searching
        $availQueryStr = $availQueryStr . "</HotelAvailRequest>";
        $availQueryStr = $availQueryStr . "</HotelSessionRequest>";
        // echo $availQueryStr;    
        $url = $baseurl . $availQueryStr;
        // echo $url;    
        $availXML = open_page($url,$f,$c,$r,$a,$cf,$pd);
        $availXML = str_replace('US-ASCII','utf-8',$availXML);
        // echo $availXML;
        $dom = new DOMDocument();
        $dom->loadXML($availXML); // array
        $ids = $dom->getElementsByTagName( "hotelID" );
        $id = $ids->item(0)->nodeValue;
        $names = $dom->getElementsByTagName( "hotelName" );
        $hotelName = $names->item(0)->nodeValue;
        $errors = $dom->getElementsByTagName( "error" );
        $errorDesc = $errors->item(0)->nodeValue;
        $propertyListing = "<h3>". $hotelName . "&nbsp;:&nbsp;Select a Room Type</h3>";
        if(!empty($errorDesc))
        {
            $propertyListing = $propertyListing . "<p>". $errorDesc . "</p>";
        }
        else
        {
        $rateNodes = $dom->getElementsByTagName( "Rate" );
        foreach( $rateNodes as $rateNode )
        {
            $supplierID = $rateNode->getAttribute('supplierID');
            $chainCode = $rateNode->getAttribute('chainCode');
            $propertyID = $rateNode->getAttribute('propertyID');
            $rateCodes = $rateNode->getElementsByTagName( "rateCode");
            $rateCode = $rateCodes->item(0)->nodeValue;
            $rateDescrip = $rateNode->getElementsByTagName( "rateDescription");
            $rateDescription = $rateDescrip->item(0)->nodeValue;
            $hotels = $rateNode->getElementsByTagName( "Room" );
            $hiderow = 0;
            foreach( $hotels as $hotel )
            {
                $hotelNode = $hotel->getElementsByTagName( "roomCode" );
                $roomCode = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "roomDescription" );
                $roomDescription = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "rate" );
                $rate = $hotelNode->item(0)->nodeValue;
                $hideval = $rate."~".$rateCode."~".$rateDescription."~". $roomCode."~".$roomDescription."~".$supplierID."~".$chainCode."~".$propertyID;
                $propertyListing = $propertyListing . "<br><div id=availleft>$" .$rate. "<span class=taxnote>*</span><input type=hidden name=rowid".$hiderow." value='".$hideval. "' /><br>";
                $propertyListing = $propertyListing . "<input type='button' class='submit' value='Book it' onClick='javascript:populateSelected(\"".$hideval."\")'/></div>";
                $propertyListing = $propertyListing . "<div id=availright><div class=roomdescription>" . $roomDescription . "</div></div><span class=taxnote2>* Base rate.  Taxes/Fees will show on next page.</span><div id=clear><hr size='1' width='90%'></div>";
                ++$hiderow;
            }
        }
    }
    ?>

      the js:

      <script language="javascript">
      function populateSelected(s)
      {
      alert(s);
      document.bookHotel.selectedRoom.value = s;
      document.bookHotel.submit();
      }
      </script>
      

      and the form in the html body:

      <form method="post" action="https://www.alltrips.com/ihs/hotel_book.php" name="bookHotel">
      <input type="hidden" name="hotelID" value="<?=$hotelID ?>"/>
      <input type="hidden" name="arrivalDay" value="<?=$arrivalDay ?>"/>
      <input type="hidden" name="arrivalDay" value="<?=$arrivalMonth ?>"/>
      <input type="hidden" name="departureDay" value="<?=$departureDay ?>"/>
      <input type="hidden" name="departureMonth" value="<?=$departureMonth ?>"/>
      <input type="hidden" name="numberOfAdults" value="<?=$numberOfAdults ?>"/>
      <input type="hidden" name="numOfRooms" value="<?=$numOfRooms ?>"/>
      <input type="hidden" name="numberOfChildren" value="<?=$numberOfChildren ?>"/>
      <input type="hidden" name="inDate" value="<?=$inDate ?>"/>
      <input type="hidden" name="outDate" value="<?=$outDate ?>"/>
      <input type="hidden" name="selectedRoom" value=""/>
      <? echo $propertyListing ?>
      </form>

        this is where i think the problem lies, although it's so much and i have no idea where to start!

        <? session_start();
        //**STEP 1 & 2 INCLUDES MUST BE THE TOP MOST LINES ON THE PAGE**
        //**STEP 1 (FUNCTIONS) MUST BE INCLUDED BEFORE STEP 2 (LIBRARY)**
        // STEP 1: INLCUDE SERVER AJAX FUNCTIONS
           include ("../ajaxserverfx.php");
        // STEP 2: INCLUDE AJAX AGENT LIBRARY
           include_once("../ajaxagent.php");
        // IHS Integration
            include_once "../ihsHttpRequest.php";
                $baseurl = "http://xml.ihsadvantage.com/xmlhotel.jsp?xml=";
                $f = 1;
                $c = 2;//1 for header, 2 for body, 3 for both
                $r = NULL;
                $a = NULL;
                $cf = NULL;
                $pd = NULL;
        
            //     Posting Variables already acquired from previous requests.
            $hotelID = $_POST['hotelID'];
            $arrivalDay = $_POST['arrivalDay'];
            $arrivalMonth = $_POST['arrivalMonth'];
            $departureDay = $_POST['departureDay'];
            $departureMonth = $_POST['departureMonth'];
            $numberOfAdults = $_POST['numberOfAdults'];
            $numOfRooms = $_POST['numOfRooms'];
            $numberOfChildren = $_POST['numberOfChildren'];
            $selectedRoom = $_POST['selectedRoom'];
            $inDate =  $_POST['inDate'];
            $outDate =  $_POST['outDate'];
            $supplierID =  $_POST['supplierID'];
        
            // Hotel Info Request
            $hotelQueryStr = "<HotelSessionRequest%20method=\"runHotelInfoRequest\"><HotelInfoRequest><hotelID>".$hotelID."</hotelID></HotelInfoRequest></HotelSessionRequest>";
            // echo $hotelQueryStr;    
            $url = $baseurl . $hotelQueryStr;
            // echo $url;
            $hotelXML = open_page($url,$f,$c,$r,$a,$cf,$pd);
            $hotelXML = str_replace('US-ASCII','utf-8',$hotelXML);
            // echo $hotelXML;
            $dom = new DOMDocument();
            $dom->loadXML($hotelXML); // array
            $hotels = $dom->getElementsByTagName( "HotelInfo" );
            $propertyListing = "";
            foreach( $hotels as $hotel )
                {
                $ids = $hotel->getElementsByTagName( "hotelID" );
                $id = $ids->item(0)->nodeValue;
                $names = $hotel->getElementsByTagName( "hotelName" );
                $hotelName = $names->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "propertyDescription" );
                $description = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "locationDescription" );
                $locDescription = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "checkIn" );
                $chkIn = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "checkOut" );
                $chkOut = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "numberOfRooms" );
                $noRooms = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "numberOfFloors" );
                $noFloors = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "numberOfSuites" );
                $noSuites = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "nativeCurrencyName" );
                $currency = $hotelNode->item(0)->nodeValue;
                $hotelInfo = $hotel->getElementsByTagName( "address1" );
                $address = $hotelInfo->item(0)->nodeValue;
                $hotelInfo = $hotel->getElementsByTagName( "city" );
                $address = $address . "&nbsp;-&nbsp;". $hotelInfo->item(0)->nodeValue;
                $hotelInfo = $hotel->getElementsByTagName( "stateProvince" );
                $address = $address . ",&nbsp;". $hotelInfo->item(0)->nodeValue;
                $hotelInfo = $hotel->getElementsByTagName( "postalCode" );
                $address = $address . "&nbsp;&nbsp;". $hotelInfo->item(0)->nodeValue;
                $hotelInfo = $hotel->getElementsByTagName( "country" );
                $address = $address . "&nbsp;-&nbsp;". $hotelInfo->item(0)->nodeValue;
                $Rates = $hotel->getElementsByTagName( "Rate" );    
            foreach( $Rates as $rate )
                  {
                    $commissions = $rate->getElementsByTagName( "commission" );
                    $commission = $commissions->item(0)->nodeValue;
                    if (!empty($commission))
                        {
                        $commission = "No Commission";
                        }
                    }
            $i = 0;
            $amenities = $hotel->getElementsByTagName( "Amenity" );
            foreach( $amenities as $amenity )
                {
                    $names = $amenity->getElementsByTagName( "description" );
                    $name = $names->item(0)->nodeValue;
                    $amenitylist = $amenitylist . "<li>" . $name . "</li>&nbsp;";
                }
            $amenities = "";
            if (!empty($attractions))
                {
                    $attractionPop = "<div id=\"attractions\" style=\"position:absolute;visibility:hidden; left:56; top:922; width:244\"><ul>";
                    $attractionPop = $attractionPop . $attractions . "</ul></div>";
                }
            $i = 0;
            $restMedias = $hotel->getElementsByTagName( "Media" );
            foreach( $restMedias as $media )
                {
                    $links = $media->getElementsByTagName( "link" );
                    $link = $links->item(0)->nodeValue;
                    if ($i == 0)
                        $mainImage = $link;
                    else    
                        $restImages = $restImages . "<td><img width=100 height=100 src=http://" . $link . " /></td><td>&nbsp;</td>";
                    $i += 1;
                }
                $propertyListing = $propertyListing . "<div id=booktopleft><img width=100 height=100 src=https://" . $mainImage . " /></div>";
                $propertyListing = $propertyListing . "<div id=booktopright>". $address ."<br>Check In : " .$chkIn. "<br>";
                $propertyListing = $propertyListing . "Check Out : " .$chkOut. "<br>";
                $propertyListing = $propertyListing . "Number of Rooms : " .$noRooms. "<br>";
                $propertyListing = $propertyListing . "Number of Floors : " .$noFloors. "</div>";
                }
                $curMonthDays = "";
                $dd = (int) (date('d'));
                ++$dd;
                for($i=1; $i <= date('t');$i++)
                {
                    if($dd == $i)
                        $curMonthDays .= "<option value='" .$i. "' selected>" .$i. "</option>" ;
                    else
                        $curMonthDays .= "<option value='" .$i. "'>" .$i. "</option>" ;
                }
                $hotelNode = $hotel->getElementsByTagName( "cancelPolicyDescription" );
                $cancelPolicyDescription = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "roomRate" );
                $roomrate = $hotelNode->item(0)->nodeValue;
                $hotelNode = $hotel->getElementsByTagName( "number" );
                $number = $hotelNode->item(0)->nodeValue;
        
        

          had to cut the last one in half - here is the rest:

          
          
              // Availability Request
              //ihs    I believe you could post the values from the previous page
              //        and not include the Availability Request here.
              $availQueryStr = "<HotelSessionRequest%20method='runHotelAvailRequest'>";
              $availQueryStr = $availQueryStr . "<HotelAvailRequest>";
              $availQueryStr = $availQueryStr . "<hotelID>" .$hotelID. "</hotelID>";
              $availQueryStr = $availQueryStr . "<inDate>" .$inDate. "</inDate>";
              $availQueryStr = $availQueryStr . "<outDate>" .$outDate. "</outDate>";
              $availQueryStr = $availQueryStr . "<numberOfAdults>" .$numberOfAdults. "</numberOfAdults>";
              $availQueryStr = $availQueryStr . "<affiliateID>5469</affiliateID>";
              $availQueryStr = $availQueryStr . "<numOfRooms>" .$numOfRooms. "</numOfRooms>";
              $availQueryStr = $availQueryStr . "<numberOfChildren>" .$numberOfChildren. "</numberOfChildren>";
              $availQueryStr = $availQueryStr . "<supplierID>0</supplierID>"; // supplierID = 0 for searching
              $availQueryStr = $availQueryStr . "</HotelAvailRequest>";
              $availQueryStr = $availQueryStr . "</HotelSessionRequest>";
              // echo $availQueryStr;    
              $url = $baseurl . $availQueryStr;
              // echo $url;
              $availXML = open_page($url,$f,$c,$r,$a,$cf,$pd);
              $availXML = str_replace('US-ASCII','utf-8',$availXML);
              // echo $availXML;
              $dom = new DOMDocument();
              $dom->loadXML($availXML); // array
              $ids = $dom->getElementsByTagName( "hotelID" );
              $id = $ids->item(0)->nodeValue;
              $names = $dom->getElementsByTagName( "hotelName" );
              $hotelName = $names->item(0)->nodeValue;
              $errors = $dom->getElementsByTagName( "error" );
              $errorDesc = $errors->item(0)->nodeValue;
              $propertyListing = "<h3>". $hotelName . "&nbsp;:&nbsp;Select a Room Type</h3>";
              if(!empty($errorDesc))
                  {
                      $propertyListing = $propertyListing . "<p>". $errorDesc . "</p>";
                  }
              else
                  {
                      $rateNodes = $dom->getElementsByTagName( "Rate" );
                      foreach( $rateNodes as $rateNode )
                      {
                          $supplierID = $rateNode->getAttribute('supplierID');
                          $chainCode = $rateNode->getAttribute('chainCode');
                          $propertyID = $rateNode->getAttribute('propertyID');
                          $rateCodes = $rateNode->getElementsByTagName( "rateCode");
                          $rateCode = $rateCodes->item(0)->nodeValue;
                          $rateDescrip = $rateNode->getElementsByTagName( "rateDescription");
                          $rateDescription = $rateDescrip->item(0)->nodeValue;
                          $hotels = $rateNode->getElementsByTagName( "Room" );
                          $hiderow = 0;
                          foreach( $hotels as $hotel )
                          {
                              $hotelNode = $hotel->getElementsByTagName( "roomCode" );
                              $roomCode = $hotelNode->item(0)->nodeValue;
                              $hotelNode = $hotel->getElementsByTagName( "roomDescription" );
                              $roomDescription = $hotelNode->item(0)->nodeValue;
                              $hotelNode = $hotel->getElementsByTagName( "rate" );
                              $rate = $hotelNode->item(0)->nodeValue;
                              $hideval = $rate."~".$rateCode."~".$rateDescription."~". $roomCode."~".$roomDescription."~".$supplierID."~".$chainCode."~".$propertyID;
                          }
                      }
                  }
          
              // Rule Request
               $ruleQueryStr = "<RulesRequest%20method='processHotelRules'>";
              $ruleQueryStr .= "<HotelRulesRequest>";
              $ruleQueryStr .= "<hotelID>".$hotelID."</hotelID>";
              $ruleQueryStr .= "<roomRate>".$rate."</roomRate>";
              $ruleQueryStr .= "<inDate>".$inDate."</inDate>";
              $ruleQueryStr .= "<outDate>".$outDate."</outDate>";
              $ruleQueryStr .= "<propertyID>".$propertyID."</propertyID>";
              $ruleQueryStr .= "<chainCode>".$chainCode."</chainCode>";
              $ruleQueryStr .= "<numberOfAdults>".$numberOfAdults."</numberOfAdults>";
              $ruleQueryStr .= "<rateCode>".$rateCode."</rateCode>";
              $ruleQueryStr .= "<roomCode>".$roomCode."</roomCode>";
              $ruleQueryStr .= "<supplierID>".$supplierID."</supplierID>";
              $ruleQueryStr .= "<affiliateID>5469</affiliateID>";
              $ruleQueryStr .= "<numberOfRooms>".$numOfRooms."</numberOfRooms>";
              $ruleQueryStr .= "<numberOfChildren>".$numberOfChildren."</numberOfChildren>";
              $ruleQueryStr .= "<currencyCode>USD</currencyCode>";
              $ruleQueryStr .= "<wantsRateRules>true</wantsRateRules>";
              $ruleQueryStr .= "<timeout>5000</timeout>";
              $ruleQueryStr .= "<rateChange>true</rateChange>";
              $ruleQueryStr .= "<numberOfBeds>1</numberOfBeds>";
              $ruleQueryStr .= "</HotelRulesRequest>";
              $ruleQueryStr .= "</RulesRequest>";
              //    echo $ruleQueryStr;
              $ruleurl = $baseurl . $ruleQueryStr;
              //    echo $ruleurl;
              $ruleXML = open_page($ruleurl,$f,$c,$r,$a,$cf,$pd);
              $ruleXML = str_replace('US-ASCII','utf-8',$ruleXML);
              // echo $ruleXML;        
              $dom = new DOMDocument();
              $dom->loadXML($ruleXML); // array
              $rateNodes = $dom->getElementsByTagName( "Rate" );
              foreach( $rateNodes as $rateNode )
              {
                  $tax = $rateNode->getElementsByTagName( 'taxInformation' );            
                  $tax_data = $tax->item(0)->nodeValue;
                  $rateDesc = $rateNode->getElementsByTagName( 'rateDescription' );            
                  $rateDesc_data = $rateDesc->item(0)->nodeValue;
              }
              $roomNodes = $dom->getElementsByTagName( "Room" );
              foreach( $roomNodes as $roomNode )
              {
                  $cpd = $roomNode->getElementsByTagName( 'cancelPolicyDescription' );            
                  $cpd_text = $cpd->item(0)->nodeValue;
                  $pppd = $roomNode->getElementsByTagName( 'prePayPolicyDescription' );                
                  $pppd_text = $pppd->item(0)->nodeValue;        
                  $total_rate    = $roomNode->getElementsByTagName( 'totalRate' );        
                  // $total_rate_text = $total_rate->item(0)->nodeValue;            
              }        
              $roomNodes = $dom->getElementsByTagName( "Night" );        
              foreach( $roomNodes as $roomNode )
              {
                  $dayName = $roomNode->getElementsByTagName( 'dayName' );            
                  $dayName_text = $dayName->item(0)->nodeValue;                    
                  $month = $roomNode->getElementsByTagName( 'monthName' );            
                  $month_text = $month->item(0)->nodeValue;
                  $day = $roomNode->getElementsByTagName( 'day' );            
                  $day_text = $day->item(0)->nodeValue;    
                  $rate = $roomNode->getElementsByTagName( 'rate' );    
                  $rate_text = $rate->item(0)->nodeValue;                
              }                         
          ?>
            Write a Reply...