جوال سوالف سوفت
من الموقع: Crunchpad, عندما يتحول المستخدم الى منتج فإن القصة تكون حتما مثيرة !!

 

العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > البرمجية القياسية Ajax +XML+ CSS+ JavaScript وغيرها
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
عضو جديد
تاريخ التسجيل: Sep 2006-
#1 (permalink)  
Ajax Basics بدايتك الى عالم الاجاكس [الدرس الاول+الثاني+الثالث]


السلام عليكم ورحمة الله وبركاتة

سنبدأ بإذن الله بأول دروسنا في عالم تطبيقات الاجاكس

تكمن قوة الاجاكس في التفاعل ما بين web browser و الserver ,
فهم هذا النوع من التفاعل كان مقصورا على اولئك المطورين الذين يتعاملون مع لغات البرمجة
من خلال السيرفر مثل c ,perl .
اللغات الحديثة المتقدمة php, asp.net قامت بعمل مزيج مشترك ما بين المبرمج والسيرفر
لكنهم غالبا ما يفتقرون الى الفهم الكامل لجميع التكنلوجيات من جانب المبرمج مثل JavaScript.

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

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

عندما تقوم بكتابة الاحرف التالية في متصفحك "http://" فهذا يعني بأنك تعلم المتصفح
بأنك تقوم بأستخدام بروتوكول HTTP لتقوم بجلب الصفحات التي تريدها من الشبكة.

بروتوكول الـ HTTP هو عباره عن قسمين :
1-Request
2-Response
الطلب والرد فعندما تقوم بكتابة رابط الموقع التي تريد الدخول اليه في المتصفح يقوم المتصفح
بأرساال طلب نيابة عنك , ويتضمن هذا الطلب رابط الموقع الذي كنت قد كتبته وبعض المعلومات
عن المتصفح , يستقبل السيرفر هذا الطلب ويقوم بأرسال رد وبها المعلومات حسب الرابط
الذي قمت بكتابتة, ثم يقوم المتصفح بأظهار النتائج القادمة من السيرفر .

الان اصبح لدينا بعض المعلومات عن كيفية اضهار النتائج في المتصفح بشكل اوسع لننطلق الان في
بداية درسنا ولنبدا بـ :

[CENTER]تقنية الاطار المخفي Hidden Frame Technique[/CENTER]
ولدت هذه التقنية وقت ادخال لغة الـHTML الى عالم الانترنت , الفكرة الرئسية وراء هذه التقنية
هو انشاء اطار مجموعة يجمع اطر مخفية لتستخدم من جهة العميل.
وبأمكانك اخفاءه كليا في حال ساوية القيم للطول او العرض بـالصفر فهنا سيختفي الاطار
من منطقة العرض ولكن في بعض المتصفحات مثل الNetscape 4 لا يختفي كليا ولكن
يبقى البعض من ثخانة الطار بشكل ظاهر.

الانماط (Pattern) :

دائما نبدا مع الاطر الظاهره حينما يكون المستخدم متفاعل مع صفحة الويب.
فمن الطبيعي ان يكون المستخدم على عدم دراية بوجود اطر مخفية (اذا لم تكن ظاهره امامه في المتصفحات الحديثه)
في هذه النقطه يتوقع المستخدم ان يقوم السيرفر بأرسال البيانات التي قام بطلبها وعندما يحصل ذلك
الخطوه الاولى في هذه العملية تبدأ دوال الجافا سكريبت بالعمل فمثلا تقوم بأرسال البيانات الى صفحة اخرى
في المتصفح ليقوم بتنفيذها وهذه تكون الخطوه الثانية.
في الخطوه الثالثة يقوم السيرفر بأرسال البيانات الى الصفحة الثانية والسبب في ذلك
انك قمت بعمل اتفاق مع الفريم ان يكون بأرسال البيانات الى صفحة اخرى
وفي الخطوه الرابعة يكون اظهار النتائج في الاطر الظاهره في الصفحة الاخرى.

استعمال الاطر المخفية مع طلبات GET :

والان بعد ان فهمنا ما هية الاطر المخفية سنأتي للقسم الاجمل وهو تعلم كيفية عملها.
كما هي الحال في اي تقنية جديدة افضل طريقة لتعلمها هو العمل على الامثلة التطبيقية
واخترت لكم مثالا بسيطا وهو صفحة بسيطة تقوم من خلالها بأدخال بعض المعلومات عن
مستخدم لمنتج وستقوم الصفحة بجلب النتائج لك بعد ادخال رقم الـID الخاص بهذا المستخدم:

اولا عليك ان تقوم بزرع هذا الامر في قاعدة بيانات لتقوم بأنشاء جدول يحمل بعض الصفوف
(لاحظ بأنه في هذه الامثلة عليك ان تكون على دراية ببعض اللغات مثل MySQL , PHP ,JavaScript)

كود PHP:
#
# Table structure for table `Customers`
#

