الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سلسلة دروس ال asp من الصفر إلى الاحتراف؟

رائج
بدأه عبدالله جابر شقليه في 8 مايو 2004 · 141 رد · 77,492 مشاهدة · في منتدى تصميم صفحات الويب
مشاركة: واتساب X فيسبوك تيليجرام
#26

السلام عليكم

تكمله إلى الدرس الرابع للكائن Request الان سوف أقوم بشرح خصائص هذا الكائن

1 الكوكيز (Cookie):

ما هي cookies(الكعكات)؟

الكعكات غالباً تستخدم لتعريف المستخدم، والكعكات ملف صغير يكون موجود على السيرفر على كمبيوترك الخاص، وكل مره نفس الكمبيوتر عندما يطلب الصفحة مع المتصفح، فسيقوم الكمبوتر بإرسال الكعكات أيضاً.

كيف يتم إنشاء الكعكات؟

الأمر Response.cookies هو الذي يستخدم في إنشاء الكعكات.

ملاحظة: هذا الأمر يكتب قبل الوسم <HTML>.

في المثال التالي، سوف أنشاء cookie واسمها "firsname" وقيمتها " abd" :

  <%
response.cookie("firstname")="abd"
%>

وتستطيع أن تحدد صلاحية إنتهاء هذا cookie:

  <%
response.cookies("firstname")="abd"
 response.cookies("firstname").Expires=#may 10,2003#
%>
<html>
<body>
</body>
</html>

سوف تلاحظ أنه لا يوجد شئ، وذلك لأننا قمنا فقط بإنشاء cookie ولم نقم باسترجاع قيمته، ولكن سوف تجد في ملف cookies على جهازك الخاص بك ملف صغير يحتوي على اسم cookie وقيمته وهذا الملف تجده على المسار التالي اذا كان الوندوز موجود على قرص الصلب c.

C:\Documents and Settings\abdullah\Cookies

حيث أن abdullah هو اسم الجهاز الخاص بي أنا، أما أنت فضع اسم الجهاز الخاص بك الذي قمت بتعريفه عندما قمت بإنزال الوندوز، وإن لم يكن الوندوز على القرص c فقط ضع بدل c اسم القرص الصلب الذي يوجد عليه الوندوز.

كيف يتم استرجاع القيم من cookie?

الأمر request.cookies يستخدم لإسترجاع قيم cookie، والمثال التالي يوضح ذلك:

 <html>
<body>
<%
 request.cookies("firstname")
response.write("<center><B>"&request.cookies("firstname")&"</b></center>")
%>
</body>
</html>

طبعاً لن يكون هناك نتيجة، وذلك لأنه قمنا بتحديد تاريخ إنتهاء فعالية الكوكي، بتاريخ فائت.

الكعكات مع المفاتيح?

- إذا كانت الكعكات تحتوي على عدد من القيم، فعندها نقول بأن الكعكات تمتلك مفاتيح.

في المثال التالي، سوف أقوم بإنشاء مجموعة من الكعكات واسمها "user"، و"cookie "user يمتلك مفاتيح تحتوي على بيانات "user".

 <%
response.cookies("user") ("firstname")="Abdullah"
response.cookies("user") ("firstname")="Jaber"
response.cookies("user") ("firstname")="mahmoud"
response.cookies("user") ("firstname")="Shaqlaih"
%>
<html>
<body>
</body>
</html>

في هذا المثال سوف يرسل السيرفر لديك كل هذه الكعكات إلى المستخدم.

قم بحفظ هذا الكود باسم aspkeys.asp، وقم بقراءته على متصفحك حتى يتم إنشاء cookie.

لقد تم إنشاء الكعكات الأن، وفي المثال التالي سوف نقوم بقراءة القيم المخزنه داخل الكعكات:

<html dir="rtl">
<body>
<%
dim x,y
for each x in request.cookies
response.write("<p>")
if request.cookies(x).haskeys then
for each y in request.cookies(x)
response.write("<center><b>")
response.write(x&":"&y&"="&request.cookies(x)(y))
response.write("</br>")
response.write("</b></center>")
next
else response.write(x&"="&request.cookies(X)&"</br>")
end if
response.write"</p>"
next
%>
</body>
</html>

والناتج كالتالي:

user:firstname=Abdullah

user:lastname=shaqlaih

user:contry=palestine

user:age=22

ملاحظة: عند كتابة هذا الكود سوف يقوم بطباعة جميع cookie الموجوده على جهازك الخاص بك سواء كانت يوجد لها مفاتيح أو لا يوجد لها، أي لو كنت انت مسجل في اي موقع، وكان يتبع نظام الكوكيز، سوف تظهر لك جميع ملفات الكوكيز التي لديك.

مثال كيف يتم تخزين اسم المستخدم، وكلمة المرور داخل الكوكيز، عند إدخالها من الفروم؟

الصفحة التالية تحتوي على الفورم، لإدخال اسم المستخدم وكلمة المرور:

<form method="POST">
  <p>اسم المستخدم: <input type="text" name="username" size="20"><br>
 كلمة المرور:<input type="password" name="password" size="20"></p>
  <p><input type="submit" value="Submit" name="B1"></p>
</form>

هنا سوف سوف يتم تخزينهم داخل الكوكيز:

response.cookies("username")=request("username")
response.cookies("password")=request("password")
response.cookies("username").expires=date+1
response.cookies("password").expires=date+1

اعتقد المثال واضح ولا يحتاج للشرح، لكن عند تحديد صلاحية الإنتهاء date+1 تعني بأنه فعال من تاريخ اليوم + يوم واحد.

مثال: كيف يتم قراءة كوكيز محدد؟

request.cookies("username")

وبذلك نكون قد انتهينا من هذه الخاصية،

وان شاءلله في الدرس القادم سوف نكمل باقي الخصائص

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#27

السلام عليكم

الخاصية الثانية

2- ServerVariables:

- تستخدم لاسترجاع قيم متغيرات السيرفر.

الصيغة:

  request.servervariables (server_variable)

server_variable: اسم متغير السيرفر الذي نريد استرجاع قيمته.

مثال: في بعض الأحيان نتحاج إلى أن نعرف بعض المعلومات عن زوار الموقع أو عن السيرفر المستضيف للموقع، وهذا يتم عن طريق ServerVaribles، وتكون النتيجة على هيئة نص:

 <html dir="rtl">
<body>
<p>رقم (<span lang="en-us">IP</span>):<br>
 <%Response.Write(Request.ServerVariables("remote_host"))%></p>

<p>المنهج المستخدم:<%Response.Write(Request.ServerVariables("request_method"))%></p>

<p>اسم السيرفر:<%Response.Write(Request.ServerVariables("server_name"))%></p>
<p>رقم البروت الذي طلبته:<%Response.Write(Request.ServerVariables("server_port"))%></p>

<p>برنامج الوب المستخدم على السيرفر:<%Response.Write(Request.ServerVariables("server_software"))%></p>

</body>

</html>

وسوف يكون الناتج على سبيل المثال:

رقم (IP):217.21.4.46
المنهج المستخدم::Get
اسم السيرفر:arabteam2000.com
رقم البورت الذي طلبته::80
برنامج الوب المستخدم على السيرفر: Microsoft-IIS/5.0

هنا سوف اضع بعض متغيرات server_variable:

AUTH_TYPE:هي الطريقة الذي يستخدمه السيرفر للمصادقة على اسم المستخدم.

CONTENT_LENGTH:طول الفترة الزمنية عند الطلب

CONTENT_TYPE: نوع البيانات المطلوبة

