php_mysql_apache [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

php_mysql_apache [Electronic resources] - نسخه متنی

Julie C. Meloni

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید







Creating the Input Forms and Scripts


Before you can add any posts, you must add a topic to the forum. It is common practice in forum creation to add the topic and the first post in that topic at the same time. From a user's point of view, it doesn't make much sense to add a topic and then go back, select the topic, and add a reply. You want the process to be as smooth as possible.

Listing 19.1 shows the form for a new topic creation, which includes a space for the first post in the topic.

Listing 19.1 Form for Adding a Topic


1: <html>
2: <head>
3: <title>Add a Topic</title>
4: </head>
5: <body>
6: <h1>Add a Topic</h1>
7: <form method=post action="do_addtopic.php">
8: <p><strong>Your E-Mail Address:</strong><br>
9: <input type="text" name="topic_owner" size=40 maxlength=150>
10: <p><strong>Topic Title:</strong><br>
11: <input type="text" name="topic_title" size=40 maxlength=150>
12: <P><strong>Post Text:</strong><br>
13: <textarea name="post_text" rows=8 cols=40 wrap=virtual></textarea>
14: <P><input type="submit" name="submit" value="Add Topic"></p>
15: </form>
16: </body>
17: </html>

Seems simple enoughthe three fields shown in the form, which you can see in Figure 19.1, are all you need to complete both tables; your script and database can fill in the rest. Save Listing 19.1 as something like addtopicl and put it in your Web server document root so that you can follow along.

Figure 19.1. The topic creation form.


To create the entry in the forum_topics table, you use the topic_title and topic_owner fields from the input form. The topic_id and topic_create_time fields will be filled in automatically. Similarly, in the forum_posts table, you use the post_text and topic_owner fields from the input form, and the post_id, post_create_time, and the topic_id fields will be filled in automatically. Because you need a value for the topic_id field to be able to complete the entry in the forum_posts table, you know that query must happen after the query to insert the record in the forum_topics table.

Listing 19.2 creates the script to add these records to the table.

Listing 19.2 Script for Adding a Topic


1: <?php
2: //check for required fields from the form
3: if ((!$_POST[topic_owner]) || (!$_POST[topic_title])
4: || (!$_POST[post_text])) {
5: header("Location: addtopicl");
6: exit;
7: }
8:
9: //connect to server and select database
10: $conn = mysql_connect("localhost", "joeuser", "somepass")
11: or die(mysql_error());
12: mysql_select_db("testDB",$conn) or die(mysql_error());
13:
14: //create and issue the first query
15: $add_topic = "insert into forum_topics values ('', '$_POST[topic_title]',
16: now(), '$_POST[topic_owner]')";
17: mysql_query($add_topic,$conn) or die(mysql_error());
18:
19: //get the id of the last query
20: $topic_id = mysql_insert_id();
21:
22: //create and issue the second query
23: $add_post = "insert into forum_posts values ('', '$topic_id',
24: '$_POST[post_text]', now(), '$_POST[topic_owner]')";
25: mysql_query($add_post,$conn) or die(mysql_error());
26:
27: //create nice message for user
28: $msg = "<P>The <strong>$topic_title</strong> topic has been created.</p>";
29: ?>
30: <html>
31: <head>
32: <title>New Topic Added</title>
33: </head>
34: <body>
35: <h1>New Topic Added</h1>
36: <?php echo $msg; ?>
37: </body>
38: </html>

Lines 37 check for the three required fields we need to complete both tables. If either one of these fields is not present, the user is redirected to the original form.

Lines 1012 form the database connection, which should be familiar to you by now. Lines 1517 create and insert the first query, which adds the topic to the forum_topics table. Note that the first field is left blank, so the automatically incrementing number is added by the system. Similarly, the now() function is used to time stamp the record with the current time. The other fields in the record are completed using values from the form.

Line 20 shows the use of a very handy function: mysql_insert_id(). This function retrieves the primary key ID of the last record inserted into the database by this script. In this case, mysql_insert_id() gets the id value from the forum_topics table, which will become the entry for the topic_id field in the forum_posts table.

Lines 2325 create and insert the second query, again using a mixture of information known and supplied by the system. Line 28 simply creates a message for the user, and the rest of the script rounds out the display.

Save this listing as do_addtopic.phpthe name of the action in the previous scriptand place it in the document root of your Web server. Complete the form and then submit it, and you should see the New Topic Added message. Figures 19.2 and 19.3 show the sequence of events.

Figure 19.2. Adding a topic and first post.


Figure 19.3. Successful addition of a topic and first post.


In the next section, you'll put together two more pieces of the puzzle: displaying the topics and posts, and replying to a topic.


/ 323