0% found this document useful (0 votes)
12 views32 pages

Page 1 Sur 1

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views32 pages

Page 1 Sur 1

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

Page 1 sur 1

ada99:00001.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00002.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00003.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00004.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00005.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00006.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00007.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00008.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00009.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00010.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1

ada99:00011.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
‫إﺟﺮاء اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت‬ ‫‪Page 1 sur 2‬‬

‫ھﺬا درس ﻣﮫﻢ ﻟﻠﻐﺎﻳﺔ و أﺳﺎس ﻟﻠﻌﻤﻞ ﻓﻲ ﺗﻄﺒﯿﻘﺎت اﻟﻮﻳﺐ اﻟﻤﺘﻔﺎﻋﻠﺔ ‪ ..‬و ﻧﻨﺼﺢ ﺑﻤﺘﺎﺑﻌﺔ دروس اﻹﺳﺘﻌﻼم ‪ SQL‬و اﻟﺘﻲ و‬
‫ﺿﻌﺘﮫﺎ أﺻﻼ ﻓﻲ ھﺬا اﻟﻤﻮﻗﻊ ﺧﺼﯿﺼﺎ ﻣﻦ أﺟﻞ ﺗﻘﻨﯿﺔ ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ ‪ ..‬و ﻓﻲ درﺳﻨﺎ ھﺬا ﺳﻨﺘﻨﺎول أھﻢ اﻟﻌﻤﻠﯿﺎت اﻟﺘﻲ ﺗﺠﺮي‬
‫ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻧﺘﯿﺠﺔ ﺣﺪث اﺧﺘﺎره اﻟﻤﺴﺘﺨﺪم ﻣﻦ ﻋﻤﻠﯿﺎت ﺣﺬف و إﺿﺎﻓﺔ و ﺗﻌﺪﻳﻞ ﻛﻼ ﻋﻠﻰ ﺣﺪة ‪ ..‬و ﻟﻨﺒﺪا اﻟﺪرس ‪:‬‬

‫إدﺧﺎل اﻟﻤﻌﻠﻮﻣﺎت ﻟﻠﺠﺪول ‪: Insert‬‬

‫ﻃﺒﻌﺎ ھﺬه اﻟﻄﺮﻳﻘﺔ ﻣﺒﻨﯿﺔ ﻧﻮﻋﺎ ﻣﺎ ﻋﻠﻰ ﻃﺮﻳﻘﺘﯿﻦ و ھﻲ إﻣﺎ ﻋﻦ ﻃﺮﻳﻖ اﻹﺳﺘﻌﻼم ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﺘﺎﻟﯿﺔ ‪:‬‬

‫‪<%//set the connection object and db path .‬‬


‫)"‪Set cn = CreateObject("ADODB.Connection‬‬
‫_ & "=‪cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq‬‬
‫))"‪Server.MapPath("/as4web/database.mdb‬‬
‫‪// take the values of fields sent from the last page‬‬
‫)"‪strName=request("studentName‬‬
‫)"‪strNo=request("studentName‬‬
‫)"‪strClass=request("class‬‬
‫‪//the SQL which update data in the DB as the concepts of updating in SQL‬‬
‫_ & "' ‪sql="INSERT INTO students_table(studentName,studentNo,class)values('"&strName& "' ,‬‬
‫_ & "' ‪strNo& " ' ,‬‬
‫")'"&‪strClass‬‬
‫)"‪set rs=CreateObject("ADODB.recordset‬‬
‫)‪cn.execute(sql‬‬
‫>‪cn.close %‬‬

‫ﻓﻨﺮى ﻣﻦ ھﺬا اﻟﻤﺜﺎل أﻧﻪ ﻗﺪ أرﺳﻠﺖ ﺑﯿﺎﻧﺎت ﻣﻦ ﻧﻮذج ﺑﻪ ﺣﻘﻮل ﺗﺤﻮي ﻣﻌﻠﻮﻣﺎت اﻟﻄﺎﻟﺐ و ﻗﻤﻨﺎ ﻓﻲ ھﺬه اﻟﺼﻔﺤﺔ ﺑﺈﺳﻨﺎدھﺎ ﻟﻘﯿﻢ‬
‫ﻣﺜﻞ ‪ strName‬و ﻏﯿﺮھﺎ ﺛﻢ اﺳﺘﺨﺪﻣﻨﺎ ﺟﻤﻠﺔ اﻹﺿﺎﻓﺔ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﻟﻐﺔ اﻹﺳﺘﻌﻼم اﻟﺘﺮﻛﯿﺒﯿﺔ و اﻟﺘﻲ اﺧﺘﺎرت اﻟﺤﻘﻮل اﻟﺘﻲ ﺳﺘﻀﯿﻒ‬
‫إﻟﯿﮫﺎ و ﺣﺪدت اﻟﻘﯿﻢ اﻟﻤﻀﺎﻓﺔ و ھﻲ اﻟﻘﯿﻢ اﻟﻤﺴﻨﺪ إﻟﯿﮫﺎ اﻟﻘﯿﻢ اﻟﻘﺎدﻣﺔ ﻣﻦ اﻟﻨﻤﻮذج ‪..‬‬

‫أﻣﺎ اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﯿﺔ ﻓﮫﻲ ﺑﺎﺳﺘﺨﺪام ﻃﺮﻳﻘﺔ ال ‪ RecordSet‬ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫‪<%‬‬
‫)"‪Set cn = CreateObject("ADODB.Connection‬‬
‫_ & "=‪cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq‬‬
‫))"‪Server.MapPath("/as4web/database.mdb‬‬
‫)"‪Set rs=CreateObject("ADODB.recordset‬‬
‫)"‪strName=request("studentName‬‬
‫)"‪strNo=request("studentName‬‬
‫)"‪strClass=request("class‬‬
‫‪rs.AddNew‬‬
‫‪rs("studentName")=strName‬‬
‫‪rs("studentNo")=strNo‬‬
‫‪rs("class")=strClass‬‬
‫‪rs.Update‬‬
‫‪rs.Close‬‬
‫>‪Set rs=nothing %‬‬

‫و ﻛﻤﺎ رأﻳﻨﺎ اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﯿﺔ و ھﻲ ﺗﺄﻣﺮ ﺑﺤﺠﺰ ﺳﺠﻞ ﺟﺪﻳﺪ ﺑﺎﺳﺘﺨﺪام اﻷﻣﺮ ‪ rs.AddNew‬ﺛﻢ ﺗﻘﻮم ﺑﺘﺨﺰﻳﻦ اﻟﻘﯿﻢ ﻓﻲ اﻟﺤﻘﻮل اﻟﺘﻲ‬
‫ﺣﺪدﻧﺎه ﺛﻢ ﺗﻘﻮم ﺑﺎﻟﺘﺄﻛﺪ ﻣﻦ ﺗﺨﺰﻳﻨﮫﺎ ﺑﺎﺳﺘﺨﺪام ‪ ،، rs.Update‬و ﻟﻠﻌﻠﻢ ﻓﻲ ﻛﻠﺘﺎ اﻟﻄﺮﻳﻘﺘﯿﻦ إذا ﻟﻢ ﻳﺘﻢ ﺗﺤﺪﻳﺪ أي ﺣﻘﻞ ﻓﺈﻧﻪ ﺳﯿﺘﺮك‬
‫ﻓﺎرﻏﺎ ‪..‬‬

‫ﺗﻌﺪﻳﻞ اﻟﻤﻌﻠﻮﻣﺎت ﻓﻲ اﻟﺠﺪول ‪: Update‬‬

‫‪.mht‬إﺟﺮاء‪20%‬اﻟﻌﻤﻠﯿﺎت‪20%‬ﻋﻠﻰ‪20%‬ﻗﻮاﻋﺪ‪20%‬اﻟﺒﯿﺎﻧﺎت‪mhtml:ada99: %20‬‬ ‫‪18-06-2005‬‬


‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫إﺟﺮاء اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت‬ ‫‪Page 2 sur 2‬‬

‫أﻣﺎ اﻻن ﻓﺴﺄﻗﻮم ﺑﻄﺮح ﺻﯿﻐﺔ ﻟﺘﻌﺪﻳﻞ اﻟﺒﯿﺎﻧﺎت و ﻓﻲ ﺣﻘﯿﻘﺔ اﻷﻣﺮ ھﻨﺎك ﻃﺮق و وﺳﺎﺋﻞ ﻋﺪة ﻟﺬﻟﻚ ﻣﺜﻞ ﻃﺮﻳﻘﺔ ‪ RecordSet‬أﻣﺎ ھﺬا‬
‫اﻟﻤﺜﺎل ﻓﺴﯿﻜﻮن ﻣﺒﻨﯿﺎ ﻋﻠﻰ ﻟﻐﺔ اﻹﺳﺘﻌﻼم اﻟﻤﺮﻛﺒﺔ ‪.. SQL‬‬

‫‪<%‬‬
‫)"‪Set cn = CreateObject("ADODB.Connection‬‬
‫_ & "=‪cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq‬‬
‫))"‪Server.MapPath("/as4web/database.mdb‬‬
‫"‪Name="Ahmed‬‬
‫) " ' "&‪Set rs=cn.execute("update students_Table set studentName=' "Ali" ' where studentName=' "&Name‬‬
‫>‪%‬‬

‫ﻟﻜﻦ ھﻞ ﻳﻤﻜﻨﻚ ﻟﻮﺣﺪك اﺳﺘﻨﺘﺎج اﻟﻄﺮﻳﻘﺔ اﻷﺧﺮى ؟؟ ﻋﺪ ﻟﻤﺜﺎل إدﺧﻞ اﻟﺒﯿﺎﻧﺎت اﻟﺜﺎﻧﻲ ‪ ..‬و ﻓﻜﺮ ﻣﺎ ھﻮ اﻟﺸﻲء اﻟﺬي ﺳﺘﺤﺬﻓﻪ ؟؟ ھﻞ‬
‫ھﻮ ‪ rs.AddNew‬؟؟ و ﻣﺎ اﻟﺬي ﺳﺘﻀﯿﻔﻪ ‪ ..‬ھﻞ ھﻲ ﺟﻤﻠﺔ اﺳﺘﻌﻼم ﺗﻘﻮم ﺑﺎﺧﺘﯿﺎر اﻟﺴﺠﻞ اﻟﺬي ﺑﻪ اﺳﻢ اﻟﻄﺎﻟﺐ أﺣﻤﺪ ‪ ..‬ﻓﻲ واﻗﻊ اﻷﻣﺮ‬
‫ﻟﻘﺪ ﻗﻤﺖ أﻧﺎ ﺑﺎﻹﺟﺎﺑﺔ ‪ ..‬ﻟﻜﻦ ﺳﺄﺗﺮك ﻟﻚ اﻟﺠﺎﻧﺐ اﻟﺒﺮﻣﺠﻲ و ھﻲ ﻓﻲ ﻗﻤﺔ اﻟﺴﮫﻮﻟﺔ ‪..‬‬

‫ﺣﺬف اﻟﻤﻌﻠﻮﻣﺎت ﻣﻦ اﻟﺠﺪول ‪: Delete‬‬

‫أﻧﺎأﻇﻨﻚ ﻋﺮﻓﺘﮫﺎ ﻟﻮﺣﺪك دون ﻣﺜﺎل ﻟﻜﻦ ﻻ ﻣﺎﻧﻊ ﻣﻦ ذﻛﺮھﺎ ﻛﻤﺮﺟﻊ ﻟﻚ و اﻟﻄﺮﻳﻘﺔ ھﻲ اﻟﺘﺎﻟﯿﺔ ‪:‬‬

‫‪<%‬‬
‫)"‪Set cn = CreateObject("ADODB.Connection‬‬
‫_ & "=‪cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq‬‬
‫))"‪Server.MapPath("/as4web/database.mdb‬‬
‫‪if request("studentNo") then‬‬
‫)"‪cn.execute "delete * from comments where studentNo="&request("studentNo‬‬
‫‪end if‬‬
‫>‪%‬‬

‫و ﻟﻘﺪ ﺗﻌﻤﺪت ذﻛﺮ ﻃﺮﻳﻘﺔ اﻹﺳﺘﻌﻼم ﺑﺄﻛﺜﺮ ﻣﻦ ﻃﺮﻳﻘﺔ ﻣﺜﻞ وﺿﻌﮫﺎ ﺑﯿﻦ اﻷﻗﻮاس أو ﻋﺪم وﺿﻊ اﻷﻗﻮاس ﻛﻲ ﺗﺴﺘﻨﺘﺞ ﺑﻨﻔﺴﻚ ﻣﺪى‬
‫ﺗﻌﺪد اﻟﻄﺮق اﻟﻤﮫﻢ ﺻﺤﺘﮫﺎ اﻟﺒﺮﻣﺠﯿﺔ ‪ ..‬و ذﻟﻚ أﺣﺪ اﻷﺳﺒﺎب اﻟﺘﻲ ﺗﻌﻄﻲ ﺗﻘﻨﯿﺔ ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ إﻣﺘﯿﺎزات ﻋﻠﻰ ﻏﯿﺮھﺎ ﻣﻦ ﻟﻐﺎت‬
‫اﻟﻮﻳﺐ ‪..‬‬

‫و ھﻜﺬا وﺻﻠﻨﺎ ﻟﻨﮫﺎﻳﺔ ھﺬا اﻟﺪرس و اﻟﺬي أﻗﻮل ﻟﻜﻢ ﻓﯿﻪ أن ﺗﻌﻮدوا ﻟﻮرﺷﺔ اﻟﻌﻤﻞ ﻟﺘﺮوا اﻷﻣﺜﻠﺔ ﻋﻠﻰ ھﺬه اﻷﻛﻮاد ﻣﻦ ﺧﻼل ﺗﻄﺒﯿﻘﺎت‬
‫ﻣﺨﺘﻠﻔﺔ ﻣﺜﻞ ﻋﻤﻞ ﺳﺠﻞ زوار أو ﻣﺸﺮوع اﻟﻌﻼﻣﺎت اﻟﺠﺎﻣﻌﯿﺔ و اﻟﺒﺤﺚ و ﻏﯿﺮھﺎ اﻟﻜﺜﯿﺮ ‪..‬و ﻻ ﺗﻈﻨﻮا أن ورﺷﺔ اﻟﻌﻤﻞ وﺿﻌﺖ ﻋﺒﺜﺎ ‪..‬‬