GATEWAY_INTERFACE:نسخة السي جي أي المستخدمة في السيرفر

LOGON_USER:اسم المستخدم في حال استخدام الشبكة الداخلية للويندوز ان تي .

PATH_INFO:المسار الافتراضي للملف المطلوب على السيرفر

PATH_TRANSLATED:المسار الطبيعي للملف الملطوب على السيرفر

QUERY_STRING:نوع الاستعلام المستخدم من خلال الواصفة <A>

REMOTE_ADDR:رقم الاي بي (ip) للجهاز الزائر .

REMOTE_HOST:اسم الجهاز الزائر Computer Name .

REQUEST_METHOD:النوع المستخدم هل هو GET أو POST أو PUT .

SCRIPT_MAP:اسم النطاق Domain للصفحة .

SCRIPT_NAME:اسم الملف المطلوب مع المسار الافتراضي له

SERVER_NAME:اسم السيرفر .

SERVER_PORT:رقم البورت الذي تم الطلب من خلاله .

SERVER_PORT_SECURE:إذا كان (1) فهو مؤمن أما إذا كان (0) فهو غير مؤمن

SERVER_PROTOCOL: نوع البروتوكول المستخدم

SERVER_SOFTWARE:برنامج الوب المستخد على السيرفر مثال Microsoft IIS 4

URL:الملف المطلوب ضمن المسار الافتراضي له

هذه إحدى المتغيرات التي نستخدمها، وهناك الكثير من المتغيرات، ومعظمها أنا أجلها، ولكن سوف أقوم بكتابة لكم الكود التالي، حيث هذا الكود سوف يقوم لك باستعراض جميع المتغيرات التي تستخدم مع server_variable

<%
for each x in Request.ServerVariables
  response.write(x & "<br />")
next
 %>

وبذلك نكون قد انتهينا من هذه الخاصية.

3- الخاصية TotalBytes:

تستخدم لاسترجع العدد الكلي للبياتات المرسلة من قبل المستخدم.

الصيغة:

  Varbytes=Request.Totalbytes

مثال: إيجاد العدد الكلي للباياتات المرسلة من قبل المستخدم؟

<html dir="rtl">
<body>
<%
name=request.form("name")
%>
<form method="POST" action="exbytes.asp">
<p dir="rtl" align="center"> الاسم :<input type="text" name="name" size="20"><br>
<input type="submit" value="إرسال"></p>
</form>
<%
if name<>"" then
response.write("<center><B>عدد البياتات التي قمت بإرسالها:"&request.totalbytes&"</b></center>")
end if
%>
</body>
</html>

الأمر request.totalbytes، يقوم باسترجاع عدد الباياتات المرسلة من قبل المستخد.

وبذلك نكون قد انتيهنا من الدرس الرابع للكائن Request.

وان شاءلله في الدرس القادم، سوف أشرح لكم طريقتين لإرسال بريد إلكتروني.

ومن بعدها ننتقل إلى الدرس الخامس.

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#28

السلام عليكم

سوف أقوم الان بشرح طريقة لعملية إرسال الإيميل باستخدام طريقة SMTPsvg.Mailer

سوف أقوم الأن بشرح لكم كيفية تصميم صفحة راسلنا بلغة ال ASP. حيث أنها تنقسم إلى صفحتين كالتالي:-

- الصفحة الأولى send_email.asp: تحتوي فقط على الفورم البريدي الذي سوف يتم تعبة الحقول لإرسال الرساله، والصفحة التي سوف يتم إرسال إليها محتوى صفحة راسلنا وهي mail.asp:

<form method="POST" action="mail.asp"  >
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#0099CC" width="100%" id="AutoNumber3">
<tr>
<td width="39%"><b><font size="2" face="Arial"> الاسم:</font></b></td>
<td width="61%"><input type="text" name="name" size="49"></td>
</tr>
<tr>
<td width="39%"><b><font size="2" face="Arial"> البريد الإكتروني:</font></b></td>
<td width="61%"><input type="text" name="email" size="49"></td>
</tr>
<tr>
<td width="39%"><b><font size="2" face="Arial"> الموضوع:</font></b></td>
<td width="61%"><input type="text" name="sub" size="49"></td>
</tr>
<tr>
<td width="39%"><b><font size="2" face="Arial"> نص الرساله:</font></b></td>
<td width="61%"><textarea rows="12" name="masseg" cols="37"></textarea></td>
</tr>
</table>
<p align="center"><b><font size="1" face="Arial">
<input type="submit" value="راسلنا"></font></b></p>
</form>

توضيح أسماء الحقول:- الاسم: ضع اسم الحقل له name.

- البريد الأكتروني: ضع اسم الحقل له email.

- الموضوع: ضع اسم الحقل له sub.

- نص الرساله: ضع اسم الحقل له messag.

الصفحة الثانية mail.asp: تحتوي فقط على كود ال ASP الذي سوف يتم عن طريقه إرسال الرساله، وسوف يكون الكود ال ASP كالتالي:

<%

Set Mailer = Server.CreateObject("SMTPsvg.Mailer") 


Mailer.CustomCharSet = "windows-1256" 

Mailer.FromName = Request.form("name") 

Mailer.FromAddress = Request.form("email") 

Mailer.RemoteHost = "mail.arabteam2000.com" 

Mailer.AddRecipient "عبدالله جابر شقليه" ,"info@arabteam2000.com" 

Mailer.Subject = request.form("sub") 

Mailer.BodyText = request.form("masseg") 

if Mailer.SendMail then 

response.write("تم إرسال البريد الإلكتروني بنجاح")

else 

Response.Write "<center><b><font color='000080'>عذراً... لم يتم إرسال الرساله لحدوث خطأ ما في إدخال البيانات ... أو أنا عنوان البريد المدخل غير صحيح.</font></b></center> " 

response.write Mailer.Response
end if

%>

شرح الكود:

-(" Set Mailer = Server.CreateObject("SMTPsvg.Mailer: هنا تضع قيمة المتغير mailer تساوي الطريقه التي سوف يتم إرسال الإيميل عن طريقها.

- "Mailer.CustomCharSet = "windows-1256 : هنا تضع اللغه العربيه إذا كنت تريد إرسال رساله باللغه العربيه.

- Mailer.FromName: هنا تضع إسم مرسل البريد الإلكتروني التي سوف يتم وضع قيمتها عندما تستقبل قيمة الحقل name من الفورم كما موضح بالأعلى.

- Mailer.FromAddress : هنا تضع عنوان البريد الإلكتروني لمرسل الرساله التي سوف يتم وضع قيمتها من حقل email من الفورم كما موضح أعلى.

- Mailer.RemoteHost:اسم الميل سيرفر الخاص بموقعك.

- Mailer.AddRecipient : هنا تضع اسمك وعنوان البريد الإكتروني الخاص في موقعك ، الذي سوف يتم وصول الرساله إليك عن طريقه.

- Mailer.Subject: هنا تضع عنوان الرساله التي سوف يتم وضع قيمتها عندما تستقبل قيمة الحقل sub من الفورم كما موضح في الأعلى.

- Mailer.BodyText : هنا تضع نص الرساله التي سوف يتم وضع قيمتها عندما تستقبل قيمة الحقل messag من الفورم كما موضح بالأعلى.

- if Mailer.SendMail then : هنا سوف تقوم بالفحص إذا كان المتغير mailer قام بإرسال الرساله نفذ الشرط

- else : هنا إذ لم يتحقق الشرط في الأعلى سوف تظهر رساله بحدوث خطأ.

end if: نهاية الشرط

- ملاحظه: الشرط التي تم وضعه ، تستخدم للتحقق بأنه هل يوجد عنوان بريد إلكتروني من قبل المرسل على شبكة الانترنت، فإذا كان يوجد أرسل، وغير ذلك لا يرسل، وممكن يكون يوجد هناك بريد ولكن لا ترسل، يرجع لهذا لحدوث مشاكل مع السيرفر، أو هناك ضغط على السير.

وبذلك نكون قد انتهينا من هذه الطريقة لإرسال البريد الإلكتروني.

الطريقة الثانية لإرسال البريد وهي استخدام الكمبونت cdont.email

ويمكنكم مشاهدة مثال عليها ، من خلال الرابط التالي:

/index.php?showtopic=40586

وطبعاً هناك الكثير من الطرق لأرسال الإيميل، ولكن هذين الطريقتين المتبعتين أكثر.

وبذلك نكون قد انتهينا عن كيفية إرسال بريد إلكتروني.

ملاحظة: أنا أشاهد أنه يوجد القليل من المهتمين في الموضوع، فهل تودون أن أكمل باقي الدروس بالتدريج، أم أدخل الان في التعامل مع قواعد بيانات، لأن ما اخذنها الأن يؤهلنا للتعامل مع قواعد البيانات، فأرجوا من الجميع أن يقوموا بالرد بالنسبة لهذا الموضوع.

وسوف يتم تحديد ذلك على رأي الأغلبية.

مع تحياتي

تم تعديل هذه المشاركة بواسطة عبدالله جابر شقليه في 14 مايو 2004 في 15:52

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#29

يا عيني عليك يا عبدالله ،،، والله جهد كبيرة جداً في حياتي ما شفت مثلو بالمنتديات كلها :)

