בניית מערכת מערכת חדשות

‏ • 28 ביוני, 2003




נתחיל בכך שיצור מסד נתונים חדש.
למסד נתונים נקרא News, ניצור טבלה בתוכו ונזין את הנתונים הבאים:

שם שדהסוג נתונים
IDמספור אוטומטי
Titleטקסט
Authorטקסט
Full_newsתזכיר

התוצאה תיראה לנו כך:



כעת נבנה טופס שדרכו נכניס נתונים לטבלה, ניצור דף חדש בשם Post_news.htm ונקליד לתוכו את הטקסט הבא:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28  

<html>
<head>
</head>
<body>
    <form method="post" action="add_news.asp">
    <table width="100%" height="1" border="0" cellpadding="6" cellspacing="0">
    <tr>
        <td width="90%" align="right">
            <input type="text" name="title">
        </td>
        <td width="10%" align="right">כותרת</td>
    </tr>
    <tr>
        <td align="right"><input type="text" name="author"></td>
        <td align="right">כותב</td>
    </tr>
    <tr>
        <td align="right"><textarea name="full_news" cols="60" rows="8"></textarea></td>
        <td align="right">החדשות עצמן</td>
    </tr>
    <tr>
        <td align="right"><input type="submit" value="שלח"></td>
        <td>&nbsp;</td>
    </tr>
    </table>
  </form>
</body>
</html>


בדף הנ"ל יצרנו טופס אשר ישלח לנו את הערכים שנכניס לדף הרצוי שבמקרה שלנו הוא add_news.asp

כעת נכין את הדף שיכניס את הנתונים לטבלה שלנו ניצור דף חדש בשם add_news.asp ונקליד לתוכו:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46  

<html>
<head>
</head>
<body >
<%
hap=0
for each name in Request.Form

hap = hap + INSTR(1, Request.Form(name), "מפגר", 1)
hap = hap + INSTR(1, Request.Form(name), "מכוער", 1)
hap = hap + INSTR(1, Request.Form(name), "אידיוט", 1)
Next

If hap > 0 Then
Response.write "<h2><center>שפה כזאת לא מורשת כאן</h2>"
Response.write "</body></html>"
Response.end
End If

%>

<%
title=Trim(Request.Form("title"))
full_news=Trim(Request.Form("full_news"))
author=Trim(Request.Form("author"))

If LEN(Author)=0 Then Author="חסוי"

full_news=REPLACE(full_news, vbCrlf, "<br>")
full_news=REPLACE(full_news, "[b]", "<b>")
full_news=REPLACE(full_news, "[/b]", "</b>")

sq="insert into news(full_news,title,author)values(`"&full_news&"`,`"&title&"`,`"&author&"`)"

path = server.mappath("news.mdb")
set c=server.createobject("ADODB.Connection")
c.open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" &path
c.Execute sq
%>
<h2><center>חדשות נוספו בהצלחה</h2>
  </tr>
</table>
</body>
</html>

בואו נבין ביחד את הקוד המסובך הזה, בחלקו הראשון עשינו סינון מילים (באותה הזדמנות אנ אגיד סליחה על המילים הבוטות)
הגדרנו מילה בשם hap ואמרנו שהיא שווה ל 0 אם יש לנו את הhap פלוס אחת מהמילים שרשמנו לו זה אומר ש hap גדול מאפס כי צורפה אליו המילה שהגדרנו לו
אז פשוט מאד רשמנו: אם hap גדול מ0 תרשום שפה כזאת לא מורשת כאן או כל מה שתחליטו לנכון.

כעת נעבור לקטע השני, קודם כל הגדרנו את השדות שבהן אנחנו מעוניינים (full_news, title, author) כדי שנוכל להשתמש בהן,
אחר כך רשמנו להחליף בשדה full_news לחיצת vbCrlf) enter) ב <br> כדי שההודעה תישמר בצורתה המקורית
עוד שימוש שאפשר לעשות זה החלפת תגים, לדוגמא כמו שעשיתי כאן במקום לרשום <b>
הרשמו פשוט [b] כמובן שאפשר לשנות את זה כרצונכם.


בקטע השלישי יש לנו שורה אחת שאומרת שאם השדה Author ריקה אז תוסף המילה הרצויה אוטומטית.

נעבור לקטע האחרון, הקטע האחרון מוכר לנו, הוא מכניס את השדות שלנו לתוך הטבלה, בסיום העמוד רשמנו את המשפט חדשות נוספו בהצלחה
כדי להיות בטוחים שהחדשות נוספו.


