Hi, all, I'm a total newbie to php and just couldn't make the following php file(grabbed at awtrey.com, basic php/mysql code) running at http://weiwang.freeshell.org/guest.php I guess I didn't elaborate what the problem was. The idea of the program was simply a guest message list. And when all 3 text fields get input and "Add" is clicked, one entry should be put into the table "guests" and displayed at the bottom of the page. Now the problem is no record is inserted at all. And neither of the die() comes out. What is the problem? I've read some php tutorials but I think I must've missed a very fundamental point that led to the failure of this code. I'd highly appreciate it if anyone could drop me a line with any advice.
Many thanks, Wei Wang <? /* PHP Guestbook 1.1 Written by Tony Awtrey Anthony Awtrey Consulting See http://www.awtrey.com/support/dbeweb/ for more information 1.1 - Oct. 20, 1999 - changed the SQL statement that reads data back out of the database to reverse the order putting the newest entries at the top and limiting the total displayed by default to 20. Added the ability to get the complete list by appending the URL with '?complete=1'. Added the code and additional query to count and list the total number of entries and included a link to the complete list. 1.0 - Initial release This is the SQL statement to create the database required for this application. CREATE TABLE guests ( guest_id int(4) unsigned zerofill DEFAULT '0000' NOT NULL auto_increment, guest_name varchar(50), guest_email varchar(50), guest_time timestamp(14), guest_message text, PRIMARY KEY (guest_id) ); */ //////////////////////////////// // This checks to see if we need to add another guestbook entry. //////////////////////////////// if (($REQUEST_METHOD=='POST')) { //////////////////////////////// // This loop removed "dangerous" characters from the posted data // and puts backslashes in front of characters that might cause // problems in the database. //////////////////////////////// for(reset($HTTP_POST_VARS); $key=key($HTTP_POST_VARS); next($HTTP_POST_VARS)) { $this = addslashes($HTTP_POST_VARS[$key]); $this = strtr($this, ">", " "); $this = strtr($this, "<", " "); $this = strtr($this, "|", " "); $$key = $this; } //////////////////////////////// // This will catch if someone is trying to submit a blank // or incomplete form. //////////////////////////////// if ($name && $email && $message ) { //////////////////////////////// // This is the meat of the query that updates the guests table //////////////////////////////// $query = "INSERT INTO guests "; $query .= "(guest_id, guest_name, "; $query .= "guest_email, guest_time, guest_message) "; $query .= "values(0000,'$name','$email',NULL,'$message')"; mysql_pconnect("ol.freeshell.org","weiwang","password") or die("Unable to connect to SQL server"); mysql_select_db("weiwang") or die("Unable to select database"); mysql_query($query) or die("Insert Failed!"); echo "<p>Hello World</p>"; //die("after query"); } else { //////////////////////////////// // If they didn't include all the required fields set a variable // and keep going. //////////////////////////////// $notall = 1; } } ?> <!-- Start Page --> <HTML> <HEAD> <TITLE>Add A Message</TITLE> </HEAD> <BODY BGCOLOR="white"> <H1>Add a Message</H1> <!-- Let them know that they have to fill in all the blanks --> <? if ($notall == 1) { ?> <P><FONT COLOR="red">Please answer all fields</FONT></P> <? } ?> <!-- The bits of PHP in the form allow the data that was already input to be placed back in the form if it is filled out incompletely --> <FORM METHOD="post" ACTION="guest.php"> <PRE> Your Name: <INPUT TYPE="text" NAME="name" SIZE="20" MAXLENGTH="50" VALUE="<? echo $name; ?>"> Your Email: <INPUT TYPE="text" NAME="email" SIZE="20" MAXLENGTH="50" VALUE="<? echo $email; ?>"> Enter Message: <TEXTAREA NAME="message" COLS="40" ROWS="8" WRAP="Virtual"> <? echo $message; ?> </TEXTAREA> <INPUT TYPE="submit" VALUE="Add"> </PRE> </FORM> <HR> <? //////////////////////////////// // This is where we connect to the database for reading. //////////////////////////////// mysql_pconnect("ol.freeshell.org","weiwang","password") or die("Unable to connect to SQL server"); mysql_select_db("weiwang") or die("Unable to select database"); //////////////////////////////// // This is where we count the number of entries. //////////////////////////////// $query = "SELECT COUNT(*) FROM guests"; $numguests = mysql_query($query) or die("Select Failed!"); $numguest = mysql_fetch_array($numguests); ?> <!-- This is where we report the total messages. --> <P> <A HREF="guest.php?complete=1"><? echo $numguest[0]; ?> people</A> have left me a message. </P> <? //////////////////////////////// // This is where we decide to get all the entries or just the last 20. // This variable is set by just adding a '?complete=1' after the URL. //////////////////////////////// if ($complete == 1) { $query = "SELECT * FROM guests ORDER BY guest_time DESC"; } else { $query = "SELECT * FROM guests ORDER BY guest_time DESC LIMIT 20"; } $guests = mysql_query($query) or die("Select Failed!"); //////////////////////////////// // This will loop as long as there are records waiting to be processed. // Notice the plain HTML inside the while loop structure. PHP is flexable // enough to allow you to break into and out of the "code" at any point. //////////////////////////////// while ($guest = mysql_fetch_array($guests)) { ?> <TABLE BORDER="1" WIDTH="500"> <TR><TD> Name: <? echo $guest['guest_name']; ?> </TD><TD> Email: <A HREF="mailto:<? echo $guest['guest_email']; ?>"> <? echo $guest['guest_email']; ?></A> </TD><TD> <? //////////////////////////////// // The database has a timestamp record type that we can use to show the // date the guestbook was filled out. //////////////////////////////// $datefromdb = $guest['guest_time']; $year = substr($datefromdb,0,4); $mon = substr($datefromdb,4,2); $day = substr($datefromdb,6,2); $hour = substr($datefromdb,8,2); $min = substr($datefromdb,10,2); $sec = substr($datefromdb,12,2); $orgdate = date("l F dS, Y h:i A",mktime($hour,$min,$sec,$mon,$day,$year)); ?> Date: <? echo $orgdate; ?> </TD></TR> <TR><TD COLSPAN="3"> <? echo $guest['guest_message']; ?> </TD></TR> </TABLE> <BR> <? } ?> </BODY> </HTML>