صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 27

الموضوع: Ajax Basics بدايتك الى عالم الاجاكس [الدرس الاول+الثاني+الثالث]

  1. #1

    Ajax Basics بدايتك الى عالم الاجاكس [الدرس الاول+الثاني+الثالث]



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

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

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

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

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

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

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

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

    تقنية الاطار المخفي Hidden Frame Technique
    ولدت هذه التقنية وقت ادخال لغة الـ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>
    والان قمنا بالانتهاء من عرض النتائج قم بفتح الملفات في متصفحك الخاص
    وانظر الى نتيجة عملك

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

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





    __________________
    :: صمم ::


  2. #2
    عضو نشيط
    تاريخ التسجيل
    May 2004
    المشاركات
    210


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

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








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





    __________________
    أكواد نت مفهوم جديد للبرمجة العربية
    www.akwad.net
    Flash,Php,Java,ActionScript
    أنصت للإبداع..
    زمان يا نت :D

  4. #4


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

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

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

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

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





    __________________
    :: صمم ::

  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    627


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

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

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

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

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

    وشكراً لكم

    أخوكم حمد





    __________________
    اللهم أغفر لنا ولوالدينا وللمؤمنين والمؤمنات والمسلمين والمسلمات
    الأحياء منهم والأموات يا أرحم الراحمين

  6. #6


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

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

    شهد تشكر عليه





    __________________
    سحابة الإسلام
    www.islamcloud.com

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

    سبحان الله وبحمده سبحان الله العظيم



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

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

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





    __________________
    ownersınnı
    ALdiraZi BLoOoG | Contact Me | lt.tl - shorten your URL

  8. #8

    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

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





    __________________
    :: صمم ::

  9. #9
    عضو فعال
    تاريخ التسجيل
    Jun 2007
    المشاركات
    1,369


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





    __________________
    من جديد :)

  10. #10
    عضو فعال
    تاريخ التسجيل
    Jun 2007
    المشاركات
    1,369


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






    __________________
    من جديد :)

  11. #11


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





    __________________
    :: صمم ::

  12. #12
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    54

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



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

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





    الصور المرفقة الصور المرفقة  

  13. #13
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    55


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

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






  14. #14

    الدرس الثالث



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

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

    الـ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"
    وبالمرفق الملفات كاملة لتقوم بتجربتها بنفسك والتحقق من النتائج ^^

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

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

    المصدر





    __________________
    :: صمم ::

  15. #15
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2007
    المشاركات
    561


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

    تحياتي










ضوابط المشاركة

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

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض