The common reason for the first row to be "missing" from the result set is that a mysql_fetch_assoc() (or equivalent) call was made prior to a loop over the result set. In your code snippet, there is no such superfluous call, so if the first row is missing, then it really is missing. Possible reasons include an incorrect query or that it simply is not in the database.
As bradgrafelman has pointed out, you do not need to check with mysql_num_rows() before looping over the result set. I also recommend accessing the columns by name rather than position, and to this end switching from mysql_fetch_array() to the more precise mysql_fetch_assoc().
<?php
if (isset($_SESSION['gmemberid'])) {
$tbl_name = "movie";
$result = mysql_query("SELECT name,category FROM $tbl_name
WHERE id BETWEEN '1' AND '7'")
or die("Cannot execute query.");
while ($rows = mysql_fetch_assoc($result)) {
echo '<strong><br>' . $rows['name'] .' (' . $rows['category']
. ')</strong></font>';
}
}
?>