CREATE TABLE `Customers` (
  `
CustomerIdint(11NOT NULL auto_increment,
  `
Namevarchar(255NOT NULL default '',
  `
Addressvarchar(255NOT NULL default '',
  `
Cityvarchar(255NOT NULL default '',
  `
Statevarchar(255NOT NULL default '',
  `
Zipvarchar(255NOT NULL default '',
  `
Phonevarchar(255NOT NULL default '',
  `
E-mailvarchar(255NOT NULL default '',
  
PRIMARY KEY  (`CustomerId`)
TYPE=MyISAM COMMENT='Sample Customer Data' ;

#
# Dumping data for table `Customers`
#

INSERT INTO `CustomersVALUES (1'Michael Smith''123 Somewhere Road''Beverly Hills''California''90210''(555) 555-1234''michael@somewhere.com');
INSERT INTO `CustomersVALUES (2'Matthew Johnson''1234 Somewhere Else Street''Elsewhere''Confusion''00000''(555) 555-2345''johnboy@neato.net');
INSERT INTO `CustomersVALUES (3'Cindy Benjamin''1313 Mockingbird Lane''Somewhere''Montana''00000''(555) 555-9876''cindybean@mcok.net');
INSERT INTO `CustomersVALUES (4'Mary Klein''10 Highland Avenue''Salem''Massachusetts''01970''(555) 555-4920''mary@klein.net'); 
اهم حقل في هذا الجدول هو CustomerId فهو ما سنستخدمه للبحث عن معلومات المستخدم.

للنتقل الان الى كود الـ HTML لاستخدام تقنية الاطر المخفية , فعليك اولا البدء مع اطارات الـHTML

اولا قم بفتح صفحة جديدة بأمتداد HTM وقم بادخال الكود التالي بها وحفظها :
كود PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<
html >
<
head >
<
title>الاطر المخفية المثال الاول</title>
</
head>

<
frameset rows="100%,0" frameborder="0" >
    <
frame name="displayFrame" src="display.htm" noresize="noresize" target="_self"  >
    <
frame name="hiddenFrame" src="about:blank" noresize="noresize" >
</
frameset>

</
html
قم بحفظها بأي اسم تشاء .

اهم اتريبيوت في هذا الكود هو rows فمن خلاله سيتعرف المتصفح بأنه لن يقوم بأظهار
جسم الفريم الاخر لوضعنا القيم 100% و صفر ومن ثم قمنا بجعل قيمة frameborder حدود الفريم
مساوية للصفر للتأكد بعدم ظهر حدود الفريم . واخيرا واهم شيء قمنا بتعيين الخاصية noresize
حتى لا يقوم المستخدم برؤية ما يوجد بالفريم المخفي .

ومن ثم الان سنقوم بتصميم صفحة جديدة وليكن اسمها display.htm وسنضع بها
Text area لأدخال رقم العميل انظر الان للكود :


كود PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<
html dir="rtl">
<
head>
    <
title>معلومات حسابات العملاء</title>
    <
script type="text/javascript">
        function 
requestCustomerInfo() {
            var 
sId document.getElementById("txtCustomerId").value;
            
top.frames["hiddenFrame"].location "GetCustomerData.php?id=" sId;
        }
        
        function 
displayCustomerInfo(sText) {
            var 
divCustomerInfo document.getElementById("divCustomerInfo");
            
divCustomerInfo.innerHTML sText;
        }
    
</script>
</head>
<body>
    <p>قم بإدخال رقم العميل لإظهار معلوماته:</p>
    <p>رقم العميل <input type="text" id="txtCustomerId" value="" ></p>
    <p><input type="button" value="جلب معلومات العميل" onclick="requestCustomerInfo()" ></p>
    <div id="divCustomerInfo"></div>
</body>
</html> 

لنحلل الكود سويا حتى تفهموه بأكمل وجه ...

في بداية الامر في الوسم هيد قمنا بأنشاء داله اسميناها
كود:
 requestCustomerInfo()
تقوم بأخذ الرقم الذي قمت بادخالة داخل الخاصية id في الفريم الذي اعطيناه الاسم txtCustomerId
وتقوم بتخزينه بداخل متغير بحيث يقوم هذا المتغير باكمال الرابط
GetCustomerData.php?id=
بحيث يقوم بتعيين الرقم الذي وضع في المتغير بداخل هذا السطر حتى يقوم بجلب النتائج من خلاله
ومن ثم قمنا بأنشاء دالة اخرى اسميناها .

كود:
displayCustomerInfo(sText)
عمل هذه الدالة هو جلب معلومات العميل ,,

الان لنفتح ملف جديد ونقوم بتسميته GetCustomerData.php
ونضع به هذا الكود

كود PHP:
<html>
<head>
<title> جلب معلومات العميل </title>
<?php
//php code
?>
</head>
<body>
<div id="divInfoToReturn"><?php echo $sInfo ?></div>
</body>
</html>
ستلاحظ بأنه لا يوجد به ما يميزه عن اي شيء ولكن لنفهم كيفية عملة لأننا سنضيف اليه
المزيد من الاكواد ..
في الوسم الاول الخاص بالبي اتش بي سنقوم بوضع الكود الخاص بأحضار القيم
وفي الوسم الثاني سيقوم بطباعة ما يحتوية المتغير $sInfo , وفي وسم </div>
الذي ستقوم من خلاله بقراءه البيانات وارسالها الى الصفحة الفريم
لتقوم بهذا سيلزمك ان تقوم بانشاء دالة جديدة من JavaScript تستدعى حينما تبدا الصفحة بالتحميل

هذا كود الدالة وسيكون في الوسم head اسفل كود الـ PHP

كود PHP:
  <script type="text/javascript">
        
window.onload = function () {
            var 
divInfoToReturn document.getElementById("divInfoToReturn");
            
top.frames["displayFrame"].displayCustomerInfo(divInfoToReturn.innerHTML);        
        };
    
    
</script> 
هذه الدالة تعين بشكل مباشر الى window.onload . في البداية تقوم بأسترجاع المؤشر الى </div>
هذا الذي يحتوي على معلومات العميل.
وبعدها, تقوم بالوصول الى فريم العرض بأستخدام مصفوفة top.frames وتستدعي الدالة
displayCustomerInfo() التي حددت في وقت سابق, بالمرور الى innerHtml لـ </div>

ولكن من اين ستأتي هذه المعلومات , الاكيد انها ستأتي من كود الـ PHP
حسنا في البداية يلزمنا تعريف المتغير $sID على انه مصفوفة get ونجلب منها الid
ومن ثم نعرف متغير اخر اسمه $sInfo وسيكون في البداية فارغ
ونضع معلومات الاتصال بقاعدة البيانات

كود PHP:
 //customer ID
    
$sID $_GET["id"];
    
    
//variable to hold customer info
    
$sInfo "";
    
    
//database information
    
$sDBServer "localhost";
    
$sDBName "ajax";
    
$sDBUsername "root";
    
$sDBPassword "root"
قم بتغير المعلومات كما تراه مناسبا للسيرفر الذي تستخدمه .

وبعد الاتصال بقاعدة البيانات سنقوم بكتابة الكود المختص بجلب النتائج من قاعدة البيانات
وتخزينها في المتغير sInfo بالشكل المطلوب ليصبح الكود كاملا على هذا الشكل

كود PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>جلب معلومات العميل</title>
<?php
    
    
//customer ID
    
$sID $_GET["id"];
    
    
//variable to hold customer info
    
$sInfo "";
    
    
//database information
    
$sDBServer "localhost";
    
$sDBName "ajax";
    
$sDBUsername "root";
    
$sDBPassword "root";

    
//create the SQL query string
    
$sQuery "Select * from Customers where CustomerId=".$sID;
              
    
//make the database connection
    
$oLink mysql_connect($sDBServer,$sDBUsername,$sDBPassword);
    @
mysql_select_db($sDBName) or $sInfo "Unable to open database";
        
    if(
$sInfo == '') {
        if(
$oResult mysql_query($sQuery) and mysql_num_rows($oResult) > 0) {
            
$aValues mysql_fetch_array($oResult,MYSQL_ASSOC);
            
$sInfo $aValues['Name']."<br />".$aValues['Address']."<br />".
                     
$aValues['City']."<br />".$aValues['State']."<br />".
                     
$aValues['Zip']."<br /><br />Phone: ".$aValues['Phone']."<br />".
                     
"<a href=\"mailto:".$aValues['E-mail']."\">".$aValues['E-mail']."</a>";
        } else {
            
$sInfo "Customer with ID $sID doesn't exist.";
        }
    }
    
    
mysql_close($oLink);

?>
    
    <script type="text/javascript">
        window.onload = function () {
            var divInfoToReturn = document.getElementById("divInfoToReturn");
            top.frames["displayFrame"].displayCustomerInfo(divInfoToReturn.innerHTML);        
        };
    
    </script>

</head>
<body>
    <div id="divInfoToReturn"><?php echo $sInfo ?></div>
</body>
</html>
والان قمنا بالانتهاء من عرض النتائج قم بفتح الملفات في متصفحك الخاص
وانظر الى نتيجة عملك

اتمنى لكم التوفيق وبهذا نكون قد انهينا درسنا الاول
نلتقي في درسنا القادم بأذن الله

يرجى عند نقل الدرس ذكر المصدر .






__________________
:: صمم ::
ThePunisher غير متواجد حالياً   قديم 05-01-2008, 10:04 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2004-
#2 (permalink)  

رااااااااائع

سيتم التطبيق والعودة..






awam10 غير متواجد حالياً   قديم 06-01-2008, 05:17 PM
رد مع اقتباس
مشرف قسم ويب 2.0 و البرمجة القياسية
تاريخ التسجيل: Aug 2004-
#3 (permalink)  

الفاضل ThePunisher .. درس قيم يستحق التثبيت بعد إذن زملائي مشرفي القسم الأفاضل تقديرا ً لجهدك و ليستفيد منه الجميع ..
أتمنى أن يتم إستكمال الدورس في نفس هذا الموضوع.. لك التحية






__________________
أكواد نت مفهوم جديد للبرمجة العربية
www.akwad.net
Flash,Php,Java,ActionScript
أنصت للإبداع..
زمان يا نت :D
Akwad Net غير متواجد حالياً   قديم 06-01-2008, 09:52 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Sep 2006-
#4 (permalink)  

الله يبارك فيكم حبايبي

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

الدرس الثاني جاهز لكن ارى من الافضل ان يتم اعطاء الدرس الاول حقه

ولكم وافر التقدير

اخوكم المعـــــــــــاقب






__________________
:: صمم ::
ThePunisher غير متواجد حالياً   قديم 06-01-2008, 10:40 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Feb 2004-
#5 (permalink)  

يعطيك العافيه اخوي ThePunisher

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

------ خارج الموضوع -------

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

الفلم اهو The Punisher
------------------------

وشكراً لكم

أخوكم حمد






__________________
اللهم أغفر لنا ولوالدينا وللمؤمنين والمؤمنات والمسلمين والمسلمات
الأحياء منهم والأموات يا أرحم الراحمين
حمد مبارك غير متواجد حالياً   قديم 07-01-2008, 06:45 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jun 2007-
#6 (permalink)  

جميل جداً , قد قريت مصدر المقاله نفسها من هنا ScriptAlias » Blog Archive » embedding html in a post

لكن بالإنجليزي

شهد تشكر عليه






__________________
موقعي الشخصي www.althari.ws

عالم التقنية .. موقع عربي متميز شعاره .. أخبار التقنية بين يديك
www.tech-wd.com
أبو فارس غير متواجد حالياً   قديم 07-01-2008, 11:07 AM
رد مع اقتباس
مشرف قسم ويب 2.0 و فكرة
تاريخ التسجيل: Jun 2005-
#7 (permalink)  

درس جميل ومفيد .

راح احاول اطبقه في الايام القادمة ان شاء الله

لي عودة بعد التطبيق






__________________
ownersınnı
ALdiraZi BLoOoG | Contact Me | lt.tl - shorten your URL
owner غير متواجد حالياً   قديم 07-01-2008, 12:43 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Sep 2006-
#8 (permalink)  
Ajax Basics بدايتك الى عالم الاجاكس [الدرس الثاني]

السلام عليكم ورحمة الله

سنكمل مسيرتنا في دورة الاجاكس مع الدرس الثاني

بعد ان تعرفنا في الدرس الاول على

استعمال الاطر المخفية مع طلبات GET

سنتعلم اليوم

استعمال الاطر المخفية مع طلبات POST

افضل ما يميز طريقة ارسال البيانات POST عن GET انك يمكنك ارسال بيانات بحجم يقارب

2GB انما في طريقة GET فلا يمكنك ارسال سوا 512KB .

كما تعودنا فطريقة ارسال الطلبات بالPOST تتم من خلال form مع تعيين الmetod الى post

ومن ثم عند ارسال الطلب فأن الpost ترسل الى الurl الموجود في الخاصية action.

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

ولكن شكرا للخاصية المسماه target .

الخاصية target هي واحده من خواص الفورم التي توضع مع الوسم <a> بوضعك لهذه الخاصية

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

لنبدأ الان بالعمل :

قم بفتح ملف جديد وضع به كود الhtml التالي

كود PHP:
<frameset rows="100%,0" frameborder="0">
    <
frame name="displayFrame" src="entry.htm" noresize="noresize" />
    <
frame name="hiddenFrame" src="about:blank" noresize="noresize" />
</
frameset
لاحظ انه لم يختلف عن مثالنا في درسنا الاول الا في السطر الثاني بحيث اردنا ان يفتح

صفحة جديدة اسميناها entry.htm

الان قم بوضع هذا الكود داخل هذه الصفحة ..
كود PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<
html dir="rtl">
<
head>
    <
title>اضافة عميل جديد </title>
    <
script type="text/javascript">
           
        function 
saveResult(sMessage) {
            var 
divStatus document.getElementById("divStatus");
            
divStatus.innerHTML "Request completed: " sMessage;            
        }

    
</script>
</head>
<body>
    <form method="post" action="SaveCustomer.php" target="hiddenFrame">
    <p>اكتب معلومات العميل لحفظها :</p>
    <p>اسم العميل: <input type="text" name="txtName" value="" /><br />
    العنوان: <input type="text" name="txtAddress" value="" /><br />
    المدينة: <input type="text" name="txtCity" value="" /><br />
    الامارة: <input type="text" name="txtState" value="" /><br />
    الرمز البريدي: <input type="text" name="txtZipCode" value="" /><br />
    الهاتف: <input type="text" name="txtPhone" value="" /><br />
    البريد الالكتروني: <input type="text" name="txtEmail" value="" /></p>
    <p><input type="submit" value="حفظ معلومات العميل" /></p>
    </form>
    <div id="divStatus"></div>
</body>
</html> 
من خلال الفورم الموجود امامنا قمنا بتعيين الtarget الى اطار مخفي اهم ما يميز هذه الصفحة
هي دالة الجافا سكريبت الموجوده فيه فهي تعمل عندما يعود الاطار المخفي بعد حفظ المعلومات
في صفحة savecustomer.php

لنأتي الان لعمل الصفحة SaveCustomer.php فهي ببساطه تقوم بحفظ البيانات المرسلة الليها
في قاعدة البيانات .

وهذا الكود الخاص بها وليس به ما هو جديد

كود PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Create New Customer</title>
<?php
    
//جلب البيانات
    
$sName $_POST["txtName"];
    
$sAddress $_POST["txtAddress"];
    
$sCity $_POST["txtCity"];
    
$sState $_POST["txtState"];
    
$sZipCode $_POST["txtZipCode"];
    
$sPhone $_POST["txtPhone"];
    
$sEmail $_POST["txtEmail"];
    
    
//رسالة الحالة
    
$sStatus "";
        
    
//معلومات قاعدة البيانات
    
$sDBServer "localhost";
    
$sDBName "ajax";
    
$sDBUsername "root";
    
$sDBPassword "";

    
//استفسارات قاعدة البيانات
    
$sSQL "Insert into Customers(Name,Address,City,State,Zip,Phone,`E-mail`) ".
              
" values ('$sName','$sAddress','$sCity','$sState', '$sZipCode'".
              
", '$sPhone', '$sEmail')";

    
$oLink mysql_connect($sDBServer,$sDBUsername,$sDBPassword);
    @
mysql_select_db($sDBName) or $sStatus "Unable to open database";
        
    if(
$sStatus == ''){
        if(
$oResult mysql_query($sSQL)) {
            
$sStatus "Added customer; customer ID is ".mysql_insert_id();
         } else {
            
$sStatus "An error occurred while inserting; customer not saved.";
        }
    }

    
mysql_close($oLink);
?>
    <script type="text/javascript">
    
        window.onload = function () {
            top.frames["displayFrame"].saveResult("<?php echo $sStatus ?>");        
        }

    </script>
</head>
<body>
</body>
</html>
الدالة mysql_insert_id() عملها يقوم على اعادة اخر auto_increment تم اضافته من خلال
الـ insert


قم بعمل هذا المثال وتمتع بالنتائج ^^

لقلة الوقت سأكتفي بهذا المثال

اتمنى لكم الفائدة وفي دروسنا القادمة سنتعرف على Hidden iFrames

والسلام عليكم






__________________
:: صمم ::
ThePunisher غير متواجد حالياً   قديم 08-01-2008, 10:16 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Jun 2007-
#9 (permalink)  

بارك الله فيك اخي الكريم






__________________
للبيع:
3lom.net
onDay.org
DoNext.org
LastYear.org
looksLike.org
stayReady.net
GoogleLover.org
mwafi غير متواجد حالياً   قديم 08-01-2008, 10:45 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Jun 2007-
#10 (permalink)  

مشكور اخوي مرة اخري وتم تطبيق الدرس الاول






__________________
للبيع:
3lom.net
onDay.org
DoNext.org
LastYear.org
looksLike.org
stayReady.net
GoogleLover.org
mwafi غير متواجد حالياً   قديم 09-01-2008, 01:30 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Sep 2006-
#11 (permalink)  

يعطيك العافيه يا جنرال ^^






__________________
:: صمم ::
ThePunisher غير متواجد حالياً   قديم 09-01-2008, 04:07 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jan 2008-
#12 (permalink)  
بارك الله فيكـ

باركـ الله فيكـ

http://www.swalif.net/softs/attachme...1&d=1201194386






الصور المصغرة للصور المرفقة
اضغط على الصورة لعرض أكبر

الاســـم:	tn.gif‏
المشاهدات:	274
الحجـــم:	7.7 كيلوبايت
الرقم:	39017  
libyan top غير متواجد حالياً   قديم 23-01-2008, 10:06 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jan 2008-
#13 (permalink)  

بارك الله فيك يا محمد ..

عـبدالرحمن ..






أبــو عبدالله غير متواجد حالياً   قديم 28-01-2008, 04:29 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Sep 2006-
#14 (permalink)  
الدرس الثالث

السلام عليكم ورحمة الله وبركاتة

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

الـHidden frame وطرق ارسال المعلومات وكانت Get , Post

والان ننتقل الى Hidden iFrames

بدأ ظهور خاصية الـiFrame مع ظهور تقنية الـ HTML 4.0 وهي لا تختلف اختلافا

كبيرا عن Frame الا في بعض الميزات ستعرف الفروقات من خلال التجربه,

بدايةً هناك طريقتين للأستفادة من الـiFrame والطريقة الاسهل هو وضع الـiFrame
بداخل الصفحة واستخدامه بطريقة hiddenframe لعمل الطلبات ولعمل ذلك
قم بكتابة هذا الكود:

كود PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<
html>
<
head>
    <
title>Hidden IFrame Example 1</title>
    <
script type="text/javascript">
        function 
requestCustomerInfo() {
            var 
sId document.getElementById("txtCustomerId").value;
            
top.frames["hiddenFrame"].location "GetCustomerData.php?id=" sId;
        }

        function 
displayCustomerInfo(sText) {
            var 
divCustomerInfo document.getElementById("divCustomerInfo");
            
divCustomerInfo.innerHTML sText;
        }
    
</script>
</head>
<body>
    <p>Enter customer ID number to retrieve information:</p>
    <p>Customer ID: <input type="text" id="txtCustomerId" value="" /></p>
    <p><input type="button" value="Get Customer Info" onclick="requestCustomerInfo()" /></p>
    <div id="divCustomerInfo"></div>
    <iframe src="about:blank" name="hiddenFrame" width="0" height="0" frameborder="0"></iframe>
</body>
</html> 
وبالصفحة GetCustomerData.php يوجد تعديل بسيط

كود PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Get Customer Data</title>
<?php
    
    
//customer ID
    
$sID $_GET["id"];
    
    
//variable to hold customer info
    
$sInfo "";
    
    
//database information
    
$sDBServer "your.databaser.server";
    
$sDBName "your_db_name";
    
$sDBUsername "your_db_username";
    
$sDBPassword "your_db_password";

    
//create the SQL query string
    
$sQuery "Select * from Customers where CustomerId=".$sID;

    
//make the database connection
    
$oLink mysql_connect($sDBServer,$sDBUsername,$sDBPassword);
    @
mysql_select_db($sDBName) or $sInfo "Unable to open database";
        
    if(
$sInfo == '') {
        if(
$oResult mysql_query($sQuery) and mysql_num_rows($oResult) > 0) {
            
$aValues mysql_fetch_array($oResult,MYSQL_ASSOC);
            
$sInfo $aValues['Name']."<br />".$aValues['Address']."<br />".
                     
$aValues['City']."<br />".$aValues['State']."<br />".
                     
$aValues['Zip']."<br /><br />Phone: ".$aValues['Phone']."<br />".
                     
"<a href=\"mailto:".$aValues['E-mail']."\">".$aValues['E-mail']."</a>";
        } else {
            
$sInfo "Customer with ID $sID doesn't exist.";
        }
    }
    
mysql_close($oLink);

?>
    
    <script type="text/javascript">
        window.onload = function () {
            var divInfoToReturn = document.getElementById("divInfoToReturn");
            parent.displayCustomerInfo(divInfoToReturn.innerHTML);
        };

    </script>

</head>
<body>
    <div id="divInfoToReturn"><?php echo $sInfo ?></div>
</body>
</html>
هذا المثال سيعمل كما لو كان المثال في الدرس الثاني او الاول

اما الطريقة الاخرى لأستخدام ال hidden iFrames هي بأنشائهم بطريقة دايناميكية بأستخدام
الجافا سكريبت ,,

الخطوه الاولى لأنشاء الـiFrame هي بأستخدام الدالة document.createElement()

بالشكل التالي :

كود PHP:
        function createIFrame() {
            var 
oIFrameElement document.createElement("iframe");
            
oIFrameElement.width=0;
            
oIFrameElement.height=0;
            
oIFrameElement.frameBorder=0;
            
oIFrameElement.name "hiddenFrame";
            
oIFrameElement.id "hiddenFrame";
            
document.body.appendChild(oIFrameElement);
//more code

السطر الاخير من هذا الكود هو الاهم بين هذه الاسطر والسبب بأن عمله هو ان يقوم
بأضافة ال iFrame الى بنية الملف .
لاحظ بأن id و name قمنا بكتابتهم بدون اختلاف والسبب بأن بعض المتصفحات تقوم
بالولوج الى الـframe بأستخدام الNAME والبعض الاخر بأستخدام الـ ID.

ومن ثم قم بتعريف متغير لتخزين المرجعات من Iframe

انظر للكود مره اخرى الان :

كود PHP:
        var oIFrame null;

        function 
createIFrame() {
            var 
oIFrameElement document.createElement("iframe");
            
oIFrameElement.width=0;
            
oIFrameElement.height=0;
            
oIFrameElement.frameBorder=0;
            
oIFrameElement.name "hiddenFrame";
            
oIFrameElement.id "hiddenFrame";
            
document.body.appendChild(oIFrameElement);

            
oIFrame frames["hiddenFrame"];
        } 
وهذه التعديلات على الدوال الموجوده في ملف العرض للمعلومات
السابق اي في بداية الدرس مكانة

كود PHP:
        function requestCustomerInfo() {
            if (!
oIFrame) {
                
createIFrame();
                
setTimeout(requestCustomerInfo10);
                return;
            }

            var 
sId document.getElementById("txtCustomerId").value;
            
oIFrame.location "GetCustomerData.php?id=" sId;
        }

        function 
displayCustomerInfo(sText) {
            var 
divCustomerInfo document.getElementById("divCustomerInfo");
            
divCustomerInfo.innerHTML sText;
        } 
قم بتجربة الكود بالاضافة الى الاكواد الموجوده في الدرس الاول او بالاحرى الصفحات صفحات الحفظ
والعرض ,,,

هذه الاكواد بالنسبة للـGET اما بالنسبة للـPOST فهي قصة ثانية ,,

طلبات الاطر المخفية بأستخدام طريقة POST :

لأستخدام الطريقة الصحيحة في POST بالنسبة للـiframe علينا ان نقوم بتحميل الصفحة
بداخل الاطار المخفي ونعبئ هذا الفورم بالبيانات ومن ثم نقوم بأرسال البيانات ,
عندما يقوم الاطار الظاهر امامك بالاستقبال البيانات عليك بأيقاف العملية وارسالها الى الاطار المخفي
لعمل ذلك علينا ان نقوم بأنشاء دالة لأنشاء الـ iFrame ومن ثم تحميل الاطار المخفي:

كود PHP:
        function checkIFrame() {
            if (!
oIFrame) {
                
createIFrame();
            }
            
setTimeout(function () {
                
oIFrame.location "ProxyForm.htm";
            }, 
10);
        } 
بالبداية تقوم هذه الدالة بالتأكد اذا ما كان قد تم انشاء الـ IFrame واذا لم يكن قد تم انشاءه
سيتم استدعاء الدالة createIFrame ومن ثم الدالة timeout ستقوم بأستدعاء الصفحة ProxyForm
التي هي صفحة بأطار مخفي , والسبب بأنه من الضروري ان نقوم بأستدعاء هذه الدالة في
كل مره يقوم الزائر او المستخدم بالأرسال المعلومات عن طريق الزر الخاص بذلك.

الصفحة ProxyForm.htm بسيطة جدا فتحتوي على كود بسيط من الجافا سكريبت :
كود PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<
html>
<
head>
    <
title>Proxy Form</title>
    <
script type="text/javascript">

        
window.onload = function () {
            
parent.formReady();        
        }

    
</script>
</head>
<body>
    <form method="post">
    </form>
</body>
</html> 
كما ترى البدي الخاص بالصفحة يحتوي على فورم فارغ والهيدر يحتوي على دالة onload
وعندما تستدعى الصفحة يتم استدعاء parent.formReady() لتجعل الصفحة الرئيسية
على علم بأنها قادرة على استقبال الطلب ,,

الدالة formReady سنضعها في الصفحة الرئيسية :

كود PHP:
        function formReady() {
            var 
oHiddenForm oIFrame.document.forms[0];
            var 
oForm document.forms[0];

            for (var 
i=oForm.elements.lengthi++) {
                var 
oHidden oIFrame.document.createElement("input");
                
oHidden.type "hidden";
                
oHidden.name oForm.elements[i].name;
                
oHidden.value oForm.elements[i].value;
                
oHiddenForm.appendChild(oHidden);
            }

            
oHiddenForm.action oForm.action;
            
oHiddenForm.submit();
        }; 
والذي تبقى لدينا الان هو التأكد بأن الصفحة الرئيسية لن تقوم بأستدعاء نفسها , والطريقة لذلك
هو بجعل قيمة onsubmit الذي بدورة يستدعي الدالة checkIFrame تساوي False

كود PHP:
 <form method="post" action="SaveCustomer.php" onsubmit="checkIFrame(); return false"
وبالمرفق الملفات كاملة لتقوم بتجربتها بنفسك والتحقق من النتائج ^^

اتمنى ان اكون قد وفقت في طرح هذه التقنية

امنياتي لكم بالتوفيق اخوكم محمد ^^

المصدر






__________________
:: صمم ::
ThePunisher غير متواجد حالياً   قديم 29-01-2008, 10:58 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Jan 2007-
#15 (permalink)  

الله يعطيك العافيه والله مقصرت ودرس مفيد جدا وربنا يقدرنا على تطبيقة

تحياتي






x_yousef_x غير متواجد حالياً   قديم 30-01-2008, 04:29 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2000-
#16 (permalink)  

صراحه جهد تشكر عليه

وياليت تستمر في طرح الدروس ولا تصير مثل غيرك درسين وينسا انه فاتح موضوع وتنتظر جديده الناس

الف شكر لك والله لا يحرمك الاجر






الطالب غير متواجد حالياً   قديم 30-01-2008, 02:02 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Sep 2006-
#17 (permalink)  

الله يبارك فيكم

والله يا غاليين الي اخرني عن طرح الدرس الثالث فترة الامتحانات بس الحمد لله انتهت

ورجعنالكم ووضعت الدرس الثالث والحين جالس اجهز بالدرس الرابع ان شاء الله ساعه او ثنين ويكون بين ايدينكم ^^






__________________
:: صمم ::
ThePunisher غير متواجد حالياً   قديم 30-01-2008, 02:47 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: May 2007-
#18 (permalink)  

جزاك الله خيرا على هذه الدروس
سؤال واحد فقط

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

اننى عندما اطبق وكل شى يعمل جيدا ما دامت البيانات english اما اذا كانت البيانات عربى فتظهر بشكل طلاسم كل الدروس تعمل بشكل جيد وعند التعامل مع العربى يظهر بشكل طلاسم اما الانجليزى فيظهر جيد جدا
الا يوجد حل لموضوع ظهور العربى

منتظر الحل جزاكم الله خيرا ونفع بكم






__________________
لينك جروب لخدمات البرمجه والتصميم
http://linkgroup.net

مسنجر المبيعات
sales@linkgroup.net

مسنجر الاداره / الاضافه للضروره فقط
info@linkgroup.net
apex غير متواجد حالياً   قديم 21-02-2008, 11:51 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Jun 2005-
#19 (permalink)  

جزاكم الله خيراً

درس يكون بدايه لكل مبتدئ مهتم بتقنيه الاجاكس

أرجو ان تتحفنا بجديدك

مع المحبه






__________________
ميكانيكــي منتديــات
سمكــري تصاميـــــم
عسكـــري مواقــــــع

لا حول ولا قوة إلا بالله
لا إله إلا انت سبحانك إني كنت من الظالمين
elebda3 غير متواجد حالياً   قديم 07-03-2008, 11:50 PM
رد مع اقتباس
عضو في سوالف
تاريخ التسجيل: Nov 2005-
#20 (permalink)  

أخي الكريم ..

الكلمات تعجز عن مدى امتنناني لهذا الشرح الرائع

يعطيك مليون عافية ..






ليث الشرس غير متواجد حالياً   قديم 14-03-2008, 09:42 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jan 2008-
#21 (permalink)  

مشكوووورر

مملكة الدروس






www.q6if.com غير متواجد حالياً   قديم 27-03-2008, 09:27 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Mar 2008-
#22 (permalink)  
Thumbs up لكن؟؟؟

شكرا اخى العزيز على اهتمامك...بس ما ظهر معايا الملفات المرفقة ... ممكن انا ما عرفت مكانها ؟؟؟ مع الشكر







التعديل الأخير تم بواسطة : hasona بتاريخ 01-04-2008 الساعة 04:10 PM. سبب آخر: نسيت
hasona غير متواجد حالياً   قديم 01-04-2008, 04:07 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Mar 2008-
#23 (permalink)  

عزيزى انا اريد ان اعمل على ربط صفحة php مع قاعدة البيانات على localhost مطلوب منى فى مجال دراستى . قاعدة البيانات تحتوى على " اسم منتج ,رقم منتج,عدد المنتج ,وسعر المنتج, والتاريخ " .
المستخدم يمكن ان يدخل على الصفحة ويدخل رقم المنتج , فيظهر له سعرة والعدد المتوفر فى المخزن مثلا َ , ومن ثما يمكن ان يقوم بعمل طلب بالمنتج حسب البيانات السابقة + رقم للزبونID يدخله مع الطلب بحيث يقوم بالاطلاع على حاله الطلب عند الشركة الموفرة للمنتج....
لا ادرى اذا كان بالامكان توفر الكود الذى يقوم بهذه الخدمة لديك اخى العزيز واكون مشكورا اذا تم الرد على طلبى هذا م الشكر والعرفان ..






hasona غير متواجد حالياً   قديم 01-04-2008, 04:23 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: May 2007-
#24 (permalink)  

شرح جميل .. شخصياً لا أفضل التعامل مع الـ frames بل افضل التعامل مع غيرها مثل الـ div و الـ span






dev11 غير متواجد حالياً   قديم 14-04-2008, 10:15 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Apr 2008-
#25 (permalink)  

جزاك الله خير


تحياتي
نوكيا الشرق الاوسط






menokia غير متواجد حالياً   قديم 20-04-2008, 05:46 AM
رد مع اقتباس
رد


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
طريقة الترقية من vb2 الى vb3 الرفيع الإصلاح والصيانة 38 10-09-2005 11:59 AM
الطريقه الكامله لدمج منتديين او اكثر في منتدى واحد GHOST الإصلاح والصيانة 31 27-06-2004 03:36 PM
طريقة الترقيه من نسخة منتدى 2.2.0 وما بعدها الى نسخة منتدى 2.3.0 بالتفصيل الممل Khaled774 الإصلاح والصيانة 14 25-03-2004 10:20 AM
كيف ارقي هاك الادوات السحري من الاول الى الثاني ؟ kuwaity الإصلاح والصيانة 3 09-02-2004 11:09 AM
دورة عن شاشة بدء التشغيل الزرقاء moslem14 الأخبار المتعلقة بالإنترنت والتقنية 8 14-04-2002 11:20 PM


الساعة الآن: 01:10 AM بتوقيت المملكة العربية السعودية