Passing variables to pages via Sessions

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • digituf
    New Member
    • Mar 2010
    • 17

    Passing variables to pages via Sessions

    i have page findroom.php that will redirect to the page DisplayDetails. php.

    i wanted the DisplayDetails. php page to display data from the query in the page findroom.php. The data that i wanted to display from the query from page DisplayDetails is 'room_price' and 'room_type'.

    However, when i clik the Book Now link, it dosesnt't display the value.

    Since i'm just a starter in php, can someone tell me am i treating the session the right way as it doesn't diplay any result for the data that i wanted to take from the query in the findroom.php. But, for the the others data which is 'checkin', 'checkout' and others, it just show perfectly.

    I do hope if someone can tell me am i using the session in the right way or not.

    below is the code: findroom.php

    Code:
    <?php
    session_start();
    unset($_SESSION['error']);
    // echo variable from the session, we set this on our other page
    $_SESSION['checkin'] = $_POST['checkin'];
    //$_SESSION['checkin']=$checkin;
    $_SESSION['checkout'] = $_POST['checkout'];
    $_SESSION['rooms']= $_POST['rooms'];
    $_SESSION['adults']= $_POST['adults'];
    $_SESSION['children']= $_POST['children'];
    $days = (strtotime($_POST['checkout']) - strtotime($_POST['checkin'])) / (60 * 60 * 24);
    
    $_SESSION['days']=$days;
    
    $_SESSION['room_price']=$data['room_price'];
    $room_price=$_SESSION['room_price'];
    
    $_SESSION['room_type']=$data['room_type'];
    $room_type=$_SESSION['room_type'];
    ?>
    
    <html>
    <body>
    <form action="DisplayDetails.php" method="post">
    <p>
    
    <?php
    
    //$result = mysql_query("SELECT id_no,room_type,room_price from room1 WHERE room_no NOT IN ( SELECT id_room_no
    //FROM reservation1 WHERE datein >='$datein' AND dateout <='$dateout')");
    
    $result = mysql_query("SELECT room_price, room_type from room1 WHERE room_no NOT IN ( SELECT id_room_no
    FROM reservation1 WHERE datein >='$datein' AND dateout <='$dateout')");
    ?>
    
    <?php 
        /*if(isset($_POST['Check']) && $_POST['Check']=='Submit') 
        { 
              echo "The rooms availale on the date of :";
    		  echo $datein;
    		  echo "  until  ";
              echo $dateout; 
        } */
    ?> 
    
    </p>
    <p><strong><strong>Room Availbility</strong> </p>
    <td><table width="61%" height="64" border="1" cellpadding="0" cellspacing="0" bordercolor="#CC66CC" class="report2">
          <tr>
            <td width="190" bgcolor="#E8E8E8"><div align="center"><strong>Room Type </strong></div></td>
            <td width="218" bgcolor="#E8E8E8"><div align="center"><strong>Room Price </strong></div></td>
            <td bgcolor="#E8E8E8"><strong>Task</strong></div></td>
          </tr>
          <?php
    		//$counter=1;
    		while ($data = mysql_fetch_array($result)):
    		?>
          <tr>
         
            <td><?php echo $data['room_type']; ?></td>
            <td><?php echo $data['room_price']; ?></td>
      <td width="153"><label><a href="DisplayDetails.php?id_no=<?php echo $data['id_no'];?>"><strong>Book Now</strong></a></label></td>
    
     
        </tr>
          <?php
      		//$counter++;
      		endwhile;
    		?>
        </table>
      <table width="373" border="1">
         <tr>
           <td colspan="2"><strong>Reservation Summary</strong></td>
          </tr>
         <tr>
           <td>Check In :</td>
           <td><label>
             <?php echo $_SESSION['checkin']; ?>
           </label></td>
          </tr>
         <tr>
           <td>Check Out :</td>
           <td><label><?php echo $_SESSION['checkout']; ?></label></td>
          </tr>
         <tr>
           <td>Rooms :</td>
           <td><label><?php echo $_SESSION['rooms']; ?></label></td>
          </tr>
         <tr>
           <td>Adults Per Room :</td>
           <td><label><?php echo $_SESSION['adults']; ?></label></td>
          </tr>
         <tr>
           <td>Children Per Room :</td>
           <td><label><?php echo $_SESSION['children']; ?></label></td>
          </tr>
         <tr>
           <td>Days :</td>
           <td><?php echo $_SESSION['days']; ?></td>
         </tr>
       </table>
       <p>
        <label></label>
       </form>
      </body>
    </html>
    below is the code for : DisplayDetails. php

    Code:
    <?php
    session_start();
    $_SESSION['days']= $_POST['days'];
    $_SESSION['room_price']= $_POST['room_price'];
    $_SESSION['room_type']= $_POST['room_type'];
    
    // echo variable from the session, we set this on our other page
    //$_SESSION['checkin'] = $_POST['checkin'];
    //$_SESSION['checkout'] = $_POST['checkout'];
    //$_SESSION['rooms']= $_POST['rooms'];
    //$_SESSION['adults']= $_POST['adults'];
    //$_SESSION['children']= $_POST['children'];
    
    ?>
    
    <html>
    <body>
    <h3><center>
       Room's Reservation
    </center></h3>
    <form action="DisplayDetails.php" method="post">
    
      <table width="373" border="1">
        <tr>
          <td colspan="2"><strong>Reservation Summary</strong></td>
        </tr>
        <tr>
          <td>Check In :</td>
          <td><label> <?php echo $_SESSION['checkin']; ?> </label></td>
        </tr>
        <tr>
          <td>Check Out :</td>
          <td><label><?php echo $_SESSION['checkout']; ?></label></td>
        </tr>
        <tr>
          <td>Rooms :</td>
          <td><label><?php echo $_SESSION['rooms']; ?></label></td>
        </tr>
        <tr>
          <td>Adults Per Room :</td>
          <td><label><?php echo $_SESSION['adults']; ?></label></td>
        </tr>
        <tr>
          <td>Children Per Room :</td>
          <td><label><?php echo $_SESSION['children']; ?></label></td>
        </tr>
        <tr>
          <td>Days :</td>
          <td><?php echo $_SESSION['days']; ?></td>
        </tr>
        <tr>
          <td>Room Type</td>
          <td><?php echo $_SESSION['room_type']; ?></td>
        </tr>
        <tr>
          <td>Room Price</td>
          <td><?php echo $_SESSION['room_price']; ?></td>
        </tr>
      </table>
    </form>
    
    </body>
    </html>
    any kinds of help really apprecited
  • digituf
    New Member
    • Mar 2010
    • 17

    #2
    i try to trace the output based on the session using this cod :
    Code:
    echo "<pre>";
    var_dump($_SESSION);
    echo "</pre>";
    it produce that this kind of result:
    Code:
    array(8) {
      ["checkin"]=>
      string(12) " 	2010-03-01"
      ["checkout"]=>
      string(12) " 	2010-03-24"
      ["rooms"]=>
      string(1) "1"
      ["adults"]=>
      string(1) "1"
      ["children"]=>
      string(1) "1"
      ["days"]=>
      int(23)
      ["room_price"]=>
      NULL
      ["room_type"]=>
      NULL
    }
    it shows that my room_type and room_price which is the data that i wanted to take from the query at the page findroom.php is NULL. i wonderi if i'm using the right code to take the data from query is right or not?
    can someone tell me is this sysntax is right or not?

    Code:
    $_SESSION['room_price']=$data['room_price'];
    $room_price=$_SESSION['room_price'];
    
    $_SESSION['room_type']=$data['room_type'];
    $room_type=$_SESSION['room_type'];
    or can someone tell me is it actually possible to take the data from the query and the make it as session variable?

    Comment

    • Atli
      Recognized Expert Expert
      • Nov 2006
      • 5062

      #3
      Hey.

      When you set the session variables for the room_type and room_price variables, the data has not yet been fetched from the database. - You can not use variables before they are created. -- If you want to set the session variables based on data from a SQL query, you need to do so AFTER the query has executed and the data has been retrieved from the result set.

      Also, your query is not only fetching values for a single room. It fetches a range (or at least appears to do so) and displayes multiple rooms, from which your visitors can select one via a link. - How do you plan on passing the values for the selected room in the session? -- Keep in mind that once the links are shown to the visitor, the PHP code (including the code that sets the session values) has already been executed.

      Based on my understanding of what you are doing, I would recommend passing just the room ID to the second page and retrieving the data again from the database there. It is a lot better than cluttering the session with the entire result set. - Abusing the sessions is never a good idea.

      Comment

      • digituf
        New Member
        • Mar 2010
        • 17

        #4
        Yeah..i finally realize that the prob comes from the wrongly flow of my code.I'm really make myself like fool where i look back at my code. There's eally no logic there. However, i alreaddy fix it..

        Since i'm newbie(well...e verybody said so..:)), i just thinks the way to pass data without even thinking any logic in the system. I finally sets id at the url at the that will redirect to the DisplayDetails. php page where by setting it at the link "Book Now".

        Thanks a lot Atli. Your reply actually DID knocked great sense to my thinking about how to improve my system...

        cheers..:)

        Comment

        Working...