إنتا معدنك أصيل :)

الله يعطيك العافية وجزاك الله خيرا

shaglyh.jpg

تم تعديل هذه المشاركة بواسطة أسامة في 14 مايو 2004 في 17:40

أحللت يا عود الآراكِ بثغرها - ما خفت يا عود الآراكِ آراكَ

لو كنت من أهل القتالِ قتلتكَ - ما فاز مني يا سواكُ سواكَ

#30

اخ عبدالله

الحقيقه اللسان يعجز عن شكرك

ولكن يشهد الله اني ادعي لك بخير الدعاء

وبخصوص الملاحظه

الكل ينتظر هذه اللحظه

وانا بالذات

توكل على الله وواصل والكل معاك قلبا وقالبا

واشكرك بكل معاني الشكر

وحقيقه تقال لك فضل هنا كبير بعد الله

وما شاء الله تبارك الله

كفاك الله من شر الحاسدين

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#31

'الله يبارك فيك أخي عبد الله ,, أنا متابع معاك ,, شكلك في النهاية ستنتج كتابا للغة :)

شكرا جزيلا لك ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#32

بالمناسبة أفدتني كثيرا جدا في الدروس السابقة بالنسبة للكثير من الأمور التي كنت سأحتاج لكتاب لمعرفتها ,,

ماشاء الله عليك طريقة توصيل المعلومة عندك متميزة حقا ,,

وأنا في انتظار قواعد البيانات على أحر من الجمر :)

الله يحفظك ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#33

السلام عليكم

شكراً لكل من الاخ عبد الهاي، والا خ هيثم، وان شاءلله في الدرس القادم، سوف أتطرق لدرس قواعد البيانات.

أما الباقي سوف أكمله بعد أن ننتهي من درس قواعد البيانات، وسوف يكون مشروع قواعد البيانات، هو تسجيل الطلبة عبر الانترنت، وعرض كشف العلامات،والكثير من الأشياء.

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#34

السلام عليكم

فعلا دروس مفيدة وساشارك بتتفيذ المشروع ان شاء الله

وانا بانتظار دروسك القادمة

#35

السلام عليكم

عندما نريد أن نربط صفحات ال asp مع قواعد البيانات، يجب أن نستخدم الكائن ADO، والان سوف أقوم بشرح نبذة عن هذا الكائن.

ما هي ال ADO؟* ADO هي عبارة عن تكنلوجيا ميكروسوفت.

* ADO ترمز إلى بيانات نشطة.

* ADO عباره عن مركبات ميكروسوفت النشطة.

* ADO أتوماتيكيا تنزل مع إعدادت ميكروسوفت IIS.

* ADO هي عباره عن واجهة البرامج لدخول البيانات إلى قواعد البيانات.

كيفية الحصول على قواعد البيانات من صفحات الخادمة النشطة (ASP)؟.إن الطريقة الشائعة للحصول على قواعد البيانات من صفحات الخادة النشطة هي كالتالي:-

1- إنشاء اتصال بواسطة ADO مع قواعد البيانات.

2- فتح الاتصال مع قواعد البينات.

3- إنشاء السجلات بواسطة ADO.

4- فتح السجلات.

5- استخلاص البيانات التي تحتاج إليها السجلات.

6- إغلاق السجلات.

7- إغلاق الاتصال.

---------------------------------------

والان سوف أقوم بشرح كيفية طرق الاتصال بقواعد بيانات من نوع access.

ADO Data Base Connection(اتصال ال ADO مع قواعد البيانات)

قبل أن ندخل قواعد اليانات إلى صفحة شبكة الانترنت، لا بد من تثبيت الاتصال بقواعد البيانات.

وهناك نوعان من الاتصال بقواعد البيانات:-

النوع الأول:- إنشاء الاتصال بقواعد البيانات بــ DSN-less "الاتصال المباشر"

النوع الثاني:- إنشاء الاتصال بقواعد البيانا بــ ODBC "الاتصال الغير مباشر"

إنشاء الاتصال بقواعد البيانات بــ DSN-less:

إن أسهل طريقة للاتصال بقواعد البيانات هو استخدام الاتصال بــ DSN-less , و DSN-less يمكن استخدامها مع أي قواعد بيانات ميكرسوفت في موقعك على الشبكة.

لنفرض أنه يوجد قاعدة بيانات من نوع Access اسمها "Person.mdb" ، وهي موجوده على المسار c:\intpup\wwwroot\database\person.mdb ، فإنك تستطيع الوصول إلى قاعدة البيانات عن طريق كود ال ASP التالي:-

<%
dim conn
set conn=server.createobject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0"
conn.open(server.MapPath("database/person.mdb"))
%>

conn: متغير يحدد نوعية الاتصال في قاعدة البيانات.

conn.provider: تحدد نوع قاعدة البيانات المستخدمة ، وفي مثالنا هذا سوف نتعامل مع MicrosoftAccess.

conn.open: فتح قاعدة البيانات.