‫‪.mht‬إﺟﺮاء‪20%‬اﻟﻌﻤﻠﯿﺎت‪20%‬ﻋﻠﻰ‪20%‬ﻗﻮاﻋﺪ‪20%‬اﻟﺒﯿﺎﻧﺎت‪mhtml:ada99: %20‬‬ ‫‪18-06-2005‬‬


‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻨﻤﺎذج و ﻃﺮﻗﮭﺎ‬ ‫‪Page 1 sur 2‬‬

‫ﺗﻌﺘﺒﺮ اﻟﻨﻤﺎذج ﻣﻦ أﻛﺜﺮ اﻟﻄﺮق اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﻧﻘﻞ اﻟﻤﻌﻠﻮﻣﺎت و اﻟﺘﻌﺎﻣﻞ ﻣﻌﮫﺎ ﻓﻲ ﺗﻄﺒﯿﻘﺎت ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ‬
‫‪ . ASP‬ﻓﻤﺜﻼ أﻏﻠﺐ اﻟﺒﯿـــــﺎﻧﺎت اﻟﺘﻲ ﻧﺴﺘﺨـﺪﻣﮫﺎ ھﻲ ﻛﻠﻤﺎت ﻣﺮور و أﺳﻤﺎء ﻣﺴﺘﺨﺪﻣﯿﻦ و أﻋﻀﺎء و ﻛﺘﺎﺑﺔ ﻣﻘﺎﻻت و ﻓﻘﺮات و ﻣﻦ‬
‫اﻟﻄﺒﯿﻌﻲ إدﺧﺎﻟﮫﺎ إﻟﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻋﻦ ﻃﺮﻳﻖ ﻧﻤﺎذج أو ﻣﺎ ﺗﺴﻤﻰ ﺑﺎل ‪ . FORM‬و ﻗﺪ ذﻛﺮت أﻣﺜﻠﺔ ﻋﺪة ﻓﻲ دروس اﻟﺴﻜﺮﻳﺒﺖ ﺗﻌﺎﻟﺞ‬
‫ﻣﻮﺿﻮع اﻟﻨﻤﺎذج ﻟﻜﻦ ھﻨﺎﻟﻚ اﺧﺘﻼف ﺑﺴﯿﻂ ﺑﯿﻨﮫﻤﺎ و ھﻮ أﻧﻨﺎ ﺳﻨﺴﺘﺨﺪم ﻃﺮق ﻟﻠﻨﻤﻮذج ﻣﺜﻞ ‪ POST‬و ‪ GET‬ﻟﻨﻘﻞ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺪﺧﻠﺔ و‬
‫ﺳﻨﺘﻌﺮف ﻣﺎ اﻟﻔﺮق ﺑﯿﻨﮫﻤﺎ و أﻳﻦ ﻧﺤﺘﺎج ھﺬه و ﻣﺘﻰ ﻧﺨﺘﺎر اﻷﺧﺮى ‪ ..‬و ﻟﻨﺒﺪأ درﺳﻨﺎ ﺑﺘﻌﺮﻳﻒ ﺷﻜﻞ اﻟﻨﻤﻮذج و ﺑﯿﺎن اﻻﺧﺘﻼف ﺑﯿﻦ ﻃﺮﻗﻪ ‪:‬‬

‫ﻓﻲ اﻟﺒﺪاﻳﺔ ﻧﻔﺮض أن ﻟﺪﻳﻨﺎ ﺻﻔﺤﺔ ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﻃﺎﻟﺐ ‪ ،‬ﻓﻜﯿﻒ ﻳﺘﻢ ذﻟﻚ ؟؟ ﻣﻦ اﻟﻤﻨﻄﻘﻲ أن ﺻﻔﺤﺔ اﻟﺘﺤﻘﻖ ﺳﺘﺴﺘﻘﺒﻞ ﺑﯿﺎﻧﺎت اﻟﻄﺎﻟﺐ‬
‫ﻣﻦ اﺳﻢ و رﻗﻢ ﺟﺎﻣﻌﻲ ﻣﺜﻼ ﻣﻦ اﻟﺼﻔﺤﺔ اﻟﺮﺋﯿﺴﯿﺔ ﻣﺜﻼ ﻟﻜﻦ ﻛﯿﻒ ﺗﻨﺘﻘﻞ ھﺬه اﻟﺒﯿﺎﻧﺎت ؟؟؟ ھﺬا ﻣﺎ ﺳﻨﺮاه ‪..‬‬

‫‪<%‬‬
‫)"‪name=request.Form("name‬‬
‫)"‪password=request.Form("password‬‬
‫"&‪set rs=cn.Execute("select * from students_table where studentName=' "&name&" ' and studentNo =' "&password‬‬
‫)" '‬
‫‪if rs.eof then‬‬
‫"اﻟﻄﺎﻟﺐ ﻏﯿﺮ ﻣﻮﺟﻮد" ‪response.write‬‬
‫‪else‬‬
‫" اﻟﻄﺎﻟﺐ ﻣﻮﺟﻮد" ‪response.write‬‬
‫‪end if‬‬
‫>‪%‬‬

‫ﻣﻦ اﻟﻮاﺿﺢ ﻟﻠﻨﺎﻇﺮ أن اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻳﺨﺺ ﺻﻔﺤﺔ اﻟﺘﺤﻘﻖ ﻣﻦ اﻟﺒﯿﺎﻧﺎت ‪ ..‬ﻃﺒﻌﺎ ﺟﺰءا ﻣﻦ اﻟﺼﻔﺤﺔ ‪ ..‬و ﻧﺮى أن اﻟﺼﻔﺤﺔ‬
‫ﺗﺴﺘﻘﺒﻞ اﻟﻌﻨـﺎﺻﺮ ‪ name‬و ‪ password‬ﻋﻦ ﻃﺮﻳﻖ اﻟﻜﺎﺋﻦ ‪ .. request‬و أﺳﻨﺪﻧﺎ اﻟﻘﯿﻢ ﻟﻤﺘﻐﯿﺮات ﻛﻲ ﺗﺴﮫﻞ ﻋﻤﻠﯿﺔ اﻟﻤﻘﺎرﻧﺔ ﻻ ﻏﯿﺮ ‪ ..‬ﺛﻢ‬
‫اﺳﺘﺨﺪﻣﻨﺎ ﺟﻤﻠﺔ اﺳﺘﻌﻼم ﺗﻘﻮم ﺑﺎﺧﺘﯿﺎر اﻟﺴﺠﻞ اﻟﺬي ﻳﺤﻤﻞ اﺳﻢ و رﻗﻢ اﻟﻄﺎﻟﺐ و إذا ﻟﻢ ﻳﺠﺪه ﺳﯿﻈﮫﺮ رﺳﺎﻟﺔ ﺗﻌﺮف ﺑﻌﺪم وﺟﻮد‬
‫اﻟﻄﺎﻟﺐ و إﻻ ﺳﯿﺨﺒﺮك ﺑﻮﺟﻮده ‪ ...‬ﻟﻜﻦ ھﻞ ﺗﻌﻠﻢ ﺑﺄن ﻛﻠﻤﺔ ‪ Name‬و ‪ Password‬ھﻲ أﺳﻤﺎء اﻟﺤﻘﻮل ﻓﻲ اﻟﻨﻤﻮذج اﻟﺬي ﻳﺮﺳﻞ اﻟﺒﯿﺎﻧﺎت‬
‫ﻟﮫﺬه اﻟﺼﻔﺤﺔ ‪ ..‬و ھﺬا ﻣﺜﺎل ﻟﻠﻨﻤﻮذج ‪:‬‬

‫>"‪<form name=MyForm action="check.asp" method="POST‬‬


‫>"‪Student Name:<input type="text" name="name" size="20‬‬
‫>"‪Student Number:<input type="password" name="password" size="20‬‬
‫>"‪<input type="submit" name="send" value="send‬‬
‫>‪</form‬‬

‫ﻃﺒﻌﺎ اﻟﺰر ﻣﻦ ﻧﻮع ‪ submit‬أي أﻧﻪ ﻋﻨﺪ اﻟﻀﻐﻂ ﻳﻘﻮم ﺑﺘﻨﻔﯿﺬ اﻟﺤﻘﻞ ﺣﺴﺐ ﻣﻌﻠﻮﻣﺎت اﻟﺤﻘﻞ ‪ ..‬و ھﻨﺎ ﻧﺮى ﻓﻲ اﻟﺤﻘﻞ أن اﻟﺤﺪث‬
‫اﻟﻤﺮﺗﺒﻂ ﺑﻪ ‪ action‬ھﻮ اﻻﻧﺘﻘﺎل ﻟﺼﻔﺤﺔ ‪ check.asp‬و ھﻲ ﺻﻔﺤﺔ اﻟﺘﺄﻛﺪ ﻣﻦ اﻟﺒﯿﺎﻧﺎت ‪ ،‬ﻛﻤﺎ ﻧﺮى و ھﺬا ﻣﮫﻢ ﻟﻠﻐﺎﻳﺔ أﻧﻪ اﺳﺘﺨﺪم ﻃﺮﻳﻘﺔ‬
‫‪ post‬و ﺳﺄذﻛﺮ ﻓﻲ اﺧﺮ اﻟﺪرس أھﻤﯿﺘﮫﺎ و اﺧﺘﻼﻓﮫﺎ ﻋﻦ ﻃﺮﻳﻘﺔ ‪ .. GET‬ﻃﺒﻌﺎ اﻟﻨﻮذج ﻳﺮﺳﻞ اﻟﺒﯿﺎﻧﺎت ﻟﻠﺼﻔﺤﺔ اﻟﻤﺤﺪدة و ﻗﺪ ﺗﻜﻮن ﻧﻔﺲ‬
‫اﻟﺼﻔﺤﺔ و اﻟﺘﻲ ﺑﺪورھﺎ ﺗﺄﺧﺬ اﻟﺒﯿﺎﻧﺎت و ﺗﺘﻌﺎﻣﻞ ﻣﻌﮫﺎ ﺣﺴﺐ وﻇﯿﻔﺔ اﻟﺼﻔﺤﺔ ‪..‬‬

‫أﻣﺎ اﻟﻄﺮﻳﻘﺔ اﻷﺧﺮى ﻃﺮﻳﻘﺔ ‪ GET‬ﻓﮫﻲ ﺗﺨﺘﻠﻒ ﻧﻮﻋﺎ ﻣﺎ ﻋﻦ اﻟﻄﺮﻳﻘﺔ اﻟﺴﺎﺑﻘﺔ و ﻟﺘﻮﺿﯿﺢ ﻣﺎ أﻗﺼﺪ ﻧﺮى ھﺬا اﻟﻨﻤﻮذج اﻟﺬي‬
‫ﻧﻔﺘﺮض أﻧﻪ ﻳﻌﺮض ﻣﻘﺎﻻت ﻟﻠﻄﺎﻟﺐ اﻟﺬي ﻛﺘﺐ اﺳﻤﻪ و ھﺬا ھﻮ اﻟﻤﺜﺎل ‪:‬‬

‫>"‪<form name=MyForm action="check.asp" method="GET‬‬


‫>"‪Student Name:<input type="text" name="name" size="20‬‬
‫>"‪Student Number:<input type="password" name="password" size="20‬‬
‫>"‪<input type="submit" name="send" value="send‬‬
‫>‪</form‬‬

‫رأﻳﻨﺎ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ ﻃﺮﻳﻘﺔ ‪ GET‬ﺑﺪﻻ ﻣﻦ ‪ POST‬و ﻧﺮى أول اﺧﺘﻼف و ھﻮ ﻓﻲ ﺷﺮﻳﻂ اﻟﻌﻨﻮان ﻋﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰر ‪ ..‬ﻓﻨﺮاه‬
‫ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫‪check.asp?name=mohd&password=12345&send=send‬‬

‫ﻛﻤﺎ ﻧﺮى ﻓﻲ ﺷﺮﻳﻂ اﻟﻌﻨﻮان أﻧﻪ ﺑﻌﺪ اﺳﻢ اﻟﺼﻔﺤﺔ ﻇﮫﺮت إﺷﺎرة ؟ و ھﻲ ﺗﻔﯿﺪ أن ﻣﺎ ﺑﻌﺪھﺎ ھﻲ ﻗﯿﻢ ﻣﺮﺳﻠﺔ ﺑﻮاﺳﻄﺔ ﻧﻤﻮذج ﻣﺎ و‬
‫ھﻲ ﻛﻤﺎ ﻧﺮى ﺗﺒﺪأ ﺑﻜﻠﻤﺔ ‪ name‬و ھﻲ ﺗﺴﺎوي ‪ Mohd‬و ھﻲ اﻟﻘﯿﻤﺔ اﻟﻤﺪﺧﻠﺔ ﻟﻠﺤﻘﻞ ‪ name‬ﻗﺒﻞ ارﺳﺎل اﻟﺒﯿﺎﻧﺎت و ﻛﺬﻟﻚ ﻛﻠﻤﺔ اﻟﻤﺮور‬
‫ﻛﻤﺎ أرﺳﻞ اﻟﻨﻤﻮذج اﺳﻢ اﻟﺰر ‪ send‬و ﻛﻤﺎ ﻧﺮى ﻓﺈن اﻟﻘﯿﻢ اﻟﻤﺴﻨﺪة ﻓﻲ ﺷﺮﻳﻂ اﻟﻌﻨﻮان ھﻲ اﻟﻘﯿﻤﺔ ‪ value‬ﻟﻜﻞ ﺣﻘﻞ ﻛﻞ ﻟﻮﺣﺪه ‪ ..‬و‬

‫‪.mht‬اﻟﺘﻌﺎﻣﻞ‪20%‬ﻣﻊ‪20%‬اﻟﻨﻤﺎذج‪20%‬و‪20%‬ﻃﺮﻗﮭﺎ‪mhtml:ada99: %20‬‬ ‫‪18-06-2005‬‬


‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻨﻤﺎذج و ﻃﺮﻗﮭﺎ‬ ‫‪Page 2 sur 2‬‬