בואו נעשה ניסיון ובאותה הזדמנו נראה את מה שעשינו עד כה
נפתח את הדף post_news.htm ונקליד חדשות הינה דוגמא:


כפי שאתם רואים רשמתי את המילה "מפגר" וזה אומר שלhap שלנו נוספה מילה ולכן זה ירשום את המשפט "שפה כזאת לא מורשת כאן"
נראה את התוצאה שלנו:


יפה מאד, עשינו צנזור מילים, כעת נרשום הודעה בלי מילים בוטות הינה דוגמא:


זוהי בדיקת התגים, נראה אם בלחיצת אנטר בלבד בלי לרשום שני <br> עדיין נרד שורה,
והאם בלי לרשום את התגית <b> עדיין יהיה לנו כתב בולט נשלח את הנתונים ונראה את התוצאה:


נהדר, החדשות נוספו למסד הנתונים! כעת נכין דף שיציג את החדשות נקרא לו show_news.asp ונקליד לתוכו



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29  

<%

dim conn
set conn=server.createobject("adodb.connection")
dim ConnString
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &_
                          Server.MapPath("news.mdb") & ";"
conn.Open connString

dim rs,sql
set rs=server.CreateObject("adodb.recordset")
sql="select * from news"
rs.Open sql,conn

do while not rs.eof
   Response.Write "<div align=right>"
   Response.Write "<b>"& rs("title") &" </b>"
   Response.Write "<p>"
   Response.Write " "& rs("full_news") &" "
   Response.Write "<P>"
   Response.Write "מאת:"& rs("author") &" "
   rs.movenext
loop
Response.Write "</div>"
rs.Close
set rs=nothing
conn.Close
set conn=nothing
%>

וכעת נראה את התוצאה:



והינה התגים שלו עבדו, לשם המחשה טובה יותר ניתן לראות במסד הנתונים עצמו את הטקסט כפע שהוא במקור.
כעת ניצור דף שימחק את החדשות נקרא לו delete_news.asp ונקליד לתוכו:



1
2
3
4
5
6
7
8
9
10
11
12
13
14  

<%

ID = Request.QueryString("ID")
dbf=Server.MapPath ("news.mdb")
set my_conn= Server.CreateObject("ADODB.Connection")
my_Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" + dbf
MySql = "DELETE DistinctRow news.ID From news Where news.ID =" & ID & ";"
my_Conn.Execute MySql
my_Conn.close
Set my_Conn = Nothing
%>
<center>
<h2>
הודעה נמחקה בהצלחה

קודם כל הגדרנו את ה ID כדי שנוכל להשתמש בו, אחר כך אמרנו לו למחוק ממסד הנתונים news ובפנים מהטבלה news את השדה שמתאימה ל ID הרצוי.

כעת ניכנס לדף show_news.asp ונשנה אותה לדף הבא: (השינוי מתבטה רק בשורה אחת)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32  

<%

dim conn
set conn=server.createobject("adodb.connection")
dim ConnString
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &_
                          Server.MapPath("news.mdb") & ";"
conn.Open connString
dim rs,sql
set rs=server.CreateObject("adodb.recordset")
sql="select * from news"
rs.Open sql,conn

do while not rs.eof
   Response.Write "<div align=right>"
   Response.Write "<b>"& rs("title") &" </b>"
   Response.Write "<p>"
   Response.Write " "& rs("full_news") &" "
   Response.Write "<P>"
   Response.Write "מאת:"& rs("author") &" "
   Response.Write "<br>"
   Response.Write "<a href=`delete_news.asp?ID=" & RS("ID") & "`>מחק הודעה זו</a>"
   rs.movenext
loop

Response.Write "</div>"

rs.Close
set rs=nothing
conn.Close
set conn=nothing
%>

נתנו קישור לדף המחיקה כולל ה ID של ההודעה וכך הוא יוכל לדעת איזו הודעה למחוק, הינה דוגמא:


תמונה זאת צולמה בעת מעבר על קישור המחיקה, הוא מראה שה ID של ההודעה הוא 7 במקרה הזה, כעת
נלחץ על הקישור ונראה את התוצאה:



ההודעה נמחקה בהצלחה, וכאן נגמר השיעור שלנו.

בהצלחה

תגיות: , ,

תגובות בפייסבוק