You are on page 1of 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