‫ﻃﺒﻌﺎ ﻗﯿﻤﺔ اﻟﺰر ‪ send‬ھﻲ ‪ send‬ﻛﻤﺎ ﻛﺘﺒﻨﺎھﺎ ﻓﻲ اﻟﻨﻤﻮذج أﻣﺎم ‪ .. name‬و ھﻜﺬا ‪ ..‬ﻟﻜﻦ ﻛﯿﻒ ﻳﻤﻜﻨﻨﺎ ﻋﺮض اﻟﻄﻠﺒﺔ اﻟﺬﻳﻦ ﻳﺤﻤﻠﻮن ﻧﻔﺲ‬
‫اﻹﺳﻢ ؟؟ اﻧﻈﺮ ھﺬا اﻟﻜﻮد ‪:‬‬

‫)"‪<% name=request.QueryString("name‬‬
‫‪set rs=cn.execute "select * from students_table where studentName="&name‬‬
‫‪while not rs.eof‬‬
‫‪response.write rs("studentName") & VbCrLf‬‬
‫‪rs.movenext‬‬
‫>‪WEND %‬‬

‫ﻛﻤﺎ رأﻳﻨﺎ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ ‪ request.QueryString‬ﺑﺪﻻ ﻣﻦ ‪ request.Form‬و اﻷوﻟﻰ ﺗﻤﻜﻨﻨﺎ ﻣﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻘﯿﻢ اﻟﻤﻮﺟﻮدة ﻓﻲ‬
‫ﺷﺮﻳﻂ اﻟﻌﻨﻮان و اﻟﻤﺮﺳﻠﺔ ﻣﻦ ﻧﻤﻮذج ﻣﺎ ‪ ..‬و ﻧﺮى أﻧﻨﺎ وﺿﻌﻨﺎ ﺑﯿﻦ اﻷﻗﻮاس ﻛﻠﻤﺔ ‪ name‬و ھﻲ ﺑﺎﻟﺘﺎﻟﻲ ﺗﻔﯿﺪ ﻓﻲ أﺧﺬ ﻗﯿﻤﺔ ‪name‬‬
‫اﻟﻤﺮﺳﻠﺔ و ھﻲ ﺗﺄﺧﺬ ﻛﻞ اﻟﻜﻼم ﺑﻌﺪ إﺷﺎرة = و ﺣﺘﻰ إﺷﺎرة & إن وﺟﺪت و اﻟﺘﻲ ﺗﻔﯿﺪ وﺟﻮد ﻗﯿﻤﺔ أﺧﺮى ﻣﺮﺳﻠﺔ ‪.‬و ﻗﺪ ﺗﻜﻮن ھﻨﺎك أﻛﺜﺮ‬
‫ﻣﻦ ﻗﯿﻤﺔ ﻣﺮﺳﻠﺔ ﺑﺎﺳﻢ ‪.. name‬‬

‫اﻟﻔﺮق ﺑﯿﻦ ﻃﺮﻳﻘﺔ ‪ POST‬و ﻃﺆﻳﻘﺔ ‪: GET‬‬

‫أول اﺧﺘﻼف ﺑﯿﻨﮫﻤﺎ ھﻮ أن ‪ POST‬ﺗﺴﺘﺨﺪم ‪ request.Form‬أﻣﺎ ‪ GET‬ﻓﺘﺴﺘﺨﺪم ‪ .. request.QueryString‬ﻛﻤﺎ أن ‪ GET‬ﺗﺴﺘﺨﺪم‬


‫ﻓﻲ اﻟﻤﻌﻠﻮﻣﺎت اﻟﺼﻐﯿﺮة و ﺗﻈﮫﺮ ﻓﯿﮫﺎ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻠﻰ ﺷﺮﻳﻂ اﻟﻌﻨﻮان اﻟﺨﺎص ﺑﻤﺘﺼﻔﺤﻚ أﻣﺎ ﻃﺮﻳﻘﺔ ‪ POST‬ﻓﺘﺴﺘﺨﺪم ﻓﻲ أي ﻧﻮع ﻣﻦ‬
‫اﻟﺤﻘﻮل ﻣﮫﻤﺎ ﻛﺎﻧﺖ ﺑﯿﺎﻧﺎﺗﻪ و ﻻ ﺗﻈﮫﺮ أي اﻣﺘﺪادات أﺧﺮى ﻋﻠﻰ ﺷﺮﻳﻂ اﻟﻌﻨﻮان ﻏﯿﺮ اﺳﻢ اﻟﻤﻠﻒ اﻟﺬي أرﺳﻠﻨﺎ إﻟﯿﻪ اﻟﻤﻌﻠﻮﻣﺎت و ھﺬا أﻳﻀﺎ‬
‫ﻧﻮع ﻣﻦ اﻟﺴﺮﻳﺔ ‪..‬‬

‫أﺗﻤﻨﻰ أن أﻛﻮن ﻗﺪ وﻓﻘﺖ ﻓﻲ ھﺬا اﻟﺸﺮح اﻟﻤﺘﻮاﺿﻊ ﻟﮫﺬا اﻟﺪرس ‪ ..‬و ﺷﻜﺮا ﻟﻤﺘﺎﺑﻌﺘﻜﻢ ھﺬه اﻟﺪروس ‪ ..‬و ﻻ ﺗﺒﺨﻠﻮا ﻋﻠﯿﻨﺎ ﺑﺎﻷراءو‬
‫اﻷﻓﻜﺎر ﻓﺎﻟﻤﻮﻗﻊ ﻣﺼﻤﻢ ﻣﻦ أﺟﻠﻜﻢ و ﻛﻠﻤﺎ زاد رﻗﯿﺎ و وﺿﻮﺣﺎ و ﻋﻤﺖ اﻟﻔﺎﺋﺪة ‪ ..‬و ﻻ ﺗﻨﺴﻮا ورﺷﺔ اﻟﻌﻤﻞ ‪..‬‬

‫‪.mht‬اﻟﺘﻌﺎﻣﻞ‪20%‬ﻣﻊ‪20%‬اﻟﻨﻤﺎذج‪20%‬و‪20%‬ﻃﺮﻗﮭﺎ‪mhtml:ada99: %20‬‬ ‫‪18-06-2005‬‬


‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت‬ ‫‪Page 1 sur 2‬‬

‫ﻧﺘﻌﺮف ﻓﻲ ھﺬا اﻟﺪرس ﻋﻠﻰ ﻃﺮﻳﻘﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و ﺗﻌﺮﻳﻒ ﻣﺴﺎرھﺎ و ﻃﺮق ﻟﻌﺮ ﺿﺎﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ ﺑﺎﻟﻘﺎﻋﺪة‬
‫ﺛﻢ ﻧﺘﻌﺮض ﻟﻄﺮق ﺗﺤﺴﯿﻨﯿﺔ ﻓﻲ ﻋﺮض اﻟﺒﯿﺎﻧﺎت و ﻓﻲ اﻟﺪرس اﻟﻘﺎدم ﺳﺄﻗﻮم ﺑﺸﺮح ﻋﻤﻠﯿﺎت اﻹدﺧﺎل و اﻟﺤﺬف و اﻟﺘﻌﺪﻳﻞ ﻋﻠﻰ ﻗﺎﻋﺪة‬
‫اﻟﺒﯿﺎﻧﺎت و ﻟﻨﺒﺪأ درﺳﻨﺎ ﺑﺸﺮح ﻣﻘﺪﻣﺔ ﻋﻦ اﻟﻤﻮﺿﻮع ‪:‬‬

‫ﺗﻌﺮﻓﻨﺎ ﻣﻦ ﺧﻼل اﻟﺪروس اﻟﺴﺎﺑﻘﺔ ﻛﯿﻔﯿﺔ ﺗﻌﺎﻣﻞ اﻟﺼﻔﺤﺎت اﻟﻨﺸﻄﺔ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻧﺎﺣﯿﺔ رﻳﺎﺿﯿﺔ أو ﻣﻨﻄﻘﯿﺔ ‪ ..‬ﻟﻜﻦ ﻣﻦ ﻣﻤﯿﺰات‬
‫ﺗﻜﻨﻮﻟﻮﺟﯿﺎ اﻟﺼﻔﺤﺎت اﻟﻨﺸﻄﺔ ﻗﺪرﺗﮫﺎ ﻋﻠﻰ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺘﻠﻔﺔ ﻋﻦ ﻃﺮﻳﻖ ﻛﺎﺋﻦ ‪ ADO‬أو ‪ ActiveX Data Object‬و‬
‫اﻟﺬي ﻃﻮرﺗﻪ ﺷﺮﻛﺔ ﻣﯿﻜﺮوﺳﻮﻓﺖ و اﻟﺬي ﻳﻌﯿﻦ ﻓﻲ اﻹﺗﺼﺎل ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻋﻦ ﻃﺮﻳﻖ ‪ OLE-DB‬و ﺗﻘﻨﯿﺔ ‪ ODBC‬ﻣﻤﺎ ﻳﺘﯿﺢ ﻟﻨﺎ اﻟﺘﻌﺎﻣﻞ‬
‫ﻣﻊ أﻧﻤﺎط ﻣﺨﺘﻠﻔﺔ ﻣﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻣﺜﻞ أوراﻛﻞ و ‪ SQL Server‬و اﻟﻌﺪﻳﺪ اﻟﻌﺪﻳﺪ و اﻟﺘﻲ ﺳﺄﻛﺘﻔﻲ ھﻨﺎ ﺑﺸﺮح ﻃﺮﻳﻘﺔ اﻟﺘﻮﺻﯿﻞ ﻣﻊ‬
‫ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﻦ ﻧﻮع أﻛﺴﯿﺲ ‪.‬‬

‫ﻳﻌﺘﺒﺮ اﻟﻜﺎﺋﻦ ‪ ADO‬أﺳﺎس ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت و ھﻮ ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﺛﻼث أﺷﯿﺎء و ھﻲ ‪ connection‬و ‪ recordset‬و‬
‫‪ . command‬ﻃﺒﻌﺎ ال ‪ connection‬ﻣﺴﺆوﻟﺔ ﻋﻦ إﺟﺮاء اﻹﺗﺼﺎل ﺑﺎﻟﻤﺰود ‪ Provider‬ﻣﺜﻞ اﻷﻛﺴﯿﺲ ‪ ،‬أﻣﺎ ال ‪ recordset‬ﻓﮫﻲ ﻣﺠﻤﻮﻋﺔ‬
‫ﺣﻘﻮل ﻧﺴﺘﻄﯿﻊ اﻟﺘﺤﻜﻢ ﺑﮫﺎ ﺣﺴﺐ اﻟﺤﺎﺟﺔ و ھﻲ ﺗﻨﺘﺞ ﻧﺘﯿﺠﺔ اﺳﺘﻌﻼم ﻣﻌﯿﻦ ‪ ،‬و أﺧﯿﺮا اﻷﻣﺮ ‪ command‬و اﻟﺬي ھﻮ ﻋﺒﺎرة ﻋﻦ ﻧﻮع‬
‫اﻟﺤﺪث اﻟﻤﺮﺗﺒﻂ ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﺗﻌﺪﻳﻞ و ﻋﻤﻠﯿﺎت و ﻏﯿﺮھﺎ ‪..‬‬

‫ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺳﺄﺳﺮد ﻣﺜﺎﻻ ﺑﺴﯿﻄﺎ ﻳﻌﺮض ﺑﯿﺎﻧﺎت ﺟﻤﯿﻊ اﻟﻄﻠﺒﺔ اﻟﻤﺴﺠﻠﯿﻦ ﻣﺜﻼ ﻓﻲ ﻣﺪرﺳﺔ ‪ ،‬ﻟﻜﻦ أود أن ﻧﻔﺮض أن‬
‫ھﻨﺎك ﺟﺪوﻻ ﻟﻠﻄﻠﺒﺔ ﺑﻪ ﺣﻘﻞ ﻷﺳﻤﺎء اﻟﻄﻠﺒﺔ و ﺣﻘﻞ ﻷرﻗﺎم ﺟﻠﻮﺳﮫﻢ و ﺣﻘﻞ ﻟﻠﺼﻒ ﻋﻠﻰ اﻟﺘﺮﺗﯿﺐ اﻟﺘﺎﻟﻲ ‪ studentName‬و ‪studentNo‬‬
‫و ‪: class‬‬

‫>‪<%@codePage=1256%‬‬
‫>‪<html‬‬
‫‪<%‬‬
‫)"‪Set cn = CreateObject("ADODB.Connection‬‬
‫_ & "=‪cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq‬‬
‫))"‪Server.MapPath("/as4web/database.mdb‬‬
‫" ‪sql="Select * from students_table‬‬
‫)"‪Set rs=CreateObject("ADODB.recordset‬‬
‫‪rs.open sql, cn, 3 , 3‬‬
‫‪rs.MoveFirst‬‬
‫‪while not rs.eof‬‬
‫">‪response.write rs("studentName") & "<br‬‬
‫‪rs.moveNext‬‬
‫‪wend‬‬
‫>‪%‬‬
‫>‪<head‬‬
‫>‪<title></title‬‬
‫>‪</head‬‬
‫>‪<body‬‬
‫>‪</body‬‬
‫>‪</html‬‬

