PHPBuilder - Random Quote Generator



RSS Twitter
Snippets Html

Random Quote Generator

by: Jose Luis Pellicer
|
July 17, 2000

Version: 1.0

Type: Function

Category: HTML

License: GNU General Public License

Description: This script selects one random quote from a MySQL database. Allows the use of HTML tags, so it can be used to display banners, images, bg images, text, links, etc. Features a marker that prevents displayed quotes to repeat themselves until all quotes have been displayed.



<?PHP
  /*
  *  tips.php3
  *  This is a not-so-small script to display random quotes.
  *  The quotes are stored in a MySQL table named "quote" with 3 fields: q_id, q_quote and q_mark.
  *  The program will select ONE RANDOM quote from the database and mark it as read (q_mark = 1),
  *  this will prevent a quote from repeting itself after consecutive page loads.
  *  The script is conceived so special characters and HTML tags can be used inside the quotes.
  *  Configure it by changing host, user, password and database in lines 15 and 16 to match your settings.
  *  If you like it or modify it in any way so that it is more efficient, less lines or add any other feature,
  *  please let me know: Jose Luis jlpellicer@bigfoot.com
  *  Have fun!
  */
  
  // initialize variable that will hold the quote.
  $quote = "";
  // establish connection to the database containing the quotes.
  $db = mysql_connect("host", "user", "password") or die ("Unable to connect to database.");
  mysql_select_db("database") or die ("Unable to select database.");
  // select the quotes that have not been displayed (q_mark = 0).
  $sql = "SELECT * from quote WHERE q_mark = 0";
  $result = mysql_query($sql);
  // simple error checking
  if (mysql_errno()>0) {
    echo "<BR>\n<FONT COLOR=\"#990000\">".mysql_errno().": ".mysql_error()."<BR>\n";
    exit;
  }
  // put the number of rows found into $max.
  $max = mysql_num_rows($result)-1;
  // if we do not find an available quote, then mark them (q_mark) to 0 and select again.
  if ($max < 0) {
    $result = mysql_query("UPDATE quote SET q_mark = 0");
      if (mysql_errno()>0) {
        echo "<BR>\n<FONT COLOR=\"#990000\">".mysql_errno().": ".mysql_error()."<BR>\n";
        exit;
      }
    $sql = "SELECT * from quote WHERE q_mark = 0";
    $result = mysql_query($sql);
    if (mysql_errno()>0) {
      echo "<BR>\n<FONT COLOR=\"#990000\">".mysql_errno().": ".mysql_error()."<BR>\n";
      exit;
    }
    $max = mysql_num_rows($result)-1;
  }
  // generate a random number between 0 and the number of quotes available.
  mt_srand((double)microtime()*1000000);
  if ($max > 0) {
    $random = mt_rand(0,$max);
  } else {
    $random = 0;
  }
  // select the random quote and store the text in $quote and it's id in $id.
  for ($x=0;$x<=$random;$x++) {
    $myrow = mysql_fetch_array($result);
  }
  $id = $myrow[0];
  $quote = $myrow[1];
  // mark this selected quote as displayed (q_mark = 1).
  $result = mysql_query("UPDATE quote SET q_mark = 1 WHERE q_id = '$id'");
  if (mysql_errno()>0) {
    echo "<BR>\n<FONT COLOR=\"#990000\">".mysql_errno().": ".mysql_error()."<BR>\n";
    exit;
  }
  // convert to HTML special characters, you know, like, and so on.
  $quote = nl2br(htmlentities($quote));
  // finally replace the "&lt;" and "&gt;" for < and > so you that can use tags.
  $quote = ereg_replace ("&lt;", "<", $quote);
  $quote = ereg_replace ("&gt;", ">", $quote);
  echo $quote."<BR>\n";
?>

Comment and Contribute

Your comment has been submitted and is pending approval.

Author:
Jose Luis Pellicer

Comment:



Comment:

(Maximum characters: 1200). You have characters left.