This is a guestbook script, that stores all records in a MYSQL database. Displays records by pages. Highly configurable interface. For more information contact me at: nerd@kic.kmtn.ru See demo of the script at: http://php.inc.ru
By : lyonchik
<?
/********************************************************************************
Guestbook by lyonchik: nerd@kic.kmtn.ru
Contact me to report bugs, give your comments or
to develop your own personalized Web applications.
This is a simple guestbook. It consists only of one file.
All you need to do is create a MYSQL database table and set the variables below
to conform to your settings and that's it.
The sample query to create a table should be:
"CREATE TABLE guestbook (id int(5) NOT NULL auto_increment, name varchar(20),
email varchar(20), message text, date datetime, PRIMARY KEY (id))"
And the guestbook is ready to go. Enjoy!
You can freely distribute this code. For any suggestions and comments write to:
'nerd@kic.kmtn.ru'. Feel free to email me URLs where this guestbook works,
I would love to hear that my work is appreciated.
*********************************************************************************/
// Define MYSQL server information
$server = 'localhost'; // MYSQL server;
$user = ''; // User to connect to MYSQL server;
$password = ''; // Password;
$database = 'database name'; // The name of the database;
$table = 'guestbook'; // The name of your database table;
// Define page layout variables
$guestbook_name = "My guestbook page"; // Guestbook page name;
$titlecolor = 'black'; // Title font color;
$tablewidth = "90%"; // Table width in pixels or percentage;
$bgcolor = '#AAAAAA'; // Table background color value (name of hex equivalent);
$bordercolor = '#000000'; // Table border color value (name of hex equivalent);
$bordersize = 5; // Table border size;
$cellspacing = 0; // Table cellspacing value;
$cellpadding = 5; // Table cellpadding value;
$messagecellcolor = '#BBAAAA'; // message cell color;
$namecolor = '#0000EE'; // name font color;
$messagecolor = '#000099'; // message font color;
$mainfont = '#000033'; // main text font color;
$maxshow = 10; // Number of messages to display per page;
?>
<HTML>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<HEAD>
<TITLE>
<?
echo $guestbook_name;
?>
</TITLE>
<script language="javascript">
function checkForm()
{
if ((document.forms.myGB.name.value == '') || (document.forms.myGB.message.value == ''))
{
alert('Fill in required fields!');
}
else {
document.forms.myGB.submit();
}
}
</script>
</HEAD>
<?
echo "<BODY bgcolor=" . $bgcolor . ">";
echo "<div align=center><h1><font color=" . $titlecolor . ">" . $guestbook_name . "</font></h1>";
if (isset($message))
{
if ($email == "")
{
$email = "no_email";
}
mysql_connect ($server, $user, $password) or die ("Can't connect!");
mysql_select_db ($database) or die ("Can't open database!");
$sql = "INSERT INTO $table (name, email, message, date) VALUES ('$name', '$email', '$message', NOW())";
$result = mysql_db_query($database, $sql);
if ($result)
echo "<meta http-equiv='Refresh' content='0; URL=" . $PHP_SELF . "'>";
else
echo "Error! Check the form!";
mysql_close();
}
if (!isset($show))
{
$show = 0;
}
mysql_connect($server, $user, $password) or die ("Can't connect!");
mysql_select_db($database) or die ("Can't open database!");
$sql = "SELECT * FROM $table ORDER BY id DESC";
$result = mysql_db_query($database, $sql);
if ($result)
{
$count = mysql_num_rows($result);
$sqlshow = "SELECT * FROM $table ORDER BY id DESC LIMIT $show, $maxshow";
$result = mysql_db_query($database, $sqlshow);
?>
<table width=<? echo $tablewidth ?> cellspacing=<? echo $cellspacing ?> cellpadding=<? echo $cellpadding ?> border=<? echo $bordersize ?> bordercolor=<? echo $bordercolor ?>>
<?
while (($myrow = mysql_fetch_array($result)))
{
echo "<tr><td colspan=2 valign=top bgcolor=" . $messagecellcolor . "><font color=" . $messagecolor . ">Sent by <b>" . htmlspecialchars($myrow["name"]) . "</b><i>, " . $myrow["date"] . "</i><br>Email: <a href=mailto:" . htmlspecialchars($myrow["email"]) . ">" . htmlspecialchars($myrow["email"]) . "</a><br><br>" . htmlspecialchars($myrow["message"]) . "</font></td></tr>";
}
?>
</table>
<?
}
else
echo "Error!";
mysql_close();
echo "<font color=" . $mainfont . ">";
echo "<br>";
$pages = $count / $maxshow;
if ($pages < 1)
{
$pages = 1;
}
if ($pages / (int) $pages <> 1)
{
$pages = (int) $pages + 1;
}
else
{
$pages = $pages;
}
$pagenow = ($show/$maxshow + 1);
echo "Page " . $pagenow . " of " . $pages . "<br>";
$next = $show + $maxshow;
$previous = $show - $maxshow;
if ($pages <> 1)
{
if ($previous < 0)
{
echo "<a href=" . $PHP_SELF . "?show=" . "$next" . ">";
echo "<acronym title='Next " . $maxshow . " records'>>>></acronym></a> ||";
}
elseif ($next >= $count)
{
echo "<a href=" . $PHP_SELF . "?show=" . "$previous" . ">";
echo "<acronym title='Previous " . $maxshow . " records'><<<</acronym></a> ||";
}
else
{
echo "<a href=" . $PHP_SELF . "?show=" . "$previous" . ">";
echo "<acronym title='Previous " . $maxshow . " records'><<<</acronym></a>";
echo " | ";
echo "<a href=" . $PHP_SELF . "?show=" . "$next" . ">";
echo "<acronym title='Next " . $maxshow . " records'>>>></acronym></a> ||";
}
}
echo " Pages: ";
$i = 0;
while ($i < $pages)
{
$ri = $i + 1;
$showpage = $i * $maxshow;
echo "<a href=" . $PHP_SELF . "?show=" . $showpage . ">" . $ri . "</a> ";
$i++;
}
?>
<p>
(*) Required fields
<form name='myGB' action=<? echo $PHP_SELF ?> method='post'>
* Name:<br><input type='text' name='name' maxlength=20><br>
Email:<br><input type='text' name='email' maxlength=20><br>
* Message:<br><textarea name='message' rows=5 cols=30></textarea><br>
<a href="javascript:checkForm()">Send</a>
</form>
</font>
</div>
</BODY>
</HTML>
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |
More Content Management Code Articles
More By Codewalkers
developerWorks - FREE Tools! |
Hear how IBM Rational Project and Portfolio Management integrated solutions help teams put the right tools and processes in place to maximize the effectiveness and efficiency of project teams and ensure that the business vision is being executed correctly. Learn how to automate and integrate requirements prioritization, top-down project planning, communications and controls, and methodology deployment to keep your scope, costs, and schedules under control. Tackle with an end-to-end approach the management of scope and scope changes, usage of methodology to control and empower project teams, and optimization of resources to align activity costs with the overall project plan. FREE! Go There Now!
|
|
|
|
Download the IBM WebSphere Portal V6.1 beta code and learn more about the rich features and enhancements in IBM WebSphere Portal V6.1. WebSphere Portal provides a composite application or business mashup framework and the advanced tooling needed to build flexible, SOA-based solutions, and scalability to meet the needs of any size organization. FREE! Go There Now!
|
|
|
|
Visit IBM developerWorks to download a free trial of the latest release of IBM Lotus Sametime Standard V8.0. Lotus Sametime Standard V8.0 is a platform for unified communications and collaboration that combines security features with an extensible, open solution including integrated Voice over IP, geographic location awareness, mobile clients, and a robust Business Partner community offering telephony and video integration. FREE! Go There Now!
|
|
|
|
As systems increase in complexity, communication between systems and software teams becomes more and more difficult. Now, there’s a way to improve product quality and communication.<br />Read the “Model Driven Systems Development” white paper to see how. Also included in this kit are more educational white papers, customer examples, tutorials, informative Webcasts, and best practices for designing, building and managing systems.<br /> FREE! Go There Now!
|
|
|
|
Learn how Rational Build Forge can extend a simple compile and package build process by adding customization and deployment capability. Go from a manual method to automating: checking for code changes; getting the latest source; compiling and packaging; customizing; copying to and restarting a deployment server; and sending e-mail notification that a new version is available. FREE! Go There Now!
|
|
|
|
Ken Krugler, co-founder of code search company Krugle, and Laura Merling, vice president of Marketing and Business Development for Krugle, join to talk about the ins and outs of code search and what it means as a new feature for developerWorks users. FREE! Go There Now!
|
|
|
|
Join this Rational Talks to You teleconference on December 4 at 1:00 pm ET to discuss how Rational Method Composer can help meet your compliance objectives. Get your questions answered! FREE! Go There Now!
|
|
|
|
This whitepaper provides areas to consider when evaluating any software configuration management solution. It addresses how the IBM solutions (Rational ClearCase and Rational ClearQuest) meet the needs and requirements of both project leaders and developers to provide successful Software Change and Configuration Management. FREE! Go There Now!
|
|
|
|
Visit IBM developerWorks to try the IBM SOA Sandbox for process. The SOA Sandbox for process focuses on providing a trial environment with the necessary tooling and components required to gain a better understanding of business processes and how to best improve existing business processes to derive value quickly. FREE! Go There Now!
|
|
|
|
Join this webcast to learn how IBM Rational's Functional Testing solution enables you to implement automation your way, at your pace, with your existing staff. In this webcast, you’ll learn how you can eliminate redundancy of manual test scripts, reduce errors, and increase test coverage through test automation. After this presentation you will understand how IBM Rational Functional Testing solution can streamline your manual testing and make test automation easily attainable. FREE! Go There Now!
|
|
|
|
All FREE IBM® developerWorks Tools! |