‫ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ رأﻳﻨﺎ ﻛﯿﻒ ﺗﻢ ﺗﻌﺮﻳﻒ ﻛﺎﺋﻦ ﻟﻺﺗﺼﺎل ﺑﺎﻟﺨﺎدم و ھﻮ ‪ cn‬ﺛﻢ ﻗﻤﻨﺎ ﺑﺘﺤﺪﻳﺪ ﻧﻮع ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺘﺼﻠﺔ ﻣﻌﻪ و ھﻲ‬
‫ﻣﻦ ﻧﻮع أﻛﺴﯿﺲ ﺛﻢ ﺣﺪدﻧﺎ ﻣﺴﺎرھﺎ ﻣﻊ اﻟﺠﺰء ‪ ،، Server.MapPath‬ﺑﻌﺪ ذﻟﻚ أﻧﺸﺄﻧﺎ اﺳﺘﻌﻼﻣﺎ ﻳﻘﻮم ﺑﺎﺧﺘﯿﺎر ﻛﻞ اﻟﺤﻘﻮل ﻣﻦ اﻟﺠﺪول‬
‫‪ ، students_table‬ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﻗﻤﻨﺎ ﺑﺘﻌﺮﻳﻒ ﺳﻠﺴﻠﺔ ﺳﺠﻼت اﺳﻨﺪﻧﺎ ﻟﮫﺎ اﻹﺳﻢ ‪ rs‬و ﺟﻌﻠﻨﺎھﺎ ﻣﺮﺗﺒﻄﺔ ﺑﺎﻹﺗﺼﺎل ‪ cn‬و اﻻﺳﺘﻌﻼم ‪ sql‬أﻣﺎ‬
‫اﻟﻤﺘﻐﯿﺮﻳﻦ ‪ 3‬و ‪ 3‬ﻓﮫﻤﺎ ﻳﻘﻮﻣﺎن ﺑﻌﻤﻠﯿﺔ اﻹﻏﻼق ‪ lock‬ﻟﻠﺠﺪول و ھﺬه ﺳﺄﺿﻌﮫﺎ ﻓﻲ ﻣﻠﺤﻖ ﻟﻠﺪروس ‪ ..‬ﺛﻢ ﻗﻤﻨﺎ ﺑﻌﺪ ذﻟﻚ ﺑﺎﺳﺘﺨﺪام‬
‫‪ rs.moveFirst‬ﻟﻺﻧﺘﻘﺎل ﺑﻤﺆﺷﺮ اﻟﺴﺠﻼت ‪ rs‬إﻟﻰ أول ﺳﺠﻞ ﺛﻢ اﺳﺘﺨﺪﻣﻨﺎ اﻟﺪوارة ﻧﻔﺴﮫﺎ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ و ﻓﻲ‬
‫ﻛﻞ ﻣﺮة ﺗﻘﻮم اﻟﺪوارة ﺑﻄﺒﺎﻋﺔ اﺳﻢ اﻟﻄﺎﻟﺐ و ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﻷﻣﺮ ‪ response.write‬و اﻟﺬي ﻳﺄﺧﺬ اﻟﻘﯿﻤﺔ ‪ studentName‬ﻣﻦ اﻟﺴﺠﻞ ‪rs‬‬
‫‪ ،‬ﺛﻢ ﺗﻘﻮم ﺑﺎﻹﻧﺘﻘﺎل ﻣﺴﺎﻓﺔ ﺳﺠﻞ ﻋﻦ ﻃﺮﻳﻖ ‪ . rs.moveNxt‬و ﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﻤﺎ ﺳﺘﻼﺣﻈﻮن أﻧﻪ ﺗﻤﺖ ﻛﺘﺎﺑﺔ اﺳﻢ ﻛﻞ ﻃﺎﻟﺐ ﻋﻠﻰ ﺳﻄﺮ‬
‫ﻣﻨﻔﺮد ﻧﺘﯿﺠﺔ اﺳﺘﺨﺪام ">‪ "< br‬و ﻳﻤﻜﻦ اﻹﺳﺘﻐﻨﺎء ﻋﻨﮫﺎ ﺑﺎﺳﺘﺨﺪام ‪. vbCrLf‬‬

‫‪ .. :‬ﻟﻜﻦ ھﻨﺎك ﻃﺮق أﺧﺮى ﻟﺘﺤﺴﯿﻦ ﻣﻨﻈﺮ اﻟﻤﺨﺮﺟﺎت ﻛﺠﻌﻠﮫﺎ ﺗﻈﮫﺮ ﻓﻲ ﺟﺪول ‪ ..‬أﻧﻈﺮ ھﺬه اﻟﻄﺮﻳﻘﺔ‬

‫>‪<%@codepage=1256%‬‬
‫>"‪<html dir="rtl‬‬
‫‪<%‬‬
‫)"‪Set cn = CreateObject("ADODB.Connection‬‬
‫_ & "=‪cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq‬‬

‫‪.mht‬اﻟﺘﻌﺎﻣﻞ‪20%‬ﻣﻊ‪20%‬ﻗﻮاﻋﺪ‪20%‬اﻟﺒﯿﺎﻧﺎت‪mhtml:ada99: %20‬‬ ‫‪18-06-2005‬‬


‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت‬ Page 2 sur 2

Server.MapPath("/as4web/database.mdb"))

sql="Select * from students_table "


set rs=CreateObject("ADODB.recordset")
rs.open sql, cn, 3 , 3
rs.MoveFirst
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>New Page 1</title>
</head>
<body>
<table border=2>
<tr><td>‫<اﻻﺳﻢ‬/td><td>‫<اﻟﺮﻗﻢ اﻟﺠﺎﻣﻌﻲ‬/td></tr>
<% while not rs.eof %>
<td><%=rs("studentName")%></td>
<td><%=rs("studentNo")%></td>
</tr>
<% rs.movenext
wend
%>
</table>
</body>
</html>

‫و ھﻜﺬا ﻧﻜﻮن اﻧﺘﮫﯿﻨﺎ ﻣﻦ ھﺬا اﻟﺪرس اﻟﻤﮫﻢ ﻟﻠﻐﺎﻳﺔ ﻋﻤﻠﯿﺎ و اﻟﺬي ﻳﻤﻜﻨﻨﺎ ﻣﻦ اﻟﺪﺧﻮل ﻓﻲ ﻏﻤﺎر اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و اﻟﺘﻲ‬
.. ‫ ﻛﯿﻒ ﺳﯿﺘﻢ إدﺧﺎل اﻟﺒﯿﺎﻧﺎت ﻟﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت و اﻟﺘﻌﺪﻳﻞ و اﻟﺤﺬف‬ASP ‫ﺳﻨﺮى ﻓﻲ اﻟﺪرس اﻟﻘﺎدم و اﻟﺬي ﻳﻌﺪ ﻣﻦ أھﻢ دروس ال‬

mhtml:ada99: %20‫اﻟﺒﯿﺎﻧﺎت‬20%‫ﻗﻮاﻋﺪ‬20%‫ﻣﻊ‬20%‫اﻟﺘﻌﺎﻣﻞ‬.mht 18-06-2005


PDF created with pdfFactory trial version www.pdffactory.com
‫ﻃﺮﯾﻘﺔ ﺗﺜﺒﯿﺖ اﻟﺴﯿﺮﻓﺮ و ﺗﺸﻐﯿﻠﮫ‬ ‫‪Page 1 sur 3‬‬

‫ﻓﻲ ھﺬا اﻟﺪرس ﺳﺄﻗﻮم ﺑﺸﺮح ﻛﯿﻔﯿﺔ ﺗﺜﺒﯿﺖ اﻟﺴﯿﺮﻓﺮ و ﺗﺸﻐﯿﻠﻪ ﻓﮫﻲ ﻧﻘﻄﺔ أﺳﺎﺳﯿﺔ ﻟﺒﺪأ اﻟﻌﻤﻞ و ﻟﻠﺘﺄﻛﺪ ﻣﻦ اﻟﺼﻔﺤﺎت‬
‫اﻟﺘﻲ ﻛﺘﺒﻨﺎھﺎ و إﺟﺮاء اﻟﺘﻌﺪﻳﻼت ﻋﻠﯿﮫﺎ ﺣﺴﺐ ﻣﺎ ﺗﻘﺘﻀﯿﻪ ﺣﺎﺟﺘﻨﺎ و ﻟﻨﺒﺪأ ذﻟﻚ ‪..‬‬

‫ﻓﻲ اﻟﺒﺪاﻳﺔ ﻧﺬھﺐ ﻟﻠﻤﺴﺘﻜﺸﻒ أو ‪ My Computer‬و ﻣﻨﻪ ﻧﺨﺘﺎر ‪ .. Control Panel‬ﺳﺘﻈﺮ ﻋﺪة ﺧﯿﺎرات اﺧﺘﺮ ﻣﻨﮫﺎ إﺿﺎﻓﺔ و إزاﻟﺔ‬
‫اﻟﺒﺮاﻣﺞ ‪ ..‬ﺳﺘﻈﮫﺮ ﻟﻚ اﻟﺸﺎﺷﺔ اﻟﺘﺎﻟﯿﺔ و اﻟﺘﻲ ﺑﮫﺎ ﻋﺪة اﺧﺘﯿﺎرات ﻣﻌﻠﻤﺔ و ﻏﯿﺮ ھﺎ ﻻ ﺳﺘﺠﺪ ﻣﻦ ﺑﯿﻨﮫﺎ ‪Internet Information Services‬‬
‫‪ IIS‬ﻗﻢ ﺑﺎﺧﺘﯿﺎره ﺛﻢ اﺧﺘﺮ اﻟﺘﺎﻟﻲ‪،،‬ﺳﯿﻄﻠﺐ ﻣﻨﻚ إﺳﻄﻮاﻧﺔ اﻟﻮﻳﻨﺪوز ‪ XP‬ﻟﯿﺘﻢ ﺗﺜﺒﯿﺖ اﻟﻤﻜﻮﻧﺎت ‪ components‬ﻋﻠﻰ ﺟﮫﺎزك ‪..‬‬

‫ﺑﻌﺪ ذﻟﻚ ﺗﻌﻮد ﻟﻠﻮﺣﺔ اﻟﺘﺤﻜﻢ و ﺗﺨﺘﺎر ﻣﻦ اﻷﺳﻔﻞ ‪: Administrative Tools‬‬

‫ﺳﺘﻈﮫﺮ ﻟﻚ ھﺬه اﻟﺸﺎﺷﺔ ‪ ،،‬و ﻣﻨﮫﺎ ﺗﻘﻮم ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ال ‪: Internet Information Services‬‬

‫‪.mht‬ﻃﺮﯾﻘﺔ‪20%‬ﺗﺜﺒﯿﺖ‪20%‬اﻟﺴﯿﺮﻓﺮ‪20%‬و‪20%‬ﺗﺸﻐﯿﻠﮫ ‪mhtml:ada99:‬‬ ‫‪18-06-2005‬‬


‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫ﻃﺮﯾﻘﺔ ﺗﺜﺒﯿﺖ اﻟﺴﯿﺮﻓﺮ و ﺗﺸﻐﯿﻠﮫ‬ ‫‪Page 2 sur 3‬‬

‫ﺑﻌﺪ ﺗﺸﻐﯿﻞ ال ‪ IIS‬ﺳﺘﻈﮫﺮ ﻟﻚ ھﺬه اﻟﺸﺎﺷﺔ و اﻟﺘﻲ ﺗﺮى ﻓﯿﮫﺎ اﺳﻢ اﻟﻜﻤﺒﯿﻮﺗﺮ و ھﻮ ‪ FARES‬ھﻨﺎ ‪ ..‬و ھﺬه اﻟﻨﺎﻓﺬة ﻣﺜﻞ‬
‫اﻟﻤﺴﺘﻜﺸﻒ ﺣﯿﺚ أن اﻟﺠﮫﺔ اﻟﯿﻤﯿﻦ ﺗﻈﮫﺮ اﻟﺪﻟﯿﻞ اﻟﻔﺮﻋﻲ ﻟﻤﺎ ﺗﺨﺘﺎره ﻣﻦ اﻟﯿﻤﯿﻦ ‪ ،،‬ﻃﺒﻌﺎ ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﺳﻢ اﻟﻜﻤﺒﯿﻮﺗﺮ ﻣﺮﺗﯿﻦ ‪..‬‬

‫ﺳﺘﺮى دﻟﯿﻼ ﻓﺮﻋﯿﺎ ھﻮ ‪ Web Sites‬اﻧﻘﺮ ﻋﻠﯿﻪ ﻣﺮﺗﯿﻦ ﺑﺎﻟﻔﺄرة ﺳﺘﺠﺪ أﻧﻪ ﻗﺪ ﻇﮫﺮ ﻟﻚ ‪ .. Default Web Sites‬و ﻃﺒﻌﺎ ھﺆﻻء‬
‫اﻟﻤﻮاﻗﻊ اﻟﺘﻲ ﺗﻜﻮن ﻓﻲ اﻟﺪﻟﯿﻞ اﻟﻔﺮﻋﻲ ﻟﻞ ‪ Default Web Sites‬ﻟﻢ ﺗﺄت ﻣﻦ ﻓﺮاغ و إﻧﻤﺎ ﻳﺠﺒﺄن ﺗﻀﻊ ﺟﻤﯿﻊ أﻋﻤﺎﻟﻚ اﻟﺘﻲ ﺗﻮد ﺗﺠﺮﺑﺘﮫﺎ ﻋﻦ‬
‫ﻃﺮﻳﻖ اﻟﺴﯿﺮﻓﺮ ﻓﻲ ﻣﺤﺮك اﻷﻗﺮاص اﻟﺼﻠﺒﺔ ‪ C:/‬ﺛﻢ ﺗﺨﺘﺎر ﻣﻨﻪ اﻟﻤﺠﻠﺪ ‪ Inetpub‬ﺛﻢ ﺗﺨﺘﺎر اﻟﻤﺠﻠﺪ ‪ wwwroot‬و اﻟﺬي ﻳﻤﺜﻞ دﻟﯿﻞ‬
‫اﻟﺴﯿﺮﻓﺮ و ﺑﺎﻟﺘﺎﻟﻲ ﺗﻈﮫﺮ ﻛﻞ اﻟﻤﺠﻠﺪات ﻟﻠﻤﻮاﻗﻊ اﻟﺘﻲ ﺗﺼﻤﻤﮫﺎ ﺑﻪ و ﻋﻦ اﺧﺘﯿﺎر أي ﻣﺠﻠﺪ أو ﻣﻮﻗﻊ ﻣﻦ ﺟﮫﺔ اﻟﯿﻤﯿﻦ ﺳﯿﻔﺘﺢ ﻟﻚ اﻟﻤﺠﻠﺪ‬
‫ﻛﺄﻧﻚ ﻓﻲ اﻟﻤﺴﺘﻜﺸﻒ ﺗﻤﺎﻣﺎ ‪...‬‬

‫ﺛﻢ ﺗﻘﻮم ﺑﺎﺧﺘﯿﺎر اﻟﻤﻠﻒ اﻟﺬي ﺗﻮد ﺗﺸﻐﯿﻠﻪ ﺑﻌﺪﻣﺎ ﺣﻔﻈﺘﻪ ﻋﻠﻰ ﻣﺤﺮر اﻟﻨﺼﻮص اﻟﺬي اﺳﺘﺨﺪﻣﺘﻪ و ذﻟﻚ ﻛﻤﺎ ھﻮ ﻣﻮﺿﺢ ﺑﺎﻟﺸﻜﻞ‬
‫اﻟﺘﺎﻟﻲ‪:‬‬

‫‪.mht‬ﻃﺮﯾﻘﺔ‪20%‬ﺗﺜﺒﯿﺖ‪20%‬اﻟﺴﯿﺮﻓﺮ‪20%‬و‪20%‬ﺗﺸﻐﯿﻠﮫ ‪mhtml:ada99:‬‬ ‫‪18-06-2005‬‬


‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫ﻃﺮﯾﻘﺔ ﺗﺜﺒﯿﺖ اﻟﺴﯿﺮﻓﺮ و ﺗﺸﻐﯿﻠﮫ‬ ‫‪Page 3 sur 3‬‬

‫و ھﻨﺎك ﻃﺮﻳﻘﺔ أﺳﺮع ﻟﺘﺸﻐﯿﻞ اﻟﺼﻔﺤﺎت ﺑﻌﺪ ﺗﺜﺒﯿﺖ اﻟﺴﯿﺮﻓﺮ ‪ IIS‬و ھﻲ أﻧﻚ ﺑﻌﺪﻣﺎ ﺗﻘﻮم ﺑﻨﺴﺦ اﻟﻤﺠﻠﺪات إﻟﻰ اﻟﺪﻟﯿﻞ ‪WWWroot‬‬
‫ﻗﻢ ﺑﻔﺘﺢ اﻟﻤﺴﺘﻜﺸﻒ و ﺿﻊ ﻓﻲ ﺷﺮﻳﻂ اﻟﻌﻨﻮان ﺟﻤﻠﺔ ‪ http://localhost‬و ﺑﻌﺪھﺎ ﺗﻜﺘﺐ اﺳﻢ اﻟﻤﺠﻠﺪ و اﻟﻤﻠﻒ ﻟﯿﺘﻢ ﺗﺸﻐﯿﻠﻪ ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫‪http://localhost/as4web/default.asp‬‬

‫و ھﻜﺬا ﻧﻜﻮن ﻗﺪ اﻧﺘﮫﯿﻨﺎ ﻣﻦ ھﺬا اﻟﺪرس ‪ ..‬ﻟﻨﻨﺘﻘﻞ ﻟﻠﺘﺎﻟﻲ ﻟﻨﺒﺪأ اﻟﻌﻤﻞ ‪..‬‬

‫‪.mht‬ﻃﺮﯾﻘﺔ‪20%‬ﺗﺜﺒﯿﺖ‪20%‬اﻟﺴﯿﺮﻓﺮ‪20%‬و‪20%‬ﺗﺸﻐﯿﻠﮫ ‪mhtml:ada99:‬‬ ‫‪18-06-2005‬‬


‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫ﻣﻘﺪﻣﺔ ﻋﻦ ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ‬ ‫‪Page 1 sur 1‬‬

‫ﻣﺮﺣﺒﺎ ﺑﻜﻢ ﻓﻲ دروس ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ و اﻟﺘﻲ ﺗﻌﺪ ﻣﻦ أھﻢ اﻟﺘﻄﺒﯿﻘﺎت اﻟﺸﺒﻜﯿﺔ اﻟﻤﺬھﻠﺔ اﻟﻨﺘﺎﺋﺞ و اﻟﻤﺘﻔﺎﻋﻠﺔ‬
‫ﻣﻊ ﻣﺴﺘﺨﺪﻣﻲ اﻟﺸﺒﻜﺔ اﻟﻌﺎﻟﻤﯿﺔ ‪ ..‬و ﺗﻌﺘﺒﺮ ھﺬه اﻟﺘﻘﻨﯿﺔ اﻟﺘﻲ أﻧﺘﺠﺘﮫﺎ ﺷﺮﻛﺔ ﻣﯿﻜﺮوﺳﻮﻓﺖ اﻟﻌﻤﻼﻗﺔ ﺧﻠﯿﻂ ﻣﻦ أوﺳﻤﺔ ‪ HTML‬و ﻟﻐﺎت‬
‫اﻟﺴﻜﺮﻳﺒﺖ و ﻋﻨﺎﺻﺮ ‪ ActiveX‬ﻟﺘﻨﺘﺞ ﺻﻔﺤﺔ دﻳﻨﺎﻣﯿﻜﯿﺔ و ھﻲ ﺗﺨﺘﻠﻒ ﻋﻦ ال ‪ HTML‬ﻓﻲ أﻧﮫﺎ ﺗﺴﺘﺨﺪم ‪ Server-Side Scripts‬اﻟﺘﻲ ﺗﻨﻔﺬ‬
‫ﻛﻤﺨﻄﻮﻃﺎت ﻋﻠﻰ اﻟﺴﯿﺮﻓﺮ ‪..‬‬

‫ﻟﻜﻦ ﻣﺎ ﻓﺎﺋﺪﺗﮫﺎ أو أﻳﻦ ﻳﻤﻜﻦ أن ﻧﺴﺘﻐﻠﮫﺎ ﻓﻲ ﻣﻮاﻗﻌﻨﺎ ؟؟ ﻃﺒﻌﺎ ھﻨﺎك اﻟﻜﺜﯿﺮ ﻣﻦ اﻷﻏﺮاض اﻟﺘﻲ ﺗﻠﺒﯿﮫﺎ ھﺬه اﻟﺘﻜﻨﻮﻟﻮﺟﯿﺎ ﻣﺜﻞ‬
‫ﻛﺘﺎﺑﺔ اﻟﺘﺎرﻳﺦ و اﻟﯿﻮم و ﻏﯿﺮھﺎ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت ﺑﻄﺮق ﻋﺪة ‪ ..‬ﻛﻤﺎ ﻳﻤﻜﻦ ﻋﻤﻞ ﺣﻘﻮل ﻟﻠﻨﻤﺎذج ‪ Forms‬ﻳﻘﻮم اﻟﻤﺴﺘﺨﺪم أو اﻟﺰاﺋﺮ ﺑﺘﻌﺒﺌﺘﮫﺎ‬
‫ﻛﯿﻔﻤﺎ ﻧﺮﻏﺐ ‪ ..‬و ﻋﻤﻞ ﻣﺎ ﻧﺮﻳﺪ ﺑﺎﻟﻤﻌﻠﻮﻣﺎت ﻛﻨﺴﺨﮫﺎ ﻓﻲ ﻣﻠﻒ أو ﻗﺎﻋﺪة ﻟﻠﺒﯿﺎﻧﺎت ‪ ..‬ﻛﻤﺎ ﻳﻤﻜﻨﻨﺎ ارﺳﺎل رﺳﺎﺋﻞ ﺑﺮﻳﺪﻳﺔ و ﻏﯿﺮھﺎ ﻣﻦ‬
‫اﻟﺨﺪﻣﺎت ‪ ..‬ھﻞ رأﻳﺖ ﻣﻮﻗﻌﺎ ﻻرﺳﺎل اﻟﻨﻐﻤﺎت ﻟﻠﺠﻮال ؟؟ ﻛﯿﻒ ﺗﺘﻮﻗﻊ أن ﻳﻜﻮن ﻣﺼﻤﻤﺎ ؟؟!! اﻧﻈﺮ أﻏﻠﺐ اﻟﻤﻮاﻗﻊ اﻟﺘﻘﻨﯿﺔ إﻟﻰ اﻟﻮﺻﻼت‬
‫اﻟﻤﻮﺟﻮدة ﺑﺎﺧﺮھﺎ ‪ ..‬ﻣﺎذا ﺗﺮى اﻣﺘﺪاد اﻟﻤﻠﻔﺎت ؟؟‬

‫و ﻣﻦ أھﻢ اﻟﻔﻮاﺋﺪ اﻟﺘﻲ ﻧﺠﻨﯿﮫﺎ ﻣﻦ ﺗﻘﻨﯿﺔ ال ‪ ASP‬ھﻲ اﻟﺴﺮﻳﺔ ﻓﻲ ﻧﻘﻞ اﻟﺒﯿﺎﻧﺎت و اﻟﺘﻌﺎﻣﻞ ﻣﻌﮫﺎ دون ﺗﺴﺮﺑﮫﺎ و ذﻟﻚ ﺷﻲء‬
‫ﻣﺮﻏﻮب ﻓﻲ ﻋﺎﻟﻢ اﻻﻧﺘﺮﻧﺖ ﺣﯿﺚ أﻧﻚ ﻟﻮ ﻻﺣﻈﺖ ﺻﻔﺤﺔ ﺑﻄﺮﻳﻘﺔ ال ‪ HTML‬ﻓﻤﻦ اﻟﻤﻨﻄﻘﻲ أﻧﻚ إذا رأﻳﺖ أﻧﮫﺎ ﻃﻠﺒﺖ ﻛﻠﻤﺔ ﻟﻠﻤﺮور ﻓﺈﻧﻚ‬
‫ﺳﺘﻌﺮف أﻧﮫﺎ ﻣﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ أو اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ و ﻟﻮ ﺿﻐﻂ ﺑﺎﻟﺰر اﻟﯿﻤﯿﻦ ﻋﻠﻰ اﻟﺼﻔﺤﺔ و اﺧﺘﺮت ﻋﺮض اﻟﻤﺼﺪر ﻟﻮﺟﺪت‬
‫ﻛﻮد ﻛﻠﻤﺔ اﻟﻤﺮور ﻛﻤﺎ ھﻮ ‪ ..‬و ﺑﺎﻟﺘﺎﻟﻲ ﻳﻤﻜﻨﻚ ﻣﻌﺮﻓﺔ ﻛﻠﻤﺔ اﻟﻤﺮور و اﻟﺘﺴﻠﻞ ﺑﺒﺴﺎﻃﺔ دون ﻣﻌﺮﻓﺘﻚ ﺣﺘﻰ ﺑﻠﻐﺔ اﻟﺴﻜﺮﻳﺒﺖ ‪ ..‬ﻟﻜﻦ اﻻن‬
‫ﻳﻤﻜﻨﻚ ﺣﻔﻆ ﻛﻠﻤﺎت اﻟﻤﺮور ﻓﻲ ﻗﺎﻋﺪة ﻟﻠﺒﯿﺎﻧﺎت أو ﻏﯿﺮھﺎ ﻣﻦ اﻟﻤﻠﻔﺎت و ﺑﺎﻟﺘﺎﻟﻲ ﻟﻦ ﻳﺴﺘﻄﯿﻊ أﺣﺪ ﻣﻌﺮﻓﺔ أي ﻣﻌﻠﻮﻣﺔ و ﻟﻦ ﻳﺘﺴﻠﻞ أﺣﺪ‬
‫إﻟﻰ ﻣﻮﻗﻌﻚ و ﻣﻌﻠﻮﻣﺎﺗﻚ ‪..‬‬

‫ﻃﺒﻌﺎ اﻟﻤﻄﻠﻮب ﻣﻨﻚ ﻟﺒﺪء اﻟﻌﻤﻞ ﻓﻲ ال ‪ ASP‬ﻣﻌﺮﻓﺔ ﺑﻠﻐﺔ ﻟﻠﺴﻜﺮﻳﺒﺖ ﻣﺜﻞ اﻟﺠﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ أو اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ و أﻧﺎ ﻣﻦ وﺟﮫﺔ‬
‫ﻧﻈﺮي أن اﻷﺧﯿﺮة أﻓﻀﻞ ﻟﻚ ﻷﻧﮫﺎ ﺳﮫﻠﺔ ﻧﻮﻋﺎ ﻣﺎ و ﻗﺮﻳﺒﺔ أﻳﻀﺎ ﻣﻦ اﻟﻔﯿﺠﻮال ﺑﯿﺴﻚ و ﻟﻦ ﺗﺘﻌﺐ ﻛﺜﯿﺮا ﻓﻲ ﺗﻌﻠﻤﮫﺎ ‪ ..‬و ﻃﺒﻌﺎ أرﻓﻘﺖ ﺑﺎﻗﺔ‬
‫ﻣﻦ اﻟﺪروس ﻟﮫﺎ ﻓﻲ ھﺬا اﻟﻤﻮﻗﻊ ﻳﻤﻜﻨﻚ اﻹﻃﻼع ﻋﻠﯿﮫﺎ ‪ ..‬ﻛﻤﺎ ﻳﺠﺐ أن ﻳﻜﻮن ﻋﻨﺪك ﺑﺮﻧﺎﻣﺞ ﻣﺤﺮر ﻟﻠﻨﺼﻮص ﻣﺜﻞ ‪ FrontPage‬أو ‪Visual‬‬
‫‪ InterDev‬أو ﻏﯿﺮھﺎ ﻣﻤﺎ ﻳﻨﺎﺳﺒﻚ ﻓﻲ ﻛﺘﺎﺑﺔ اﻟﻜﻮد ‪ ..‬ﻛﻤﺎ أﻧﻚ ﺗﺤﺘﺎج ﻷن ﻳﻜﻮن ﺟﮫﺎزك ﻓﻲ ﻣﺤﻞ ﺧﺎدم أو ﺳﯿﺮﻓﺮ و ذﻟﻚ إﻣﺎ ﻋﻦ ﻃﺮﻳﻖ ال‬
‫‪ Personal Web Server‬و اﻟﺬي ﻳﻜﻮن ﻣﻊ ﻧﺴﺦ اﻟﻮﻳﻨﺪوز ﻣﻦ ﻧﻮع ‪ Windows 9X‬ﻣﺜﻞ ﻧﺴﺨﺔ ‪ 95‬و ‪ 98‬و ‪ ME‬أﻣﺎ ‪ Windows NT‬و ﻣﺎ ﺗﻼه‬
‫و ﺣﺘﻰ ال ‪ Windows Xp‬ﻳﺤﺘﺎج ﻟﺘﺜﺒﯿﺖ ‪ Internet Information Services IIS‬و اﻟﺬي ﻳﻜﻮن ﻣﻮﺟﻮدا ﻣﻊ إﺳﻄﻮاﻧﺎت اﻟﻮﻳﻨﺪوز ‪ ..‬و‬
‫ﺑﺎﻟﺘﺎﻟﻲ ﻳﻤﻜﻨﻨﺎ ﻣﻦ ﺗﻨﻔﯿﺬ ﻣﻠﻔﺎت ال ‪ ASP‬ﻋﻠﻰ اﻟﺠﮫﺎز دون اﻟﺤﺎﺟﺔ ﻟﺘﺤﻤﯿﻠﮫﺎ ﻋﻠﻰ ﻣﻮﻗﻊ ﻳﺪﻋﻢ ال ‪ ASP‬و ﺑﺎﻟﺘﺎﻟﻲ ﻳﻜﻠﻒ وﻗﺘﺎ و ﻣﺎﻻ ‪ ..‬و‬
‫ﺳﻨﺘﻌﺮض ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺘﻔﺎﺻﯿﻞ ﻓﻲ اﻟﺪرس اﻟﺘﺎﻟﻲ ﻟﻜﯿﻔﯿﺔ ﺗﺮﻛﯿﺐ اﻟﺴﯿﺮﻓﺮ و ﺗﺸﻐﯿﻠﻪ ‪..‬‬

