Hi Everyone
I am working through a book called Dreamweaver PHP Web Development. It has a tutorial for creating a booking system for a hotel. The because went out of publication in 2002 and there isn't a errata on the Glasshaus site for it . When creating the search page I am getting the following error message. Warning: mysql_fetch_assoc(): 2 is not a valid MySQL result resource. The page is only showing one result and I think that the error message has something to do with that.

The code for the page is as follows

<?php require_once('Connections/conn1.php'); ?>

<?php
if($_POST['bed_option'] == "less")
{
    $bcomp = "<";
}
else if($_POST["bed_option"] == "more")
{
    $bComp = ">";
}
else
{
    $bComp = "=";
}   

?>
<?php
if($_POST["price_option"] == "above")
{
    $pComp = ">";
}
else
{
    $pComp = "<=";
}   
?>
<?php
$bedComp_rsSearch = "<";
if (isset($bComp)) {
  $bedComp_rsSearch = (get_magic_quotes_gpc()) ? $bComp : addslashes($bComp);
}
$bedNum_rsSearch = "0";
if (isset($_POST['bed'])) {
  $bedNum_rsSearch = (get_magic_quotes_gpc()) ? $_POST['bed'] : addslashes($_POST['bed']);
}
$pComp_rsSearch = "<=";
if (isset($pComp)) {
  $pComp_rsSearch = (get_magic_quotes_gpc()) ? $pComp : addslashes($pComp);
}
$pNum_rsSearch = "0";
if (isset($_POST['price'])) {
  $pNum_rsSearch = (get_magic_quotes_gpc()) ? $_POST['price'] : addslashes($_POST['price']);
}
mysql_select_db($database_conn1, $conn1);
$query_rsSearch = sprintf("SELECT ID, price, bed, number FROM room WHERE bed %s %s  AND price %s %s", $bedComp_rsSearch,$bedNum_rsSearch,$pComp_rsSearch,$pNum_rsSearch);
$rsSearch = mysql_query($query_rsSearch, $conn1) or die(mysql_error());
$row_rsSearch = mysql_fetch_assoc($rsSearch);
$totalRows_rsSearch = mysql_num_rows($rsSearch);
?>
<form name="form1" method="post" action="search.php">
  <table width="400" border="0">
    <tr align="center">
      <td colspan="3">Search for a room</td>
    </tr>
    <tr>
      <td width="152" align="right">Number of beds :</td>
      <td width="38"><select name="bed_option" id="bed_option">
          <option value="more" selected>More than</option>
          <option value="less">Less than</option>
          <option value="equal">Equal to</option>
        </select></td>
      <td width="196">
      <input name="bed" type="text" id="bed" value="1" size="2"
             maxlength="2">bed(s)</td>
    </tr>
    <tr>
      <td align="right">Price Range :</td>
      <td><select name="price_option" id="price_option">
          <option value="above" selected>Above</option>
          <option value="below">Below</option>
        </select></td>
      <td>$<input name="price" type="text" id="price" value="25" size="5"
                  maxlength="5"></td>
    </tr>
    <tr>
      <td align="right">&nbsp;</td>
      <td colspan="2" align="center">
      <input type="submit" name="Submit" value="Search"></td>
    </tr>
  </table>
</form>

<?php
mysql_free_result($rsSearch);
?>
<table width="50%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Price</font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Bed</font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Room Number</font></td>
  </tr>
  <?php do { ?>
  <tr> 
    [B]<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;<?php echo $row_rsSearch['ID']; ?></font></td>
    <td><?php echo $row_rsSearch['price']; ?></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;<?php echo $row_rsSearch['bed']; ?></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;<?php echo $row_rsSearch['number']; ?></font></td>
  </tr>
  <?php } while ($row_rsSearch = mysql_fetch_assoc($rsSearch)); ?>
</table>
<p>&nbsp;</p>

The error message says line 100 which is in the bold part of the code. Hope someone can explain what the error message means and how to fix it.
Thanks Lynne

Edited 3 Years Ago by pyTony: fixed formating

this error mainly results from wrong arguments passed to the mysql_query() function which in turn passes the values to the mysql_fetch_assoc() function,please examine your arguments supplied to mysql_query() especially where you used operators %s =%s and %s=%s

This article has been dead for over six months. Start a new discussion instead.