(("server.MapPath ("database/person.mdb: تحدد مسار الوصول إلى قاعدة البيانات.

ملاحظة: عندما قمة بوضع هذا المسار في ملف ال ASP ، كان الملف محفوظ داخل المجلد wwwroot، أما إذا كانت الملف محفوظ داخل المجلد database فإن المسار سوف يكون للوصول إلى قاعدة البيانات Person.mdb هي كالتالي:

  <%
dim conn
set conn=server.createobject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0"
conn.open(server.MapPath("person.mdb"))
%>

------------------------------------------------------

إنشاء الاتصال بقواعد البيانات ب ODBC:

- للاتصال بقاعدة البيانات بواسطة الاتصال ODBC يجب أن قوم أولا بالإجراءات التالية:-

1- قم بفتح أيقون ال ODBC من لوحة التحكلم. للوصول إليها كالتالي:

control panel>Adminisrative tools>Data Sources (ODBC)

كما هو موضح بالشكل التالي:

contrilpanel.jpg

بعد ذلك قم باختيار ODBC، كما في الشكل التالي:

odbc.jpg

2- سوف تظهر لكل النافذة التالية قم باختيار منها System Dsn:

systemdsn.jpg

سوف تفتح لك نافذه اختر منها Add ، وسوف تفتح لك النافذة التالية:

sekectdata.jpg

في هذه النافذة حدد نوع قاعدة البيانات التي سوف تتعامل معها، وبعدها اضغط Finish.

3- بعد ذلك سوف تفتح لك النافذة التالية:-

datasource.jpg

في Data Source Name ضع اسم مصدر البيانات ، وهذا خيار لك بأي اسم تريد أن تسميه.

4- قم باختيار من النافذة في الأعلى Select، وسوف تظهر لك النافذة التالية:

connection.jpg

في هذه النافذة حدد مسار الوصول إلى قاعدة البيانات. ومن ثم اضغط Ok ومرة اخرى Ok.

وهذه هي الطريقة لاتصال بقاعدة البيانات بواسطة الاتصال ODBC.

------------------------

لعمل الاتصال مع قاعدة البيانات بطريقة ال ODBC لإظهارها على مستعرض الانترنت، فإن كود ال ASP سوف يكون كالتالي:-

<%
set conn=Server.CreateObject("ADODB.Connection") 
conn.Open "arabmoheet"
%.

حيث arabmoheet، حيث اسم مصدر البيانات الذي عرفناه.

وبذلك قد تعلمنا كيف يتم الاتصال بقاعدة البيانات من نوع اكسس، وفي الدروس القادمة إن شاء الله سوف نتعلم كيفية التعامل مع قاعدة البيانات بشكل موسع.

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#36

اخي المحترف

الله يعينك سوف تتعب منا

الحقيقه درس ولا اروع

سوف اجرب بنفسي واعطيك الاخبار

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#37

مشكور على الدروس والى الامام

#38

السلام عليكم ,,,

ماشاء الله على الشرح الواضح ,, مدلعنا مع الصور :)

الله يخليك أخي عبد الله ,,

في انتظار القادم ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#39

سوف اخرج قليلا عن الشرح

واقول

ان الشرح جميل جدا ورائع بروعه توقيع اخي المبدع عبدالله

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#40

رائع جداً

أشكرك جزيل الشكر

حقيقة تعبت وأنا أتفرج على المواقع الاجنبية التي تشرح الـــ asp ،، ولا أستوعب ما يكتب فيها بشكل كافي مع أنها مشتملة على شرح تفصيلي لأنها بالانجليزي

لكن بعد ماوجدت حبيبنا عبدالله شقلية وفقه الله وأسعده في الدارين سررت سروراً كثيرا جداً ،

ومن اليوم إن شاء الله معاك

وحأطبق اللي آخذه معاك

وبودي أسألك ،،، ما هو أفضل محرر للغة asp ؟

الذي أستخدمه أنا هو الإنتردف

#41

أستاذي

فهمت for,,,,,next

لكن for each

لم أفهمها

هل من الممكن توضيحها أكثر ،، ولك تحياتي

#42

بعض الشرح نريده منك

رائع جداً

أشكرك جزيل الشكر

#43

السلام عليكم

شكراً لجميع المشرفين والأعضاء المتابعين لهذه الدروس، وبصراحة أنتم جعلتمونني أشعر بأنني ذو فائدة معكم.

الاخ مفتون سوب تجد إجابة ضمن الشرح، لأنني سوف استخدمه في التعامل مع الجداول.

ADO Recordset :

- قبل أن تقرأ أي قاعدة البيانات يجب أولا أن تحمل هذه البيانات على Recordset.

طريقة الوصول إلى جداول ال Recordset بواسطة ال ADO?

- قبل إجراء الاتصال بقاعدة البيانات بواسطة ال ADo يجب أن تكون قد قمت بإنشاء قاعدة البيانات.

أنتم تعرفون بأن مشروعنا هو عبارة عن تسجيل الطلبة عبر الانترنت وعرض كشف العلامات ورصد درجات الطلبة، طبعاً المفروض يجب أن يكون هناك برنامج تطبيقي أيضاً، لأنه مش كل شئ سوف نقوم بإدخاله عن طريق النت، لكن سوف نقوم بعمل المشروع بأكمله عن طريق النت.

طبعاً مشروعنا سوف يكون على قاعدة بيانات أكسس، لأنه الأغلب يستطيع التعامل معها.

قاعدة البيانات التي سوف نقوم بعملها سوف يكون اسمها فرضاً recordmark.mdb.

طبعاً سوف أقوم بإنشاء جدول جدول، وسوف أوضح ما طبيعة عمله هذا الجدول.

قوم بإنشاء جدول واسمه program_name حيث هذا الجدول مكون من حقلين كالتالي:

Program_no من نوع اوتونامبر.

prorgram_name من نوع text.

هذا الجدول هو عباره عن أنواع الدرجات العلمية التي تمنحها الجامعة مثل البكاريوس والماجستير والدبلوم..إلخ.

حيث Program_no هو رقم الدرجة العلمية، و prorgram_name اسم الدرجة العلمية.

الان سوف أشرح أول شئ خطوة بخطوة كيف نقوم بعرض السجلات بعدة طرق على هذا الجدول، ومن بعدها سوف نتعامل بشكل واحد مع باقي جداول المشروع.

الا الكود التالي يوضح كيفية استخدام ADO Recordset للوصول إلى السجلات؟

<%
dim conn
set conn=server.createobject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0"
conn.open(server.MapPath("database/recordmark.mdb"))
set rs=server.createobject("ADOdb.recordset")
rs.open "program_name",conn
%>

شرح الكود:

- ("rs=server.createobject("ADOdb.recordset :المتغير rs يقوم بتحديد طريقة الوصول إلى سجلات قواعد البيانات بواسة ال ADO.

- "rs.open "prorgam_name : تقوم بفتح الجدول prorgam_name.

إنشاء لغة الاستعلام لي Recordset بواسة ال ADO؟

- للوصول إلى البيانات المخزنة داخل الجدول "prorgam_name" استخدم لغة الاستعلام:

<%
dim conn
set conn=server.createobject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0"
conn.open(server.MapPath("database/recordmark.mdb"))
set rs=server.createobject("ADOdb.recordset")
rs.open "select * from prorgam_name",conn
%>

طبعاً دائما للوصول إلى جداول إلى قاعدة البيانات يجب دائماً أن نقوم بإنشاء الاتصال بقاعدة البيانات، فتخيل بأن موقع يحتوي على مئة صفحة، وبكل صفحة سوف تقوم بوضع بكتابة كود الاتصال بقاعدة البيانات، فأعتقد بأنها غلبة، فمن الأفضل أن نقوم بوضع كود الاتصال بصفحة وعندما نريد أن ننشأ أي اتصال بقاعدة البيانات نقوم باستدعاء الصفحة التي تحتوي على الاتصال بقاعدة البيانات.

الكود التالي يحتوي على كود الاتصال بقاعدة البيانات، وقم بتسمية هذه الصفحة باسم connection.asp:

<%
dim conn
set conn=server.createobject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0"
conn.open(server.MapPath("database/recordmark.mdb
%>

والان سوف أضع كيف يتم استدعاء صفحة connection.asp في الصفحات:

<!--#include file="connection.asp"-->

هكذا يتم استدعاء الصفحة، حيث تقوم بتحديد مسار الوصول للملف.

ADO Display:

- تستخدم هذه الطريقة لعرض السجلات من قاعدة البيانات المحددة، على صفحة ال HTML.

االن سوف نشاهد كيف يتم عرض البيانات من الجدول program_name، على اعتبار بأن الجدول يحتوي على سجلات:

<html>
<body> 
<!--#include file="connection.asp"-->
<%
set rs=server.createobject("ADOdb.recordset")
rs.open "select * from prorgam_name",conn
for each x in rs.fields
response.write(x.name)
response.write("=")
response.write(x.value)
next
%>
 </body>
</html>

شرح الكود:

- for each x in rs.fields: : هنا سوف يتم تخزين جميع القيم المخزنة داخل rs.fields داخل المتغير x.

- (response.write(x.name: حيث x.name سوف تحتوي على أسماء الحقول للجدول prorgram_name، وسوف يتم طباعتها على الصفحة.

- (response.write(x.value: [/color حيث x.value سوف تحتوي على قيم الحقول للجدول.

ملاحظة: هذه الطريقة تستخدم لإظهار سجل واحد من الجدول.

كيفية إظهار جميع السجلات داخل الجدول "prorgram_name"؟

set rs=server.createobject("ADOdb.recordset")
rs.open "select * from prorgram_name",conn
do while not rs.eof
for each x in rs.fields
response.write(x.name)
response.write("=")
response.write(x.value)
next
response.write("</br>")
rs.movenext
loop
rs.close
conn.close
%>

شرح الكود:

- (DO) حلقة. صيغتها Loop.

- do while not rs.eof: تعني (Do) إبدأ الحلقة، while ما دامت ، (Not) لم تكن rs نهاية الملف (eof) وهي اختصار لي (End Of File)، أي أن الحلقة ستستمر في عرض السجل طالما كان هناك سجلات.

- rs.movenext: أي انتقل للسجل التالي ( بعد أن تقوم بعرض السجل الأول سوف تذهب إلى السجل التالي له.

- Loop: تكرار الحلقة، أي أنا سوف تعود إلى جملة Do وتقوم بتنفيذ الشرط طالما صحيحاً.

طبعاً سوف تخرج من loop عندما عندما لا يكون هناك سجلات تالية.

ملاحظة:- في المثال الأعلى تلاحظ بأنه يعرض لنا جميع الحقول والسجلات، ولكن في المثال التالي، سوف ترى كيف يتم تحديد عرض السجلات التي أنت تقوم بتحديدها.

كيفية عرض السجلات المحددة؟

<%
set rs=server.createobject("ADOdb.recordset")
rs.open "select * from prorgram_name",conn
response.write("<center><b>")
do while not rs.eof
response.write("الدرجة العلمية:"&rs("program_name")&" ")

rs.movenext
loop

rs.close
conn.close
%>

شرح الكود:

- ("rs("program_name: سوف تقوم بإظهار السجلات تبعاً للحقل program_name.

ومن الممكن عرضها بهذه الطريقة أيضاً rs.Fields("program_name")

إدراج عناصر ال HTML عند عرض البيانات:-

<html dir="rtl">
<body>
<!--#include file="connection.asp"-->
<%

set rs=server.createobject("ADOdb.recordset")
rs.open "select * from customres",conn
response.write("<center><b>")
do while not rs.eof
%>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
<tr>
<td width="33%"> </td>
<td width="33%">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">
<tr>
<td width="33%" align="center"><font color="#0000FF"> <b>
<%=(rs("program_name"))%>
</b></font></td>
<td width="33%" align="center"><font color="#FF0000"> <b>
<%=rs("program_no")%>
</b></font></td>
</tr>
</table>
</td>
<td width="34%"> </td>
</tr>
</table>
<%
rs.movenext
loop
rs.close
conn.close
%>
</body>
</html>

وبذلك نكون قد انتهينا من عملية عرض السجلات، وان شاءلله في الدرس القادم سوف أشرح كيف يتم إدخال بيانات والتعديل عليها، وحذفها.

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#44

ماذا اقول

تستاهل اجمل تحيه

ولو كنت في ملعب لكان قلت بص شوف عبدالله بيعمل ايه

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#45

مبدع ياعبد الله ,, الله يوفقك ,,

بس كان لو تضع خرج البرنامج بعد البرنامج ,, لكان أفضل بكثير ,, عشان نقدر نستوعب أحسن التنفيذ ,,

وبالمناسبة أنا عندي مشكلة في ال INSERT ,, وأتمنى أنك تحصل بسرعة عشان ضغطي ارتفع من ال INSERT !!!!

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#46

السلام عليكم

الان سو أبدأ في المشروع، وسوف يتم تصميمه خطوة بخطوة.

في السابق قمنا بعمل قاعدة بيانات واسمها recordmark.mdb وجدول اسمه program_name.

الان سوف نقوم بترتيب المشروع.

سوف نقوم بعمل مجلد يحتوي على جيمع ملفات المشروع، وليكن اسمه un، حيث سوف يحتوي على الكثير من المجلدات والملفات، ولكن سوف نوضح هذه المجلدات والصفحات عندما نصل لكي موضوع يتعلق بها.

قم بإنشاء مجلد وليكن اسمه data حيث هذا المجلد سوف يحتوي على قاعدة بيانات المشروع.

قم بإنشاء مجلد وليكن اسمه admin، حيث هذا المجلد خاص في الشؤون الأكاديمية للجامعة، وسوف يتم تفسيرها أكثر من خلال تطبيق عملها شرح الصفحات وطبيعة عملها.

حيث سوف يكون الاتصال للوصول إلى قاعدة البيانات الموضوعة داخل المجلد data من ال admin كالتالي

<%
dim conn 
set conn=server.createobject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0"
conn.open(server.MapPath("../data/recordmark.mdb"))

%>

قم بتخزين هذا التصال داخل المجلد admin باسم connection.asp.

طبعاً عند الدخول إلى صفحات الخاصة في عمادة الشؤون الأكاديمية، يتطلب منا الأمان لهذه الصفحة، حيث لا يستطيع احد الدخول إليها الي من يحمل اسم المستخدم وكلمة المرور الخاصة بها.

حيث سوف نقوم الأن بإنشاء جدول يحتوي على اسم المستخدم وكلمة المرور لعمادة شؤون الموظفين، واسم الجدول acadimic_login حيث يحتوي على الحقلين التاليين:

username من نوع text (اسم المستخدم.

pass: من نوع text (كلمة المرور).

قم بوضع اي اسم مستخدم او كلمة مرور داخل هذه الحقلين، لأنه لن نحتاج إلى صفحة لإضافة اسم مستخدم وكلمة مرور لها.

الان سوف نقوم بعمل الصفحة الخاصة بتسجيل الدخول إلى صفحة عمادة الشؤون الأكاديمية.، ولكين اسمها default.asp وقم بتخزينها داخل المجلد admin.

وكود الصفحة default.asp سوف يكون كالتالي:

<html dir="rtl">

<head>
<meta http-equiv="Content-Language" content="ar-sa">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">

</head>

<body>

<p> </p>
<p> </p>
<!--#include file="connection.asp"-->
<%if request("username")="" or request("pass")="" then%>

<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">
    <tr>
      <td width="100%">
      <p align="center"><font face="Tahoma" color="#FF0000">للدخول إلى لوحة تحكم 
      عمادة الشؤون الأكاديمية قم بملء الحقول التالية:</font></p>
      <p align="center"> </td>
    </tr>
  </table>
  </center>
</div>
<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
    <tr>
      <td width="100%">
      <form method="POST" action="default.asp">
        <div align="center">
          <center>
          <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="43%" id="AutoNumber2" bgcolor="#F4F4F4">
            <tr>
              <td width="48%"><font face="Tahoma"> اسم المستخدم:</font></td>
              <td width="68%"><font face="Tahoma">
              <input type="text" name="username" size="22"></font></td>
            </tr>
            <tr>
              <td width="48%"><font face="Tahoma"> كلمة المرور:</font></td>
              <td width="68%"><font face="Tahoma">
              <input type="password" name="pass" size="22"></font></td>
            </tr>
          </table>
          </center>
        </div>
        <p align="center"><font face="Tahoma"><input type="submit" value="دخول"></font></p>
      </form>
      </td>
    </tr>
  </table>
  </center>
</div>
<%
else
set check_login=conn.execute("select * from acadimic_login where username='"&request("username")&"' and pass='"&request("pass")&"'")
if not check_login.eof then
response.cookies("acadimic")=request("username")
response.cookies("acadimic").Expires=date+1
response.redirect("acadamic_un.asp")

else
%>
<meta http-equiv="Refresh" content="2; URL=JavaScript:history.go(-1)">

 <table width="100%" border="0" cellspacing="0" cellpadding="0" height="90" align="center">
<tr align="center" valign="middle">
	<td height="90">
	<table border="1" cellspacing="0" cellpadding="10" width="70%" bordercolor="#000000" style="border-collapse: collapse">
	<tr>
  <td bgcolor="#F4F4F4" align="center" bordercolor="#000000">
  <p> 
  
        <font face="Tahoma" size="2" color="#000080">عذراً اسم المستخدم أو كلمة 
        المرور غير صحيحة<br><br> </font>
  
  <font face="Tahoma" size="2"> <a href="JavaScript:history.go(-1)">اضغط هنا اذا كنت لا ترغب بالانتظار .<br>
  (او اذا كان متصفحك لا يدعم الانتقال التلقائي) </a> </font> </p></td>
	</tr>
	</table>
	</td>
</tr>
</table>
<%
end if
end if

%>
<p> </p>
</body>

</html>

الشرح:

<!--#include file="connection.asp"-->: كود الوصول إلى الصفحة التي تحتوي على الاتصال بقاعدة البيانات.

كما تلاحظون أنه يوجد فورم تحتوي على حقلين وهما:

اسم المستخدم:وهو من نوع text واسمه username.

وكلمة المرور من نوع password واسمه pass.

<%if request("username")="" or request("pass")="" then%>: هنا وضعة شرط، حيث في هذا الشرط، يحدد إذا كانت اسم المستخدم أو كلمة المرور فارغة سوف تقوم بإظهار الفورم فقط، وغير ذلك سوف تقوم بتنفيذ الشرط الذي يلي جملة else.

طبعاً من الطبيعي عند بداية تحميل الصفحة سوف يكون اسم المستخدم وكلمة المرور فارغة ، لا يوجد بداخلها قيم.

والكل سوف يقول لماذا قمت بذلك، أنا قمت بعمل ذلك، لأنه أريد أن يتم التأكد من صحة المدخلات في نفس الصفحة، ولا أريد وضعها في صفحة أخرى، لأنه الهدف من ذلك هو عملية التقليل من الصفحات للمشروع.

بعد أن يقوم المستخدم بإدخال اسم المستخدم وكلمة المرور، فعند اعتماد هذه البيانات، سوف يتم إعادة تحميل الصفحة مرة أخرى ولكن سوف سوف يتم إعادة فحص الشرط مرة أخرى، فإذا كان الحقلين تم تبعئتمها سوف ينتقل إلى جملة else ويقوم بتنفيذ ما بعدها.

set check_login=conn.execute("select * from acadimic_login where username='"&request("username")&"' and pass='"&request("pass")&"'")

هنا وضعنا جملة select للفحص إذا كان يوجد اسم المستخدم وكلمة المرور مطابقة للمدخلات من الفروم.

if not check_login.eof then

في هذا الشرط سوف يفحص check_login التي تساوي جملة ال sql اذا لم تكن فارغة، فمعنها حسب جملة ال sql سوف يكون إذا كان هناك اسم مطابق وكلمة مرور مطابقة حسب المدخلات قم بتنفيذ التالي:

response.cookies("acadimic")=request("username")
response.cookies("acadimic").Expires=date+1
response.redirect("acadamic_un.asp")

حيث هنا قمت بإنشاء كوكيز واسمه acadimic يحتوي على اسم المستخدم، ومدة انتهاء صلاحية من تبدأ من تاريخ اليوم إضافة إلى يوم واحد.

response.redirect("acadamic_un.asp"): بعد أن يقوم بتخزين اسم المستخدم داخل الكوكيز سوف يتم نقله مباشرة إلى صفحة acadamic_un.asp، والتي سوف نشأها لاحقاً.

else: سوف تصبح معنها حسب الشرط، إذا كان لا يوجد هناك سجل، يحتوي على اسم المستخدم وكلمة المرور، سوف يقوم بإظهار رسالة بأن المدخلات من الفروم غير صحيحة.

end if

end if

نهاية الشرطين.

وبذلك نكون قد انتهينا من الصفحة الخاصة بفحص اسم المستخدم وكلمة المرور.

وفي المشاركة التالية سوف يتم شرح الصفحة acadamic_un.asp.

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#47

إن لبدنك عليك حق يا عبد الله

بسم الله ما شاء الله مواضيعك متميزه ونشاطك يجعلنا نتابعك يوماً بعد يوم

لى عندك رجائين الاول هو ان تنتبه للدراسه هذه الايام والثانى ان تفصل الدروس فى مواضيع مستقله ووضعها فى صفحه واحده مثبته ليسهل الرجوع إليها

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#48

السلام عليكم

سوف نقوم الأن بإنشاء صفحة acadamic_un.asp حيث في هذه الصفحة سوف تحتوي على روابط خاصة في لوحة تحكم الشؤون الأكاديمية.

ولا تحتوي على الكثير من الأوامر، وكود الصفحة كالتالي:

<%if request.cookies("acadimic")="" then
response.redirect="default.asp"
end if%>
<html dir="rtl">

<head>
<meta http-equiv="Content-Language" content="ar-sa">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>لوحة التحكم الخاصة بالشئون الأكاديمية للجامعة</title>
</head>

<body>

<p> </p>
<div align="center">
<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#008000" width="69%" id="AutoNumber2">
<tr>
<td width="100%" align="center" colspan="2" bgcolor="#008080">
<p align="center"><font face="Tahoma" color="#FFFFFF">لوحة التحكم الخاصة بالشئون 
الأكاديمية للجامعة</font></td>
</tr>
<tr>
<td width="50%" align="center" ID=R1 onmouseOver=movein(R1) onmouseout=moveout(R1)><font face="Tahoma">
<a href="acadimic_program.asp">الدرجات العليا</a></font></td>
<td width="50%" align="center" ID=R2 onmouseOver=movein(R2) onmouseout=moveout(R2)><font face="Tahoma">
<a href="acadimic_college.asp">الكليات</a></font></td>
</tr>
<tr>
<td width="50%" align="center" ID=R3 onmouseOver=movein(R3) onmouseout=moveout(R3)><font face="Tahoma">ا<a href="acadimic_departments.asp">لأقسام</a></font></td>
<td width="50%" align="center" ID=R4 onmouseOver=movein(R4) onmouseout=moveout(R4)><font face="Tahoma">
<a href="acadimic_register.asp">المسجلين</a></font></td>
</tr>
<tr>
<td width="50%" align="center" ID=R5 onmouseOver=movein(R5) onmouseout=moveout(R5)><font face="Tahoma">
<a href="acadimic_semester.asp">الفص الدراسي</a></font></td>
<td width="50%" align="center" ID=R6 onmouseOver=movein(R6) onmouseout=moveout(R6)><font face="Tahoma">
<a href="acadimic_subject.asp">المقررات الجامعية</a></font></td>
</tr>
<tr>
<td width="50%" align="center" ID=R7 onmouseOver=movein(R7) onmouseout=moveout(R7)><font face="Tahoma">
<a href="acadimic_teacher.asp">المحاضرين</a></font></td>
<td width="50%" align="center" ID=R8 onmouseOver=movein(R8) onmouseout=moveout(R8)><font face="Tahoma">
<a href="acadimic_category_subject.asp">تصنيف المقررات للجامعة</a></font></td>
</tr>
</table>
</center>
</div>

</body>

</html>

طبعاً في المشاركة في الأعلى، الكل يستفسر لماذا قمنا بإنشاء الكوكيز، وما الغرض منه،

الغرض من الكوكيز الذي قمنا بإنشائه هو جعل المستخدم أن يدخل اسم المستخدم مرة واحدة عند الدخول أول مرة للوحة التحكم الخاصة، به، فليس من المعقول كلما يريد الذهاب إلى صفحة من صفحات التحكم بأن يقوم بإدخال اسم المستخدم وكلمة المرور كل مرة.، فلذلك قمنا بإنشاء الكوكيز.

حيث هنا

<%if request.cookies("acadimic")="" then
response.redirect="default.asp"
end if%>

سوف نقوم بالفحص الكوكيز الذي تم إنشائه عندما قام المستخدم بإدخال اسم المستخدم وكلمة المرور.

حيث فذ هذا الشرط إذا كان الكوكيز فارغ فسوف يتم نقله فوراً بمجرد زيارته للصفحة إلى صفحة إدخال اسم المستخدم وكلمة المرور.

بالنسبة للروابط التي تشاهدونها في هذه الصفحة، سوف يتم التطرق لها في وقت لاحق.

وبذلك نكون قد انتهينا من هذه الصفحة.

وفي المشاركة التالية سوف أقوم بشرح الصفحة الخاصة بـ الدرجات العليا التي منحها الجامعة.

مع تحياتي.

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#49

السلام عليكم

سوف نقوم بإنشاء الصفحة acadimic_program.asp وهذه الصفحة سوف تحتوي فقط على الروابط الخاصة بها، ولا تحتاج للشرح.

<%if request.cookies("acadimic")="" then
response.redirect="default.asp"
end if%>
<html dir="rtl">

<head>
<meta http-equiv="Content-Language" content="ar-sa">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>New Page 1</title>
</head>

<body>

<p> </p>
<div align="center">
<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="56%" id="AutoNumber1">
<tr>
<td width="100%">
<p align="center"><font face="Tahoma">لوحة التحكم الخاصة بالدرجات العلمية 
التي تمنحها الجامعة</font></td>
</tr>
<tr>
<td width="100%">
<p align="center"><font face="Tahoma"><a href="add_santific_degrees.asp">
إضافة درجات علمية</a></font></td>
</tr>
<tr>
<td width="100%">
<p align="center"><font face="Tahoma">
<a href="view_update_delete_santific_degrees.asp">عرض/تعديل/حذف الدرجات 
العلمية</a></font></td>
</tr>
</table>
</center>
</div>

</body>

</html>

الان سوف أقوم بعمل صفحة إضافة ردجات علمية، ولكن قبل البدء بها، يجب أن نقوم بالتعديل على الجدول الذي أنشأنها من قبل لها، ويصبح اسمه program، ويتم إضافة إليه أيضاً الحقلين التاليين:

persent: من نوع number ( حيث تحدد نسبة القبول للدرجة العلمية لكل عام عند بدأ تسجيل الطلبة الجدد)

acadimic_wirnning من نوع number (تحدد نسبة التحذير الأكاديمي للدرجة العلمية عندما يكون معدل الطالب أقل من الحد الأدني)

الان سوف نقوم بإنشاء صفحة إضافة درجات علمية واسمها هي add_santific_degrees.asp ، وتحتوي على الكود التالي:

<%if request.cookies("acadimic")="" then
response.redirect="default.asp"
end if%>
<html dir="rtl">

<head>
<meta http-equiv="Content-Language" content="ar-sa">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>لوحة التحكم الخاصة بإضافة الدرجات العلمية التي تمنحها الجامعة</title>
</head>

<body>
<!--#include file="connection.asp"-->
<p> </p>
<%if request("program_name")="" then%>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
<tr>
<td width="100%">
<form method="POST">
<div align="center">
<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="63%" id="AutoNumber2" bgcolor="#F4F4F4">
<tr>
<td width="100%" colspan="2">
<p align="center"><font face="Tahoma">لوحة التحكم الخاصة بإضافة 
الدرجات العلمية التي تمنحها الجامعة</font></td>
</tr>
<tr>
<td width="58%" align="center">
<p align="right"><font face="Tahoma"> الدرجة:</font></td>
<td width="42%"><font face="Tahoma">
<input type="text" name="program_name" size="29"></font></td>
</tr>
<tr>
<td width="58%" align="center">
<p align="right"><font face="Tahoma"> نسبة النجاح:</font></td>
<td width="42%" align="right">
<input type="text" name="persent" size="20"></td>
</tr>
<tr>
<td width="58%" align="center">
<p align="right"><font face="Tahoma"> أدخل الحد الأدنى 
للتحذير الأكاديمي:</font></td>
<td width="42%" align="center">
<p align="right">
<input type="text" name="acadimic_wirnning" size="20"></td>
</tr>
</table>
</center>
</div>
<p align="center"><input type="submit" value="إضافة" onSubmit="return CheckForm();"></p>
</form>
</td>
</tr>
</table>
</center>
</div>
<%
else
set check_add=conn.execute("select * from program where program_name='"&request("program_name")&"'")
if check_add.eof then
conn.execute("insert into program (program_name,persent,acadimic_wirnning) values ('"&request("program_name")&"',"&request("persent")&","&request("acadimic_wirnning")&")")
end if
%>
<meta http-equiv="Refresh" content="2; URL=add_santific_degrees.asp">

 <table width="100%" border="0" cellspacing="0" cellpadding="0" height="90" align="center">
<tr align="center" valign="middle">
<td height="90">
<table border="1" cellspacing="0" cellpadding="10" width="70%" bordercolor="#000000" style="border-collapse: collapse">
<tr>
<td bgcolor="#F4F4F4" align="center" bordercolor="#000000">
<p> 

<font face="Tahoma" size="2"> تمت عملية الإضافة بنجاح</font><font face="Tahoma" size="2" color="#000080"><br><br> </font>

<font face="Tahoma" size="2"> <a href="add_santific_degrees.asp">اضغط هنا 
إذا كنت لا ترغب بالانتظار .<br>
(أو إذا كان متصفحك لا يدعم الانتقال التلقائي) </a> </font> </p></td>
</tr>
</table>
</td>
</tr>
</table>
<%end if
conn.close
set conn=nothing%>
</body>

</html>

حيث سوف أقوم بشرح ما هو الجديد عليكم فقط.

تلاحظ بأنها تحتوي على فورم، مكونة من الحقول التاليق:

اسم الدرجة العلمية واسمها program_name.

نسبة القبول واسمها persent.

أدخل الحد الأدنى للتحذير الأكاديمي واسمها acadimic_wirnning.

هذه الحقول التي تم إنشائها للفورم وسوف يتم اعتماد البيانات على نفس الصفحة.

<%if request("program_name")="" then%>

اعتقد بأنها أصبحت واضحة لكم ماذا تعني، عندما نقوم بإرسال البيانات إلى نفس الصفحة.

else بعد أن يتم اعتماد البيانات سوف تقوم بتنفيذ التالي:

set check_add=conn.execute("select * from program where program_name='"&request("program_name")&"'")

هنا سوف يتم الفحص إذا كان هناك من قبل اسم درجة علمية تساوي نفس الدرجة العلمية المدخلة من الفورم.

if check_add.eof then

إذا كان لا يوجد سجل يحتوي على نفس الدرجة العلمية قم بتنفيذ التالي:

conn.execute("insert into program (program_name,persent,acadimic_wirnning) values ('"&request("program_name")&"',"&request("persent")&","&request("acadimic_wirnning")&")")

حيث هنا جملة سوف نستخدم جملة ال sql وهي insert التي سوف تقوم بإضافة البيانات إلى جدول program.

حيث هنا (program_name,persent,acadimic_wirnning) سوف يتم وضع أسماء الحقول من الجدول program التي سوف نقوم بملئها.

values ('"&request("program_name")&"',"&request("persent")&","&request("acadimic_wirnning")&")")

هنا سوف يتم إضافة البيانات إلى حقول الجدول من البيانات التي تم اعتمادها من الفورم، ويجب إدخال القيم إليها بالترتيب، عندما قمت بتحديد الحقول من جدول program التي تريد بإضافتها لها.

ملاحظة: عندما يكون اسم الحقل في الجدول من نوع text او memo يتم وضع إشارة تنصيص للقيم المدخلة ، أما إذا كان نوعه number او date او currency لا يتم وضع إشارة التنصيص، وسوف تلاخظ ذلك في جملة ال insert التي في الأعلى، ونفس الشئ تقوم بعمل لباقي جمل ال sql.

وباقي الأكواد أوامر إغلاق.

هكذا نكون قد انتيهنا من صفحة إضافة الدرجات العلمية والتي اسمها add_santific_degrees.asp.

في المشاركة القادمة سوف نشاهد كيف يتم عرض السجلات المخزنة داخل الجدول program.

مع تحياتي

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#50

السلام عليكم

طبعاً تعلمنا سابقاً كيف يتم عرض السجلات، ولن نطرق لشرح كيف يتم عرضها، ولكن الهدف الأساسي هو كيف يتم التعديل على البيانات.

حيث قم بإنشاء صفحة عرض /تعديل/حذف الردجات العلمية، وليكن اسم هذه الصفحة هو view_update_delete_santific_degrees.asp

حيث هذه الصفحة تحتوي فقط على عرض البيانات، والكود الخاص بها هو:

<%if request.cookies("acadimic")="" then
response.redirect="default.asp"
end if%>
<html dir="rtl">

<head>
<meta http-equiv="Content-Language" content="ar-sa">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>لوحة التحكم الخاصة بعرض الدرجات العلمية للجامعة</title>
</head>
<script language=JavaScript>
<!-- Begin

//Animated Window- By Rizwan Chand (rizwanchand@hotmail.com)
//Modified by DD for NS compatibility
//Visit http://www.dynamicdrive.com for this script

function expandingWindow(website) {
var windowprops='width=100,height=100,scrollbars=yes,status=yes,resizable=yes'
var heightspeed = 20; // vertical scrolling speed (higher = slower)
var widthspeed = 20; // horizontal scrolling speed (higher = slower)
var leftdist = 50; // distance to left edge of window
var topdist = 150; // distance to top edge of window

if (window.resizeTo&&navigator.userAgent.indexOf("Opera")==-1) {
var winwidth = window.screen.availWidth - leftdist;
var winheight = window.screen.availHeight - topdist;
var sizer = window.open("","","left=" + leftdist + ",top=" + topdist +","+ windowprops);
for (sizeheight = 1; sizeheight < winheight; sizeheight += heightspeed)
sizer.resizeTo("1", sizeheight);
for (sizewidth = 1; sizewidth < winwidth; sizewidth += widthspeed)
sizer.resizeTo(sizewidth, sizeheight);
sizer.location = website;
}
else
window.open(website,'mywindow');
}
// End -->
</SCRIPT>
<body>
<!--#include file="connection.asp"-->
<p> </p>
<div align="center">
<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="61%" id="AutoNumber1" bgcolor="#F4F4F4">
<tr>
<td width="100%" colspan="4">
<p align="center"><font face="Tahoma">الدرجات العلمية التي تمنحها الجامعة</font></td>
</tr>
<tr>
<td width="38%" align="center"><font face="Tahoma">الدرجة العلمية</font></td>
<td width="24%" align="center"><font face="Tahoma">نسبة النجاح</font></td>
<td width="21%" align="center"><font face="Tahoma">نسبة التحذير</font></td>
<td width="17%" align="center"><font face="Tahoma">العمليات</font></td>
</tr>
<% set degrees=conn.execute("select * from program order by program_no asc")
if not degrees.eof then
do while not degrees.eof%>
<tr>
<td width="38%" align="center">
<p align="center"><font face="Tahoma"> <%=degrees("program_name")%></font></td>
<td width="24%" align="center">
 <%=degrees("persent")%></td>
<td width="21%" align="center">
 <%=degrees("acadimic_wirnning")%></td>
<td width="17%" align="center">
<p align="center"><a href="#" onClick="expandingWindow('update_santific_degrees.asp?program_no=<%=degrees("program_no")%>')"><img border="0" src="../images/icon_pencil.gif"></a><span lang="en-us">
<img border="0" src="../images/icon_trashcan.gif"></span></td>
</tr>
<%
degrees.movenext
loop
else
%>
<tr>
<td width="100%" colspan="4" align="center">
<font face="Tahoma"> لا يوجد درجات علمية مضافة</font></td>
</tr>
<%end if%>
</table>
</center>
</div>

</body>

</html>
<%
conn.close
set conn=nothing
%>

هذا الكود الخاص بالصفحة.

حيث تحتوي على بعض أكواد الجافا سكربت، ولن أتطرق إلى شرحها.

اعتقد بأن الصفحة عادية وتم شرحها من قبل كيف يتم عرض السجلات داخل وسوم ال html.

<a href="#" onClick="expandingWindow('update_santific_degrees.asp?program_no=<%=degrees("program_no")%>')"><img border="0" src="../images/icon_pencil.gif"></a>

في هذا الكود يوجد صورة تدل على عملية التعديل وهي عبارة عن رابط، تنقل المستخدم إلى صفحة اسمها update_santific_degrees.asp حيث هذه الصفحة سوف تقوم بالتعديل على السجل الذي نريد تعديل القيم التي بداخله.

طبعاً الكل سوف يقول كيف يتم تعديل السجل الذي نود تعديل بيانات.

فسوف أريكم كيف نقوم بعمل ذلك.

لو شاهدتم في الرابط الخاص بصفحة التعديل يحتوي على التالي:

update_santific_degrees.asp?program_no=<%=degrees("program_no")%>

سوف تشاهدون أنه مع الرابط سوف يتم بعت معه متغير واسمه program_no حيث قيمته سوف تساوي قيمة الحقل program_no من جدول program، حيث كل سجل يحتوي على رقم مختلف، فعن طريق هذا الرقم سوف نعرض من هو السجل الذي سوف نقوم بالتعديل على بيانات.

ونفس الشئ للرابط الأخر وهو صفحة الحذف للسجلات.

وبذلك نكون قد انتيهنا من هذه الصفحة، وفي المشاركة القادمة سوف يتم شرح كيفية عرض قيم حقول داخل الفورم، ومن ثمه نقوم بتعديل بيناتها.

مع تحياتي.

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

مواضيع مشابهة