My apologies for the large email, but I wanted to include all the source code for 
interested folks and thank everyone who provided suggestions for implementing "hot or 
not"-like functionality. 

Here is what I ended up doing. I've stripped out alot of the formatting to make it as 
readable as possible, but it's a little messy. Tried to comment it to help you see 
what is going on.

Basically, it builds a comma separated list of images that have been rated and using 
"NOT IN" in the query, gets a random one that hasn't been seen yet. 

Feel free to contact me off list if you want to see the beta page that implements this.

Matt

-------------------------------------------------------------------------------


<?php
 @ $conn = getDBConn();
 $total_num_rows = 4;  // number of rows in table -- will not stay static, but for 
beta, just make it 4

 @ $action = $_POST['action'];  //set by the form; 
 if ($action == "rateIt") {
  @ $excludeList = $_POST['excludeList'];  // comma-separated list of ID's; passed as 
a hidden form field
  @ $rating = $_POST['rating']; // the user-submitted rating
  @ $honID = $_POST['honID'];  //the ID for the image; passed as a hidden form field

  $query = "update hotornot set numVotes=numVotes+1, pointTotal=pointTotal+".$rating." 
where honID=" . $honID; 
  $result_rateIt = mysql_query($query);
 
  //get last image plus statistics
  $query = "select image, numVotes, pointTotal from hotornot where honID=" . $honID;
  $result_getLastPic = mysql_query($query);
  $row = mysql_fetch_array($result_getLastPic);
  $lastImage = $row['image']; 
  $lastNumVotes = $row['numVotes'];
  $lastPointTotal = $row['pointTotal'];
 } else {
  $excludeList = "0"; // reset or for first time visitor -- must init it as a 0, 
otherwise db error if empty
 }
 
 //get new image
 $query = "select honID, image from hotornot where honID not in (" . $excludeList . ") 
order by rand() limit 1";
 $result_getPic = mysql_query($query);
 $row = mysql_fetch_array($result_getPic);
 $image = $row['image'];
 
 $noMoreImages = FALSE;
 if (!$image) { // identifies that query as not finding an image, which means it was 
the last image
  $noMoreImages = TRUE;
 }
 
 $honID = $row['honID'];

if ($action == "rateIt") {
?>
   <!-- this is the "Last Image" table, shows the one the user just rated and it's 
statistics -->
   <TABLE bgcolor="#9999CC">
   <tr>
    <td align=center><?php echo round($lastPointTotal/$lastNumVotes,1); ?><br>
        based on <?php echo $lastNumVotes;?> votes<br>
        You rated it: <?php echo $rating; ?> <br>
    <img src="hotornot/<?php echo $lastImage; ?>" width=80 height=80 border=0 vspace=2 
hspace=2>
    </td>
   </TR>
   </TABLE>
<?php
} else {  //else, the user just started and there is no "Last Image" box to show
echo '<img src="images/dot-white.gif" alt="" width="110" height="1" border="0">';
}
?>
<form action="hotornot.php" method="post" target="_top">

<TABLE border="0" width="340" bgcolor="#FFFFFF" cellpadding="0" cellspacing="0">
 <?php 
  if ($noMoreImages) {
   echo '<TR><TD><A HREF="hotornot.php">Start Over</A></TD></TR>';
  } else {
?>
 <TR>
  <TD colspan="12"><BR><div align="center"><h3>Rate from 1 through 10 to see the next 
picture</h3></div><BR></TD>
 </TR>
 <TR>
  <TD></TD>

   <!-- Horizontal array of radio buttons for the user to click. Clikcing on one 
immediately submits the form with the onclick events. -->

  <td bgcolor=#204080><div align="center"><input type=radio name=rating value=1 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">1</font></div></td>
  <td bgcolor=#202F70><div align="center"><input type=radio name=rating value=2 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">2</font></div></td>
  <td bgcolor=#3F2060><div align="center"><input type=radio name=rating value=3 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">3</font></div></td>
  <td bgcolor=#5F2050><div align="center"><input type=radio name=rating value=4 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">4</font></div></td>
  <td bgcolor=#7F1F4F><div align="center"><input type=radio name=rating value=5 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">5</font></div></td>
  <td bgcolor=#90103F><div align="center"><input type=radio name=rating value=6 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">6</font></div></td>
  <td bgcolor=#B0102F><div align="center"><input type=radio name=rating value=7 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">7</font></div></td>
  <td bgcolor=#CF0F1F><div align="center"><input type=radio name=rating value=8 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">8</font></div></td>
  <td bgcolor=#E0000F><div align="center"><input type=radio name=rating value=9 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">9</font></div></td>
  <td bgcolor=#F00000><div align="center"><input type=radio name=rating value=10 
onclick="this.form.submit()"><BR><font size=1 color="#FFFFFF">10</font></div></td>
  <TD></TD>
 </tr>
 <input type=hidden name="honID" value="<?php echo $honID; ?>">
 <?php 
  $excludeList = $excludeList . "," . $honID;  //add the current image/row to the 
excludelist so you don't get duplicates until you cycle all the way through all the 
images
 ?>
 <input type="hidden" name="excludeList" value="<?php echo $excludeList; ?>">
 <input type=hidden name="action" value="rateIt">
</form>
 <TR><TD colspan="12"><div align="center">
 
 <!-- here is the new image to rate -->
 
  <IMG src="hotornot/<?php echo $image; ?>" width="250" height="250" border="1"></div>
<?php 
} //end no more images check
?>
  </TD>
 </TR>
</TABLE>

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to