‫ﻃﺒﻌﺎ ﺑﺪا ﻣﻦ اﻟﻄﺒﯿﻌﻲ أن اﻣﺘﺪاد ﻣﻠﻔﺎت ال ‪ ASP‬ﺳﯿﻜﻮن ‪ asp‬و ﻟﯿﺲ ‪ .. htm‬و ھﺬا ﻣﺜﺎل ﺑﺴﯿﻂ ﻟﻠﻐﺎﻳﺔ ﻳﻮﺿﺢ ﻃﺮﻳﻘﺔ ﻛﺘﺎﺑﺔ‬
‫اﻟﻤﺨﻄﻮط ﺑﺘﻘﻨﯿﺔ أو ﺗﻜﻨﻮﻟﻮﺟﯿﺎ ‪: ASP‬‬

‫>‪<html‬‬
‫>‪<head‬‬
‫>‪<title>ASP</title‬‬
‫>‪</head‬‬
‫>‪<body‬‬
‫‪<%‬‬
‫"ﻣﺮﺣﺒﺎ ﻓﻲ أول ﺗﺠﺮﺑﺔ ﻟﺼﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ" ‪response.write‬‬
‫>‪%‬‬
‫>‪</body‬‬
‫>‪</html‬‬

‫ﻃﺒﻌﺎ ﻧﺤﻦ اﺳﺘﺨﺪﻣﻨﺎ ﻛﻮد ‪ VbScript‬ﻟﻜﺘﺎﺑﺔ اﻟﺠﻤﻠﺔ و ذﻟﻚ ﻃﺒﻌﺎ ﺑﯿﻦ إﺷﺎرﺗﻲ >‪ <%%‬و اﻟﻼﺗﻲ ﻳﻔﺪن اﻹﻋﻼن ﻋﻦ ﺑﺪأ ﻛﺘﺎﺑﺔ ﻛﻮد ال‬
‫‪ ASP‬و إﻧﮫﺎﺋﻪ و ﺳﻨﺘﻌﺮف إن ﺷﺎء اﷲ ﻓﻲ اﻟﺪروس اﻟﻘﺎدﻣﺔ ﻋﻠﻰ اﻟﻤﺰﻳﺪ ‪..‬أﻣﺎ اﻻن ﻓﻨﺤﻦ ﺑﺼﺪد ﻣﻘﺪﻣﺔ ﺗﻌﺮﻳﻔﯿﺔ ﻋﻦ ھﺬه اﻟﺘﻘﻨﯿﺔ ‪.‬‬

‫‪.mht‬ﻣﻘﺪﻣﺔ‪20%‬ﻋﻦ‪20%‬ﺻﻔﺤﺎت‪20%‬اﻟﺨﺎدم‪20%‬اﻟﻨﺸﻄﺔ ‪mhtml:ada99:‬‬ ‫‪18-06-2005‬‬


‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫أﺳﺲ ﺑﺮﻣﺠﯿﺔ ﻗﺒﻞ ﺑﺪأ اﻟﻌﻤﻞ‬ ‫‪Page 1 sur 3‬‬

‫ﻧﺘﻌﺮف ﻓﻲ ھﺬا اﻟﺪرس ﻋﻠﻰ أﺳﺎﺳﯿﺎت ﻻ ﺑﺪ ﻣﻦ اﻹﺣﺎﻃﺔ ﺑﮫﺎ ﻛﻲ ﻧﺴﺘﻤﺮ ﻋﻠﻰ ﻣﺎ ﻳﺮام ﻓﻲ ﺑﺎﻗﻲ دروﺳﻨﺎ ‪..‬‬

‫ﻓﻲ ﺑﺪاﻳﺔ ھﺬا اﻟﺪرس ﺳﺄﺳﺮد ﻛﯿﻒ ﻳﺘﻢ اﻹﺗﺼﺎل ﺑﻘﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﻮﺟﻮدة ﻋﻠﻰ اﻟﺨﺎدم ﻟﺒﯿﺎن ﻧﻘﻄﺔ ﻣﮫﻤﺔ ﺟﺪا ﺗﺴﺘﺨﺪم ﺑﻜﺜﺮة‬
‫ﻷﻏﺮاض ﻋﺪﻳﺪة أﺛﻨﺎء ﺗﺼﻤﯿﻢ ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ ‪ ..‬و إﻟﯿﻜﻢ ھﺬا اﻟﻜﻮد ‪:‬‬

‫>‪<%@codePage=1256%‬‬
‫>‪<html‬‬
‫‪<%‬‬
‫)"‪Set cn = CreateObject("ADODB.Connection‬‬
‫_ & "=‪cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq‬‬
‫))"‪Server.MapPath("/as4web/database.mdb‬‬
‫>‪%‬‬
‫>‪<head‬‬
‫>‪<title></title‬‬
‫>‪</head‬‬
‫>‪<body‬‬
‫>‪</body‬‬
‫>‪</html‬‬

‫ﻃﺒﻌﺎ ﻛﻤﺎ وﺿﺤﺖ ﺳﺎﺑﻘﺎ أن أﻛﻮاد ال ‪ ASP‬ﺗﻀﻊ ﺑﯿﻦ >‪ <%%‬و ﻧﺤﻦ ﻗﺪ ﻋﺮﻓﻨﺎ ﻛﺎﺋﻦ ﻟﻺﺗﺼﺎل ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺳﺄﻗﻮم ﺑﺸﺮﺣﺔ‬
‫ﻻﺣﻘﺎ ﻓﻲ دروس ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻟﻜﻦ اﻟﻘﺼﺪ ﻟﻮ ﻛﺎﻧﺖ ﺑﻨﯿﺔ ﻣﻮﻗﻌﻚ ﻛﺎﻣﻠﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت إذا ﺳﺘﺤﺘﺎج ﻛﻞ ﻣﺮة ﻟﺘﻌﺮﻳﻒ ﻧﻔﺲ‬
‫اﻟﻜﺎﺋﻦ ﻟﺬا وﺟﺪت ﻃﺮﻳﻘﺔ ﻟﻮﺿﻊ ﺗﻌﺮﻳﻒ اﻟﻜﺎﺋﻦ ﻓﻲ ﻣﻠﻒ ﺛﻢ ﻳﺘﻢ اﺳﺘﺪﻋﺎءه ﻛﻞ ﻣﺮة ﻋﻦ ﻃﺮﻳﻖ ﺟﻤﻠﺔ ﺳﺄوﺿﺤﮫﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺑﻌﺪ‬
‫اﻟﺘﻌﺪﻳﻞ ‪:‬‬

‫>‪<!-- #include file="connection.inc"--‬‬


‫>‪<html‬‬
‫>‪<head‬‬
‫>‪<title></title‬‬
‫>‪</head‬‬
‫>‪<body‬‬
‫>‪</body‬‬
‫>‪</html‬‬

‫ﺛﻢ ﻧﻘﻮم ﺑﺤﻔﻆ اﻟﺠﻤﻠﺔ اﻟﺨﺎﺻﺔ ﺑﺘﻌﺮﻳﻒ ﻛﺎﺋﻦ اﻹﺗﺼﺎل ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت داﺧﻞ ﻣﻠﻒ ﺑﺎﻣﺘﺪاد ‪ inc‬و ﻳﺼﺒﺢ ﻛﻤﺎ رأﻳﻨﺎ ‪<< connection.inc‬‬
‫و ﻃﺒﻌﺎ ﺻﯿﻐﺔ اﻟﻤﻠﻒ ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫‪<%@codePage=1256‬‬
‫)"‪Set cn = CreateObject("ADODB.Connection‬‬
‫_ & "=‪cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq‬‬
‫))"‪Server.MapPath("/as4web/database.mdb‬‬
‫>‪%‬‬

‫ﻃﺮق ﻓﻲ اﺳﺘﺨﺪام أﻣﺮ اﻟﻜﺘﺎﺑﺔ ‪: response.write‬‬

‫‪<%‬‬
‫‪FOR i=1 to 10‬‬
‫‪response.write "Number = " & i & vbCrLf‬‬
‫‪NEXT‬‬
‫>‪%‬‬

‫ﻃﺒﻌﺎ ھﺬه ھﻲ ﻧﻔﺲ ﻃﺮﻳﻘﺔ اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ ﻓﻲ ﻛﺘﺎﺑﺔ اﻟﻨﺺ و اﻟﻤﺘﻐﯿﺮات ﻟﺬا ﻳﺠﺐ اﻹﻟﻤﺎم ﺑﮫﺎ و اﻟﻨﺎﺗﺞ ﺳﯿﻜﻮن ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫‪.mht‬أﺳﺲ‪20%‬ﺑﺮﻣﺠﯿﺔ‪20%‬ﻗﺒﻞ‪20%‬ﺑﺪأ‪20%‬اﻟﻌﻤﻞ‪mhtml:ada99:‬‬ ‫‪18-06-2005‬‬
‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫أﺳﺲ ﺑﺮﻣﺠﯿﺔ ﻗﺒﻞ ﺑﺪأ اﻟﻌﻤﻞ‬ ‫‪Page 2 sur 3‬‬

‫اﻧﻈﺮ أﻳﻀﺎ ﻟﮫﺬه اﻟﻄﺮﻳﻘﺔ ﻣﺎ ﺳﯿﻜﻮن ﻣﺨﺮﺟﺎﺗﮫﺎ اﻟﺘﻲ ﺳﺄﺿﻌﮫﺎ ﺑﻌﺪھﺎ و أﻧﺖ ﺑﺪورك ﺗﻼﺣﻆ ﻣﺎ ﺣﺼﻞ ‪:‬‬

‫‪<%‬‬
‫‪FOR i=1 to 10 step 2‬‬
‫‪response.write "Number = " & i & vbCrLf‬‬
‫‪NEXT‬‬
‫>‪%‬‬

‫اﺳﺘﺨﺪام اﻟﺪوال و اﻟﻮﻇﺎﺋﻒ ‪:‬‬

‫أود اﻟﺘﺄﻛﯿﺪ ﻋﻠﻰ ﺿﺮورة ﻣﺮاﺟﻌﺔ دروس اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﻮﻗﻊ و اﻹھﺘﻤﺎم ﺑﮫﺎ و ﺑﺎﻟﺬات ﺑﺎﻟﺘﺪرﻳﺒﺎت اﻟﻤﮫﻤﺔ‬
‫ﻛﻲ ﻻ ﺗﻮاﺟﻪ ﺻﻌﻮﺑﺔ ﻓﻲ اﺳﺘﯿﻌﺎب أي ﺷﻲء و أﻧﺎ ﻟﻦ أﺗﺮك ﺷﯿﺌﺎ إﻻ و ﺳﺄﻗﻮم ﺑﺘﻮﺿﯿﺤﻪ ‪ ..‬و ھﺬه ﺻﯿﻎ ﻣﺨﺘﻠﻔﺔ ﻟﻠﺪوال و اﻟﻮﻇﺎﺋﻒ و‬
‫اﺳﺘﺪﻋﺎؤھﺎ ‪:‬‬

‫‪<%‬‬
‫)‪Sub Add (a,b‬‬
‫‪Add=a+b‬‬
‫‪End Sub‬‬
‫>‪%‬‬

‫‪<%‬‬
‫)‪response.write Add(2,3‬‬
‫>‪%‬‬

‫و ھﺬا ﻣﺜﺎل اﺧﺮ ‪:‬‬

‫‪<%‬‬
‫)‪Function calculate (a,b,operator‬‬
‫‪select case operator‬‬
‫"‪case "+‬‬
‫‪calculate= a+b‬‬
‫"*" ‪case‬‬
‫‪calculate= a*b‬‬
‫"‪case "-‬‬
‫‪calculate= a-b‬‬
‫"‪case "/‬‬
‫‪calculate= a/b‬‬
‫‪End select‬‬
‫‪End Function‬‬
‫>‪%‬‬

‫‪<%‬‬
‫)"‪response.write calculate(2,3,"+‬‬
‫>‪%‬‬

‫‪.mht‬أﺳﺲ‪20%‬ﺑﺮﻣﺠﯿﺔ‪20%‬ﻗﺒﻞ‪20%‬ﺑﺪأ‪20%‬اﻟﻌﻤﻞ‪mhtml:ada99:‬‬ ‫‪18-06-2005‬‬
‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫أﺳﺲ ﺑﺮﻣﺠﯿﺔ ﻗﺒﻞ ﺑﺪأ اﻟﻌﻤﻞ‬ ‫‪Page 3 sur 3‬‬

‫ﺳﺘﺠﺪ ﺗﻄﺎﺑﻘﺎ ﻛﺒﯿﺮا ﻓﻲ ﻃﺮﻳﻘﺔ ﻛﺘﺎﺑﺔ أﻛﻮاد ‪ ASP‬و ‪ VbScript‬ﻟﺬا ﺳﺄﻛﺮر و ﻻﺧﺮ ﻣﺮة ﻣﺪى ﺿﺮورة اﻟﻌﻮدة ﻟﺪروس اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ و‬
‫اﻹھﺘﻤﺎم أﻳﻀﺎ ﺑﺪروس اﻟﻤﺪﺧﻼت و اﻟﻄﺮق اﻟﺒﻨﺎﺋﯿﺔ ﻟﻠﻤﺨﻄﻮط ‪..‬‬

‫‪.mht‬أﺳﺲ‪20%‬ﺑﺮﻣﺠﯿﺔ‪20%‬ﻗﺒﻞ‪20%‬ﺑﺪأ‪20%‬اﻟﻌﻤﻞ‪mhtml:ada99:‬‬ ‫‪18-06-2005‬‬
‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫‪ ASP‬ﻛﺎﺋﻨﺎت‬ ‫‪Page 1 sur 8‬‬

‫ﻓﻲ ھﺬا اﻟﺪرس ﺳﻨﺘﻌﺮف ﻋﻠﻰ ﻛﺎﺋﻨﺎت ال ‪ ASP‬و اﻟﺘﻲ ھﻲ اﻷﺳﺎس اﻟﺘﻲ ﺗﺮﺗﻜﺰ ﻋﻠﯿﮫﺎ و ﻧﺒﺪأ ﺑﺄول ﻛﺎﺋﻦ ‪:‬‬

‫اﻟﻜﺎﺋﻦ ‪: Request‬‬

‫ﻳﻘﻮم ھﺬا اﻟﻜﺎﺋﻦ ﺑﺘﻮﺻﯿﻞ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﻳﺮﺳﻠﮫﺎ اﻟﻤﺴﺘﺨﺪم ﻣﻦ ﺟﮫﺎزه اﻟﻌﻤﯿﻞ ‪ client‬إﻟﻰ اﻟﺨﺎدم ‪ server‬ﻣﻦ ﺧﻼل ﻃﻠﺐ ‪، HTTP‬‬
‫و ﺻﯿﻐﺘﺔ ﻛﺘﺎﺑﺘﮫﺎ ھﻲ ھﺬه اﻟﺼﯿﻐﺔ ‪:‬‬

‫)‪Request[.collection |property|method](variables‬‬

‫و ﺳﺄﻗﻮم اﻻن ﺑﺸﺮح اﻟﺨﺼﺎﺋﺺ ‪ Property collections‬أو اﻟﻄﺮق ‪ Method collections‬ﻓﻲ ھﺬا اﻟﺠﺪول ‪:‬‬

‫اﻟﺸﺮح‬ ‫اﻟﺨﺎﺻﯿﺔ‬

‫ﺗﻌﺒﺮ ﻋﻦ ﻗﯿﻢ اﻟﺨﺎﻧﺎت اﻟﻤﺮﺳﻠﺔ ﻓﻲ ﺷﮫﺎدة ﻋﻤﯿﻞ ﻣﺎ ‪.‬‬ ‫‪ClientCertificate‬‬


‫ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻗﯿﻢ ﺣﻘﻮل اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ ﻳﺮﺳﻠﮫﺎ اﻟﻤﺘﺼﻔﺢ ﺧﻼل ﻃﻠﺐ ‪. HTTP‬‬ ‫‪Cookies‬‬
‫ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻗﯿﻢ اﻟﻨﻤﺎذج اﻟﻤﺮﺳﻠﺔ إﻣﺎ ﻋﻦ ﻃﺮﻳﻖ ‪ GET‬أو ‪. POST‬‬ ‫‪Form‬‬
‫ﻣﺠﻤﻮﻋﺔ ﻗﯿﻢ ﺣﺮﻓﯿﺔ ﺗﺮﺳﻞ ﻟﻠﺨﺎدم ‪.‬‬ ‫‪QueryString‬‬
‫ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻣﺘﻐﯿﺮات اﻟﺒﯿﺌﺔ اﻟﻤﺮﺗﺒﻄﺔ ﺑﻄﻠﺐ ‪. HTTP‬‬ ‫‪ServerVariables‬‬
‫ﺗﻘﻮم ﺑﺤﺴﺎب ﻋﺪد اﻟﺒﺎﻳﺘﺎت اﻟﻤﺮﺳﻠﺔ ﻟﻠﺨﺎدم ﻣﻦ ﺟﮫﺎز اﻟﻌﻤﯿﻞ ‪. Client‬‬ ‫‪TotalBytes‬‬

‫و ھﻨﺎك ﻃﺮق ﺑﺮﻣﺠﯿﺔ ‪ Method‬و ھﻲ ﻣﻤﻦ ﻳﺪﻋﻤﮫﺎ ﻛﺎﺋﻦ ‪ Request‬و ھﻲ )(‪ BinaryRead‬و اﻟﺘﻲ ﺗﺴﺘﺨﺪم ﻟﻠﺘﻮﺻﻞ إﻟﻰ اﻟﺒﯿﺎﻧﺎت‬
‫اﻟﺜﻨﺎﺋﯿﺔ و اﻟﺘﻲ ﺗﻨﺘﺞ ﻧﺘﯿﺠﺔ اﺳﺘﺨﺪام اﻟﻄﺮﻳﻘﺔ ‪ POST‬ﻓﻲ ارﺳﺎل اﻟﺒﯿﺎﻧﺎت ﻣﻦ اﻟﻨﻤﺎذج ‪.‬‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬

‫ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﺘﻌﺒﯿﺮ )‪ request(variable‬دون ذﻛﺮ اﻟﻤﺠﻤﻮﻋﺔ و ﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن اﻟﻤﺘﺼﻔﺢ ﺳﯿﺒﺤﺚ ﺗﻠﻘﺎﺋﯿﺎ ﺣﺴﺐ اﻟﺘﺮﺗﯿﺐ‬
‫اﻟﺘﺎﻟﻲ ‪:‬‬

‫‪QueryString -1‬‬

‫‪Form -2‬‬

‫‪Cookies -3‬‬

‫‪ClientCertificate -4‬‬

‫‪ServerVariables -5‬‬

‫و ھﺬه ﻗﺎﺋﻤﺔ ﻣﺼﻮرة ﻣﻦ ﻛﺘﺎب ﻳﻌﺮض ﻋﻨﺎﺻﺮ ال ‪ ServerVariables‬و ﻳﻤﻜﻨﻚ اﻹﻃﻼع ﻋﻠﯿﮫﺎ ﻣﻦ ھﻨﺎ ‪..‬‬

‫‪ASP.mht‬ﻛﺎﺋﻨﺎت‪mhtml:ada99:20%‬‬ ‫‪18-06-2005‬‬
‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫ ﻛﺎﺋﻨﺎت‬ASP Page 2 sur 8

mhtml:ada99:20%‫ﻛﺎﺋﻨﺎت‬ASP.mht 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
‫ ﻛﺎﺋﻨﺎت‬ASP Page 3 sur 8

mhtml:ada99:20%‫ﻛﺎﺋﻨﺎت‬ASP.mht 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
‫ ﻛﺎﺋﻨﺎت‬ASP Page 4 sur 8

mhtml:ada99:20%‫ﻛﺎﺋﻨﺎت‬ASP.mht 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
‫ ﻛﺎﺋﻨﺎت‬ASP Page 5 sur 8

mhtml:ada99:20%‫ﻛﺎﺋﻨﺎت‬ASP.mht 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
‫‪ ASP‬ﻛﺎﺋﻨﺎت‬ ‫‪Page 6 sur 8‬‬

‫و ھﺬا ﻣﺜﺎل ﺟﺎھﺰ ﻳﻤﻜﻦ أن ﺗﺠﺮﺑﻪ ﻋﻠﻰ ﺟﮫﺎزك ﻟﺘﺘﻌﺮف ﻋﻠﻰ ﻣﻮاﺻﻔﺎت ال ‪ ServerVariables‬ﻋﻠﯿﻪ ‪:‬‬

‫>‪<html‬‬
‫>‪<head‬‬
‫>‪</head‬‬
‫>"‪<body><table border="1" cellspacing="0" cellpadding="3‬‬
‫>‪<tr‬‬
‫>‪<th>Key</th‬‬
‫>‪<th>Value</th‬‬

‫اﻟﻜﺎﺋﻦ ‪: Response‬‬

‫ﻳﻘﻮم ھﺬا اﻟﻜﺎﺋﻦ ﺑﺈرﺳﺎل اﻟﺒﯿﺎﻧﺎت ﻟﻠﻤﺴﺘﺨﺪم و ھﻮ ﻳﺪﻋﻢ ال ‪ cookies‬ﻛﻤﺠﻤﻮﻋﺔ ﻛﻤﺎ ﻳﺪﻋﻢ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺨﺼﺎﺋﺺ و اﻟﻄﺮق اﻟﺘﻲ‬
‫ﺳﻨﺬﻛﺮھﺎ ﺑﻌﺪ ﻛﺘﺎﺑﺔ اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﮫﺬا اﻟﻜﺎﺋﻦ ‪:‬‬

‫‪response.collection|property|method‬‬

‫اﻟﺸﺮح‬ ‫اﻟﻨﻮع‬

‫ﺗﻤﻜﻦ اﻟﺨﺎدم ﻣﻦ ﺗﻨﻔﯿﺬ ﻛﻞ اﻷواﻣﺮ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺼﻔﺤﺔ ‪.‬‬ ‫‪Buffer‬‬ ‫‪Properties‬‬


‫ﺗﻌﺮﻓﻨﺎ إذا ﻛﺎن اﻟﺨﺎدم ﻗﺎدرا ﻋﻠﻰ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻣﺨﺮﺟﺎت اﻟﺼﻔﺤﺔ ‪.‬‬ ‫‪CacheControl‬‬
‫ﺗﻤﻜﻨﻨﺎ ﻣﻦ اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﻔﺘﺮة اﻟﺰﻣﻨﯿﺔ اﻟﻤﺘﺒﻘﯿﺔ ﻟﻠﺼﻔﺤﺔ ﻗﺒﻞ أن‬
‫‪Expires‬‬
‫ﺗﻘﻮم ﺑﺘﺤﺪﻳﺚ ﺗﻠﻘﺎﺋﻲ ‪.‬‬
‫ﺗﻘﻮم ﺑﺘﺤﺪﻳﺪ ﻧﻮﻋﯿﺔ اﻟﻤﺨﺮﺟﺎت ك ‪ text‬أو ‪ Html‬أو أي ﻧﻮع ﻣﻦ ال‬
‫‪ContentType‬‬
‫‪MIME‬‬
‫ﺗﻘﻮم ﺑﻨﻔﺲ دور ‪ expire‬إﻻ اﻧﮫﺎ ﺗﺤﺪد أﻳﻀﺎ اﻟﯿﻮم و اﻟﺘﺎرﻳﺦ ‪.‬‬ ‫‪ExpiresAbsolute‬‬
‫ﺗﻘﻮم ﺑﺘﺤﺪﻳﺪ ﺣﺎﻟﺔ اﻟﺼﻔﺤﺔ ﻣﺜﻞ ﺗﻌﻄﻠﮫﺎ أو ﻏﯿﺮھﺎ ﻣﻦ اﻟﺤﺎﻻت ‪.‬‬ ‫‪Status‬‬
‫ﺗﺤﺪد إذا ﻣﺎ ﻛﺎن ﺟﮫﺎزك ﻣﻮﺻﻮﻻ ﻣﻊ اﻟﺨﺎدم أم ﻻ ‪.‬‬ ‫‪IsClientConnected‬‬
‫ﺗﺴﺘﺨﺪم ﻟﻜﺘﺎﺑﺔ ﻧﺺ إﻟﻰ اﻟﻤﺘﺼﻔﺢ ‪.‬‬ ‫‪Write‬‬ ‫‪Method‬‬
‫ﺗﻘﻮم ﺑﺈﺿﺎﻓﺔ ﻧﺺ ﻻﺧﺮ اﻟﺨﺎدم‪.‬‬ ‫‪AppentToLog‬‬
‫ﺗﻘﻮم ﻓﻲ ﻋﺮض ﺑﯿﺎﻧﺎت أو ﻣﻠﻔﺎت ﻏﯿﺮ ﻧﺼﯿﺔ ﻣﺜﻞ اﻟﺼﻮر أو ﻣﻠﻔﺎت‬
‫‪BinaryWrite‬‬
‫اﻟﺼﻮت أو ﻏﯿﺮھﺎ ‪.‬‬
‫ﺗﺴﺘﺨﺪم ﻓﻲ إﻟﻐﺎء اﻟﺠﻤﻠﺔ اﻟﺘﻲ ﻗﺒﻠﮫﺎ ﻓﻲ ﺣﺎة وﺟﻮد‬
‫‪Clear‬‬
‫‪. response.buffer‬‬
‫ﺗﻘﻮم ﺑﻨﻔﺲ دور ‪ clear‬ﺗﻘﺮﻳﺒﺎ‪.‬‬ ‫‪Flush‬‬
‫ﺗﻘﻮم ﺑﺈﻧﮫﺎء ﺗﻨﻔﯿﺬ اﻟﻤﻠﻒ ﻋﻨﺪھﺎ و ﺗﻌﻄﻲ اﻟﻤﺨﺮﺟﺎت اﻟﺤﺎﻟﯿﺔ ﻋﻨﺪ‬
‫‪End‬‬
‫اﻟﺘﻮﻗﻒ ‪.‬‬
‫ﺗﻘﻮم ﺑﺎﻹﻧﺘﻘﺎل ﻟﻌﻨﻮان ﺻﻔﺤﺔ أﺧﺮى ‪.‬‬ ‫‪Redirect‬‬

‫و ﺳﻨﺘﻌﺮف ﻣﻦ ﺧﻼل اﻷﻣﺜﻠﺔ اﻟﺘﻲ ﺳﺄﺿﻌﮫﺎ ﻓﻲ ورﺷﺔ اﻟﻌﻤﻞ و اﻟﺘﻲ ﺗﻘﻒ ﺑﻨﺎ أﻣﺎم أﺑﻮاب ﻟﻤﺸﺎﻛﻞ رﺑﻤﺎ ﻧﺘﻌﺮض ﻟﮫﺎ أﺛﻨﺎء ﺗﺼﻤﯿﻤﻨﺎ‬
‫ﻟﻔﻜﺮة و ﻧﺮى ﻛﯿﻒ ﻳﻤﻜﻨﻨﺎ اﻟﺘﻐﻠﺐ ﻋﻠﻰ ﻣﺜﻞ ھﺬه اﻟﻤﺸﺎﻛﻞ ‪ ..‬ﻃﺒﻌﺎ ورﺷﺔ اﻟﻌﻤﻞ ﻣﮫﻤﺔ ﺟﺪا ﺟﺪا ﺑﺎﻟﺬات ﻟﻘﺴﻢ ﺗﻜﻨﻮﻟﻮﺟﯿﺎ ﺻﻔﺤﺎت‬
‫اﻟﺨﺎدم اﻟﻨﺸﻄﺔ ‪. ASP‬‬

‫اﻟﻜﺎﺋﻦ ‪: Server‬‬

‫ﻳﻘﻮم ھﺬا اﻟﻜﺎﺋﻦ ﺑﺄھﻢ اﻟﻌﻤﻠﯿﺎت ﻟﻨﺎ ﻛﻤﻄﻮرﻳﻦ أﻧﻈﻤﺔ ﻟﻤﺎ ﻟﻪ ﻣﻦ ﻋﻼﻗﺔ ﺑﺄﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ و ﻣﺼﺎدرھﺎ و ھﻮ ﻣﺼﺪر اﺗﺼﺎل‬
‫ﺑﺎﻟﻤﻜﻮﻧﺎت اﻟﺘﻲ ﻳﻜﺘﺒﮫﺎ ﻣﺒﺮﻣﺠﻮن و ﻳﺜﺒﺘﻮﻧﮫﺎ ﻋﻠﻰ اﻟﺨﺎدم و اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻪ ھﻲ ‪:‬‬

‫‪Server.property|method‬‬

‫و اﻟﺨﺎﺻﯿﺔ اﻟﺘﻲ ﻳﺸﺘﮫﺮ ﺑﮫﺎ ھﺬا اﻟﻜﺎﺋﻦ ھﻲ ‪ ScriptTimeOut‬و اﻟﺘﻲ ﺗﻔﯿﺪ إﻋﻄﺎء اﻟﻤﺨﻄﻮط أو اﻟﺴﻜﺮﻳﺒﺖ ﻣﺪة زﻣﻨﯿﺔ ﻟﺘﻨﻔﯿﺬه ﻋﻠﻰ‬
‫اﻟﺨﺎدم و إﻻ اﻧﺘﮫﺖ وﻇﯿﻔﺔ ھﺬا اﻟﺴﻜﺮﻳﺒﺖ و ﺑﻄﻞ ﻋﻤﻠﻪ ‪ .‬أﻣﺎ اﻟﻄﺮق ‪ METHOD‬اﻟﻤﺸﮫﻮر ﺑﮫﺎ ھﺬا اﻟﻜﺎﺋﻦ ﻓﮫﻲ ﻛﻤﺎ ﺑﺎﻟﺠﺪول ‪:‬‬

‫‪ASP.mht‬ﻛﺎﺋﻨﺎت‪mhtml:ada99:20%‬‬ ‫‪18-06-2005‬‬
‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫‪ ASP‬ﻛﺎﺋﻨﺎت‬ ‫‪Page 7 sur 8‬‬

‫اﻟﺸﺮح‬ ‫اﻟﻄﺮﻳﻘﺔ‬

‫ﺗﻘﻮم ﺑﺘﻜﻮﻳﻦ ﻛﺎﺋﻦ ﻣﺘﻌﻠﻖ ﺑﻤﻜﻮﻧﺎت ﻣﺜﺒﺘﺔ ﻋﻠﻰ اﻟﺨﺎدم ﻣﺜﻞ ﻣﻜﻮﻧﺎت اﻹﺗﺼﺎل ‪.‬‬ ‫‪CreateObject‬‬

‫ﺗﺴﺘﺨﺪم ﻓﻲ ﺗﺸﻔﯿﺮ ﻧﺺ ﺑﺄﺳﻠﻮب ‪. HTML‬‬ ‫‪HTMLEncode‬‬

‫ﺗﺴﺘﺨﺪم ﻓﻲ ﺗﺸﻔﯿﺮ ﻧﺺ ﺑﺈﺳﻠﻮب ‪. URL‬‬ ‫‪URLEncode‬‬

‫ﺗﺴﺘﺨﺪم ﻓﻲ اﻟﺮﺑﻂ ﺑﯿﻦ ﻣﺴﺎر ﺧﺎدم ﺗﻘﺪرﻳﺮي و ﻣﺴﺎر ﻓﮫﺮس ﺣﻘﯿﻘﻲ ‪.‬‬ ‫‪MapPath‬‬

‫اﻟﻜﺎﺋﻦ ‪: Session‬‬

‫ﻳﻘﻮم ھﺬا اﻟﻜﺎﺋﻦ ﺑﺘﺨﺰﻳﻦ ﻣﻌﻠﻮﻣﺎت ﺣﻮل اﻟﻤﺴﺘﺨﺪم أﺛﻨﺎء ﺗﺠﻮﻟﻪ ﻓﻲ اﻟﻤﻮﻗﻊ و ﻳﺒﻘﻰ ھﺬا اﻟﻜﺎﺋﻦ ﻣﻮﺟﻮدا ﺧﻼل ﺗﻮاﺟﺪ اﻟﻤﺴﺘﺨﺪم ﻓﻲ‬
‫اﻟﻤﻮﻗﻊ ﺣﺘﻰ ﻳﺘﻢ إﻏﻼق اﻟﻤﺘﺼﻔﺢ أو اﺳﺘﺨﺪام إﺣﺪى اﻟﻄﺮق اﻟﺘﻲ ﺳﺄذﻛﺮھﺎ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ‪ ،،‬ﻟﻜﻦ أﺣﺐ أن أﻧﻮﻧﻪ ﻓﻲ أﻧﮫﺎ‬
‫ﺗﺴﺘﺨﺪم أﻳﻀﺎ ﻓﻲ ﺟﻌﻞ ﻣﺴﺘﺨﺪﻣﯿﻦ ﻓﻲ ﻣﻜﺎﻧﯿﻦ ﻣﺨﺘﻠﻔﯿﻦ أن ﻳﺴﺘﺨﺪﻣﻮا اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﻧﻔﺲ اﻟﺼﻔﺤﺔ دون اﻟﺘﺪاﺧﻞ ﻓﻲ اﻟﻤﻌﻠﻮﻣﺎت و‬
‫ﻟﮫﺎ دور ﻛﺒﯿﺮ ﻓﻲ ﻧﻘﻄﺔ اﻟﺴﺮﻳﺔ ‪ ،،‬و ھﺬا ﺟﺪول ﻳﺒﯿﻦ اﻟﺨﺼﺎﺋﺺ و اﻟﻄﺮق ﻟﮫﺬا اﻟﻜﺎﺋﻦ ‪:‬‬

‫اﻟﺸﺮح‬ ‫اﻟﻨﻮع‬

‫ﺗﺴﺘﺨﺪم ﻓﻲ ﺗﻌﺮﻳﻒ ﻧﻮع اﻟﺮﻣﻮز اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ اﻟﻜﻮد ‪.‬‬ ‫‪CodePage‬‬ ‫‪Properties‬‬

‫ﺗﺴﺘﺨﺪم ﻓﻲ ﺗﻌﺮﻳﻔﺎت ﻣﻌﯿﻨﺔ ﻣﺮﺗﺒﻄﺔ ﺑﺎﻟﺒﯿﺌﺔ اﻟﺘﻲ ﻳﻌﯿﻦ ﻋﻠﯿﮫﺎ‬


‫‪LCID‬‬
‫ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ﻣﺜﻞ اﻟﻌﻤﻠﺔ و اﻟﺘﺎرﻳﺦ و اﻟﺒﻠﺪ ‪..‬‬

‫ﺗﻘﻮم ﺑﺈﻋﻄﺎء رﻗﻢ ‪ Long Number‬ﻟﻠﻤﺴﺘﺨﺪم اﻟﻤﻮﺟﻮد ﺣﺎﻟﯿﺎ‬


‫‪SessionId‬‬
‫ﻋﻠﻰ اﻟﺼﻔﺤﺔ‬

‫ﺗﺴﺘﺨﺪم ﻓﻲ ﺗﺤﺪﻳﺪ ﻣﺪة زﻣﻨﯿﺔ ﺑﺎﻟﺪﻗﺎﺋﻖ ﻹﻧﮫﺎء ھﺬه اﻟﺠﻠﺴﺔ ‪.‬‬ ‫‪TimeOut‬‬

‫ﺗﻘﻮم ﺑﺈﻧﮫﺎء اﻟﺠﻠﺴﺔ و ﺗﻔﺮﻳﻎ ال ‪ session‬إﻻ إذا اﻧﺘﮫﻰ ﺑﺴﺒﺐ‬


‫‪Abandon‬‬ ‫‪Method‬‬
‫اﻧﺘﮫﺎء اﻟﻮﻗﺖ ‪.‬‬

‫ﺗﻌﺮف داﺧﻞ ﻣﻠﻒ ‪ global.asa‬و ﺗﻘﻮم ﺑﻌﺮض ﻣﺠﻤﻮﻋﺔ أواﻣﺮ ﺑﮫﺬا‬


‫‪Session_OnStart‬‬ ‫‪Events‬‬
‫اﻟﻤﻠﻒ ‪.‬‬

‫ﺗﻘﻮم ﺑﺈﻧﮫﺎء اﻟﻮﻇﯿﻔﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ ﻣﻠﻒ ‪. Global.asa‬‬ ‫‪Session_OnEnd‬‬

‫اﻟﻜﺎﺋﻦ ‪: Application‬‬

‫ﻳﺴﺘﺨﺪم ھﺬا اﻟﻜﺎﺋﻦ ﻓﻲ ﺗﺨﺰﻳﻦ و اﺳﺘﺮﺟﺎع اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﻗﺎم ﺑﮫﺎ اﻟﻤﺘﺼﻔﺢ ﻧﺘﯿﺠﺔ ﻃﻠﺒﺎت ﻣﻦ اﻟﻤﺴﺘﺨﺪم و ذﻟﻚ ﻟﻠﻌﻮدة ﻟﮫﺎ ‪ ،‬و‬
‫ﻳﻤﻜﻦ اﺳﺘﺨﺪام أﻛﺜﺮ ﻣﻦ ‪ 10.000‬ﺷﺨﺺ ﻟﮫﺬا اﻟﻜﺎﺋﻦ ﻋﻠﻰ ﻧﻔﺲ ال ‪ Root‬ﻟﻠﻤﻮﻗﻊ ‪ .‬و ﺻﯿﻐﺘﻪ اﻟﻌﺎﻣﺔ ‪:‬‬

‫‪Application.method‬‬

‫و ھﺬا اﻟﺠﺪول ﻳﺒﯿﻦ اﻟﻤﺠﻤﻮﻋﺎت و اﻟﻄﺮق و اﻷﺣﺪاث اﻟﻤﺘﻌﻠﻘﺔ ﺑﺎﻟﻜﺎﺋﻦ ‪:‬‬

‫اﻟﺸﺮح‬ ‫اﻟﻨﻮع‬

‫ﺣﻮي ﻛﻞ اﻟﻤﺘﻐﯿﺮات اﻟﺘﻲ ﺗﻀﺎف ﻟﻠﺘﻄﺒﯿﻖ ﻣﻦ ﺧﻼل‬


‫‪Contents‬‬ ‫‪Collection‬‬
‫اﻟﺴﻜﺮﻳﺒﺘﺎت ‪.‬‬
‫ﺗﺤﻮي ﻛﻞ اﻟﻜﺎﺋﻨﺎت اﻟﻤﻀﺎﻓﺔ ﻟﻞ ‪ session‬ﺑﺎﺳﺘﺨﺪام وﺳﻢ >‬
‫‪Staticobjects‬‬
‫‪<OBJECT‬‬

‫‪ASP.mht‬ﻛﺎﺋﻨﺎت‪mhtml:ada99:20%‬‬ ‫‪18-06-2005‬‬
‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬
‫‪ ASP‬ﻛﺎﺋﻨﺎت‬ ‫‪Page 8 sur 8‬‬

‫ﻳﻘﻮم ﺑﻤﻨﻊ أي ﻣﺴﺘﺨﺪم اﺧﺮ ﺑﺈﺟﺮاء ﺗﻐﯿﺮات ﻋﻠﻰ اﻟﺘﻄﺒﯿﻖ ‪.‬‬ ‫‪Lock‬‬
‫ﻳﻘﻮم ﺑﻔﻚ اﻹﻏﻼق ﻋﻦ اﻟﺘﻄﺒﯿﻖ و اﻟﺴﻤﺎح ﻟﻼﺧﺮﻳﻦ ﺑﺈﺟﺮاء‬
‫‪UnLock‬‬
‫ﺗﻌﺪﻳﻼت ﻋﻠﯿﻪ ‪.‬‬

‫ﺗﻘﻮم ﺑﻨﻔﺲ دور ‪ expire‬إﻻ اﻧﮫﺎ ﺗﺤﺪد أﻳﻀﺎ اﻟﯿﻮم و اﻟﺘﺎرﻳﺦ ‪.‬‬ ‫‪ExpiresAbsolute‬‬
‫ﻳﻘﻮم ﺑﺈﻳﻘﺎف اﻟﺘﻄﺒﯿﻖ ﻋﻨﺪ ﺗﻮﻗﻒ ﻋﻤﻞ اﻟﺨﺎدم ﻣﻦ ﻗﺒﻞ ﻣﺪﻳﺮ‬
‫‪Application_OnEnd‬‬ ‫‪Events‬‬
‫اﻟﻤﻮﻗﻊ ‪.‬‬
‫ﻳﺄﺧﺬ ھﺬا اﻟﺤﺪث ﻣﻜﺎﻧﻪ ﻋﻨﺪ ﺗﺸﻐﯿﻞ اﻟﺘﻄﺒﯿﻖ ﻋﻠﻰ اﻟﺨﺎدم ﻷول‬
‫‪Application_OnٍStart‬‬
‫ﻣﺮة ‪.‬‬

‫و ھﻜﺬا ﻧﻜﻮن اﻧﺘﮫﯿﻨﺎ ﻣﻦ ﻛﺎﺋﻨﺎت ‪ ASP‬اﻟﺨﻤﺴﺔ و اﻟﺘﻲ ﻗﺪ ﺗﺘﺴﺎﺋﻞ ﻣﺎ ﻓﺎﺋﺪﺗﮫﺎ أو ﻣﺎ ھﻲ ‪ ،،‬أﻧﺎ أواﻓﻘﻚ اﻟﺮأي ﻟﻜﻦ ﺻﺪﻗﻨﻲ ﻋﻨﺪ ذھﺎﺑﻚ‬
‫ﻟﻮرﺷﺔ اﻟﻌﻤﻞ ﺳﺘﺠﺪ رﻣﻮزا ﻣﺒﮫﻤﺔ و ﻣﺨﺘﺼﺮة ﻟﻜﻦ ﻋﻨﺪﻣﺎ ﺗﻜﻮن ﻗﺪ اﺳﺘﻮﻋﺒﺘﮫﺎ ھﻨﺎ ﻓﺈﻧﻚ ﺳﺘﺠﺪھﺎ ﻳﺴﯿﺮة و ﻣﻔﮫﻮﻣﺔ ‪..‬‬

‫‪ASP.mht‬ﻛﺎﺋﻨﺎت‪mhtml:ada99:20%‬‬ ‫‪18-06-2005‬‬
‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬

You might also like