[استفسارات] شاركوني مشروعي الأول







صفحة 1 من 4 1234 الأخيرةالأخيرة
النتائج 1 إلى 15 من 59

الموضوع: [استفسارات] شاركوني مشروعي الأول

  1. #1
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    168

    Lightbulb [استفسارات] شاركوني مشروعي الأول



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

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

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

    اهتم كثيرا بتاريخ ابتداء استخدام المنتج ومدة صلاحيته لأن ذلك يكسبني خبرة في التعامل مع دوال الوقت والتاريخ . وبعد انتهاء المدة اكتب ملاحظاتي عليه و أحدد إن كان جيد أم لا
    مما يفيدني في معرفة التعامل مع أنواع آخرى HTML <input> tag + تحرير البيانات في الجداول

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


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

    مايقلقني الآن هو :
    هل طريقة قراءة التاريخ من المستخدم تؤثر على صحة الحفظ في الجداول إذا كانت من النوع date
    مثلا قام بإدخالها : m/d/y Or d/m/y or y/d/m
    والقراءة تتم بفورم عادي Input text

    السؤال الثاني : أرغب تطبيق فكرة الأرشيف كما هي في مدونة وورد بريس تماما لكن بطريقة بسيطة في برمجتها !!
    لم أحاول كتابة ذلك لأني لا اعرف الفكرة الأساسية لعملها وكيف تتم الأرشفة بطريقة آلية .

    السؤال الثالث والأخير لليوم :
    أجد صعوبة في التعامل مع GET !!
    كل ماقمت به حتى الآن هو تطبيق لدروس : افعل كذا ويظهر كذا !
    هل من شرح مبسط وبنماذج مختلفة للتطبيق
    مافائدة علامة الاستفهام ؟ ومتى أضعها
    كود PHP:
    $_GET['name'
    هل يحتفظ name بالقيم السابقة له من صفحات آخرى أو غير ذلك
    أم بمجرد وضعه بهذه الصورة " وكأنه = صفر "
    نقطة عدم فهمي جزء منها بسبب أني تعلمت أنه لا يمكن استخدام أي متغير قبل تعريف نوعه وقيمته الافتراضية .

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

    هل لديك روابط " عربية أو إنجليزية" تطبق استخدامات هذه المصفوفة بشكل واضح
    (( التكرار مهم لتأكيد فهم وتثبيت المعلومة وهو يتطلب صبر فصبر جميل والله المستعان ))

    فائدة :
    1. array function : http://us2.php.net/array
    2. How do I create arrays in a HTML <form>?
    3. How do I get all the results from a select multiple HTML tag?


    قد اتأخر قليلا في الرد فاعذروني لم أرغب بتأخير الموضوع حتى لا اتراجع عنه :nice: .

    اسأل الله تعالى أن يعلمنا ماينفعنا وينفعنا بما علمنا ويزيدنا علما .





    __________________
    100 صقر !!
    يومياتي في تعلم php ..
    أرحب بالمبتدئين لنتعلم معا والمحترفين ليقدموا النصح والتوجيه .
    .
    .
    سبحان الله وبحمده عدد خلقه .. ورضا نفسه .. وزنة عرشه .. ومداد كلماته .


  2. #2
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,646


    أهلاً بك وبمشروعك الأول معنا في سوالف سوفت ..

    هل طريقة قراءة التاريخ من المستخدم تؤثر على صحة الحفظ في الجداول إذا كانت من النوع date
    مثلا قام بإدخالها : m/d/y Or d/m/y or y/d/m
    والقراءة تتم بفورم عادي Input text
    نعم ، طريقة الإدخال مهمة ..

    الطريقة الصحيحة والمعتمدة لحقل DATE هي yyyy-mm-dd ،، حاولي تغيير الترتيب وسيتم تخزين القيمة 0000-00-00 ..

    للحفاظ على النسق الصحيح ، يمكنك استخدام وسوم <select> بدلاً من <input> في النموذج ، أو تنفيذ جملة شرطية عند إرسال النموذج للتأكد من أن الصيغة المدخلة تطابق صيغة yyyy-mm-dd ، وكذلك يمكنك اعتماد الصيغة التي ترغبين بها ، مع التحقق منها بجملة شرطية ، ثم إعادة ترتيبها إلى yyyy-mm-dd ثم إدخالها إلى قاعدة البيانات ..

    رغم كل هذا ، فإني أفضّل استخدام Unix Timestamp لحفظ الوقت وقراءته ومعالجته ..

    السؤال الثاني : أرغب تطبيق فكرة الأرشيف كما هي في مدونة وورد بريس تماما لكن بطريقة بسيطة في برمجتها !!
    لم أحاول كتابة ذلك لأني لا اعرف الفكرة الأساسية لعملها وكيف تتم الأرشفة بطريقة آلية .
    ليس هناك شيء صعب في البرمجة ، عندما تصلين إلى تطبيق الفكرة سنكون معك بإذن الله تعالى .. لا أعرف ماهية الأرشفة في Wordpress ، لكن لا تقلقي ..

    أجد صعوبة في التعامل مع GET !!
    كل ماقمت به حتى الآن هو تطبيق لدروس : افعل كذا ويظهر كذا !
    هل من شرح مبسط وبنماذج مختلفة للتطبيق
    مافائدة علامة الاستفهام ؟ ومتى أضعها
    النماذج في HTML ترسل إلى صفحة السيرفر بطريقتين ، POST و GET ..

    نحدد طريقة الإرسال عن طريق الخاصية (attricute) المسماة " method " في الوسم form سواء بلغة html او xhtml ..

    كود PHP:
    <form method="xxx" action="yyy"
    حيث xxx هي طريقة الإرسال ، post أو get ، و yyy هي الصفحة التي سنرسل لها المعلومات ، ولتكن submit.php ..

    الآن داخل submit.php ، إذا كانت المتغيرات ( عناصر النموذج - أو الحقول - ) مرسلة بطريقة post ، نستطيع طباعة محتواها بواسطة مصفوفة _POST ، أما إن كانت مرسلة بطريقة get ، سنطبعها بمصفوفة _GET ..

    كود PHP:
    echo $_GET['xxx']
    echo 
    $_POST['xxx']; 
    حيث xxx هو اسم الحقل ، الذي قمنا بتعيينه في صفحة html للحقل المطلوب ، بواسطة الخاصة ( attribute ) المسماة " name " ..

    الآن ، لنأخذ مثالاً بسيطاً :

    صفحة النموذج ( form.html ) :
    كود PHP:
    <form method="post" action="submit.php">
    أدخل اسمك: <input name="username">
    <
    input type="submit" value=" أرسل ">
    </
    form
    ملف submit.php
    كود PHP:
    <?php
     
    echo $_POST['username'];
     
    ?>
    مع بساطة المثال ، إلا أنه يوضّح طريقة عمل النموذج ..

    الآن قومي بتغيير method إلى get ، أي استبدلي post بـ get ..

    ثم في submit.php استبدلي POST كذلك بـ GET ، ولاحظي أن النتيجة ستبقى ذاتها ..

    هناك عدة فروق بين POST و GET ، أهمها أن المعلومات المرسلة بواسطة GET تظهر في عنوان الصفحة بعد الإرسال ، مثلاً في مثالنا هنا سيظهر العنوان كالتالي:

    http://ww.example.com/submit.php?username=xxx

    حيث أن xxx هنا تمثّل الاسم الذي قمنا بإدخاله في حقل الاسم ..

    إذا كانت الطريقة POST ، لاحظي أن العنوان سيظهر كالتالي:
    http://www.example.com/submit.php

    المعلومات ستصل لكن دون أن تظهر في شريط العنوان ..

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

    مثلاً:
    http://www.example.com/submit.php?us...his_is_my_name

    ستشاهدين في الصفحة :
    this_is_my_name

    هذا يعني أن فائدة GET لا تقتصر على إرسال النماذج ، يمكننا مثلاً إنشاء ملف php واحد وتقسيمه إلى عدة وظائف ، كملفات تنصيب السكربتات .. تجدينها مقسمة إلى مراحل ، المرحلة الأولى step=1 بعد اسم الملف ..

    يعني:
    install.php?step=1
    install.php?step=2
    ... وهكذا ..

    وفي داخل ملف الـ PHP يمكن التمييز بين المراحل باستخدام جملة If أو Switch حسب الحاجة ..
    كود PHP:
    if ($_GET['step'] == 1) {
     

    هذه أمثلة سريعة وأتمنى أن تفهمي وظيفة هذه المصفوفات والبيانات الخارجية المرسلة في النماذج ..

    هل يحتفظ name بالقيم السابقة له من صفحات آخرى أو غير ذلك
    قيمة GET دائماً تقرأ فوراً من شريط العنوان ولا تحفظ نهائياً ، أي أن ما ترينه في شريط العنوان هو ما ستستخدميه في برنامجك عند التنفيذ ..

    تحدثت عن هاتين المصفوفتين قليلاً في دورتي TZPC سابقاً، لم أسهب في الحديث عنهما :
    [TZPC] الدرس الثامن: المتغيرات مسبقة التعريف Predefined والمتغيرات الخارجية Outside - TechZone Forums

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

    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    فكرة المشروع بسيطة لكنها قد تتطور مع الزمن لتصبح موقع مكياج مثلاً!

    عموماً .. لدي بعض الملاحظات :
    لديكِ خمسة جداول يمكن إختصارها إلى جدولين فقط ، الجدول الأول سيحتوي بالإضافة للحقول المكررة في الثلاثة جداول حقلين إضافيين :
    type مثلاً ويحتوي على قيمة رقمية من 1 - 3 وتكون عبارة عن رقم العنصر : حسناً لتعريف ماهية الأرقام 1 - 3 توجد طريقتين :
    1 - إنشاء جدول بإسم types مثلاً ويحتوي على عناصر العلبة ، يمكنك الان إضافة عدد لا نهائي من العناصر
    2 - تعريف ارقام العناصر أثناء استدعائها
    كود PHP:
    if ($type == 1) { echo 'قلم كحل'; }
    esleif $type == 2) { echo '...'; } 
    أما بالنسبة للحقل الثاني الذي سيتم إضافته هو حقل الـ time بصيغة unix يتم تحديثه عند كل تحديث

    هل يحتفظ name بالقيم السابقة له من صفحات آخرى أو غير ذلك
    لا ، فهو قيمة لحظية ، هذا النوع من البيانات يتم أخذه من الـ url الخاص بالصفحة مباشرة.

    بالتوفيق لك في هذا المشروع






  4. #4
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    168

    Smile



    أشرف اهلا بك

    * كنت مترددة باستخدام select لقراءة التاريخ لكن الآن لا مجال لتردد " حلوة الثقة بالنفس "

    * بالنسبة لنوع الحقل DATE أو Unix Timestamp
    الأول يحفظ التاريخ كما هو بصيغته yyyy-mm-dd
    أما الثاني فهو عدد صحيح يمثل عدد الثواني منذ " سنة 19ْْXX لا اتذكرها " وحتى ذلك التاريخ .
    وهي أقل حجم واسرع في التعامل .
    هل تفسيري لاختيارك صحيح ؟؟ وبالتأكيد سأقوم بتغيير النوع إلى Unix Timestamp

    بالنسبة للمصفوفتين GET POST
    فقد لخصت الفروق بينهما في أن Post أكثر أمان لكن ابطأ مقارنة بالثانية .
    فالأولى استخدمتها لتسجيل مستخدم جديد فقط .
    والثانية لمعالجة البيانات في الجداول الآخرى .
    وكل ذلك بحيث أن عنصر المصفوفة هو قيمة المتغير في النموذج
    لكن ماتفسير استخدامها هنا : "هذا جزء من كود تعدد الصفحة في هذا الموضوع "


    كود PHP:
    /* Setup vars for query. */
        
    $targetpage "filename.php";     //your file name  (the name of this file)
        
    $limit 2;                                 //how many items to show per page
        
    $page $_GET['page'];
        if(
    $page
            
    $start = ($page 1) * $limit

    dev11
    شكرا لك على اقتراحاتك سأجعلها كما تقول لكن بعد أن العب بها قليلا
    وجميل ماكتبت لكن أضيف " على النسخة المطورة "
    جدول ثالث : يحتوي التعليقات + تاريخها
    بحيث يمكن للمستخدم إضافة تعليق حول المنتجX من النوع" ماسكارا" مثلا
    لكن معالجة التعليقات تتم بطريقة مختلفة قليلا :
    إذا قام المستخدم "sahar" بإضافة تعليق ما . فإنه يستطيع استعراض كافة تعليقاته
    ثم يمكنه تحرير أو حذف هذا التعليق . وفي هذه الحالة يتم الاحتفاظ بالتعليق المحذوف أو القديم في جدول له id خاص به .
    سأسمي هذا الجدول edit
    ويحتوي الحقول التالية :
    id خاص له
    رقم المنتج من جدول المنتجات " يمكن أن يتكرر "
    تاريخ التعديل
    القيمة القديمة أو المحذوفة ." بينما القيم الجديدة يتم الاحتفاظ بها دوما في جدول المنتجات "

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


    كل ماسبق هو كلام نظري . لكن وبإذن الله تعالى لن اتأخر في وضع الصور .

    أشكركم جميعا .
    جزاكم الله خير الجزاء





    __________________
    100 صقر !!
    يومياتي في تعلم php ..
    أرحب بالمبتدئين لنتعلم معا والمحترفين ليقدموا النصح والتوجيه .
    .
    .
    سبحان الله وبحمده عدد خلقه .. ورضا نفسه .. وزنة عرشه .. ومداد كلماته .

  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    كود PHP:
    $page $_GET['page']; 
    عندما يتم طلب الصفحة index.php?page=1 فإن قيمة المتغير $page = 1 وهكذا ..

    تعجبني طريقة تفكيرك ، الى الامام ..






  6. #6
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,646


    * بالنسبة لنوع الحقل DATE أو Unix Timestamp
    الأول يحفظ التاريخ كما هو بصيغته yyyy-mm-dd
    أما الثاني فهو عدد صحيح يمثل عدد الثواني منذ " سنة 19ْْXX لا اتذكرها " وحتى ذلك التاريخ .
    وهي أقل حجم واسرع في التعامل .
    هل تفسيري لاختيارك صحيح ؟؟ وبالتأكيد سأقوم بتغيير النوع إلى Unix Timestamp
    التعامل مع Unix Timestamp بشكل عام أسهل وأبسط ، بغض النظر عن السرعة،

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

    يبدأ العد فيها منذ 1970

    بالنسبة للمصفوفتين GET POST
    فقد لخصت الفروق بينهما في أن Post أكثر أمان لكن ابطأ مقارنة بالثانية .
    فالأولى استخدمتها لتسجيل مستخدم جديد فقط .
    والثانية لمعالجة البيانات في الجداول الآخرى .
    وكل ذلك بحيث أن عنصر المصفوفة هو قيمة المتغير في النموذج
    إذا كانت البيانات المرسلة كبيرة أو نماذج فعلية لتعبئة معلومات ، أنا أفضّل أن تكون POST ..

    في حالة الطلبات الخفيفة مثل تحديد رقم الصفحة أو معلوامت بسيطة يمكن استخدام GET

    ملاحظة: GET تسمح بحروف أقصر من POST ..

    راجعي
    PHP GET
    PHP POST

    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  7. #7
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    168


    كود PHP:
    $page $_GET['page']; 
    عندما يتم طلب الصفحة index.php?page=1 فإن قيمة المتغير $page = 1 وهكذا ..

    تعجبني طريقة تفكيرك ، الى الامام ..
    نعم الآن فهمت
    عندما اكتب ndex.php?page=1 (( اقدر اقول إنها خطوة تعريف المتغير بهذا الاسم وهذه القيمة . بينما أنا أعلم أنني سأستخدمه كعنصر في مصفوفة get لتنقل البيانات من الصفحة X والتي حددتها قبل علامة الاستفهام لينتقل إلى صفحة جديدة هي الصفحة التي تحمل هذا العنوان X?page=1 ))

    والأمر الأخر : هو أنه يمكن إنشاء جمل شرطية أو تكرارية بمقارنة المتغير
    كود PHP:
    $page
    //  ولكن إذا أردت نقل البيانات عندها استخدمه كعنصر في المصفوفة
    $_GET[page]

    // ومهم أن اكتب اسم عنصر المصفوفة " النصي " بين علامتي  single qoutiation
    $_GET['page']; 
    استفدت كثير من ردك :nice:





    __________________
    100 صقر !!
    يومياتي في تعلم php ..
    أرحب بالمبتدئين لنتعلم معا والمحترفين ليقدموا النصح والتوجيه .
    .
    .
    سبحان الله وبحمده عدد خلقه .. ورضا نفسه .. وزنة عرشه .. ومداد كلماته .

  8. #8
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    168

    شرح للمصفوفة GET



    أولا::: التعريف :

    هي مصفوفة array عناصرها هي الأسماء والقيم names and values
    التي تمت قراءتها من النموذج form
    مما يعني أن الاسم لكل حقل هو ثابت مهما ادخلت بيانات وحدثت الصفحات
    والشرح بالصورة : بالمرفقات


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

    لكن ماتفسير استخدامها هنا : "هذا جزء من كود تعدد الصفحة في هذا الموضوع "

    كود PHP:
    /* Setup vars for query. */
        
    $targetpage "filename.php";     //your file name  (the name of this file)
        
    $limit 2;                                 

    //how many items to show per page
        
    $page $_GET['page'];
        if(
    $page
            
    $start = ($page 1) * $limit
    إجابتي لنفسي : هي أن GET مصفوفة بإمكاني إضافة عناصر جديدة لها .
    وهنا قمت بإضافة عنصر جديد يحدد رقم الصفحة . وممكن استفيد منه في تنفيذ
    فكرة تعدد الصفحات .

    ذلك ممتع حقا . اللهم لك الحمد

    ثانيا : طريقة إرسال البيانات

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

    ثالثا : حجمها محدود
    لاتسمح بإرسال أكثر من 100 عنصر .

    رابعا : متى تنتقل البيانات ؟؟

    عند الضغط على زر من النوع Submit
    فإنه يسمح للمصفوفة GET بمعالجة البيانات المدخلة عبر النموذج
    وفي هذه اللحظة يتم الانتقال من الصفحة الحالية إلى صفحة آخرى
    ويظهر من خلال شريط العنون : جميع المتغيرات اسمائها وقيمها .

    خامسا ::: متى استخدمها ومتى ابحث عن بديل لها ؟

    في حالة البيانات محدودة : لاتزيد عن 100
    وفي حالة عدم وجود خوف من ظهور البيانات عبر شريط العنوان

    سادسا ::: هل يمكن استخدام المصفوفتين GST & POST
    معا في صفحة واحدة ؟؟


    نعم يمكن ذلك وفي هذه الحالة نستخدم المصفوفة $_REQUEST
    التي تحتفظ ببيانات المصفوفتين السابقتين بالإضافة إلى مصفوفة $_COOKIE



    س : ماأهمية كتابة اسم
    < input type=submit name=submit1 value=ok>
    هل هناك استخدامات لذلك ؟؟





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

  9. #9
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    168


    الآن أستطيع البدء عمليا بالتنفيذ :


    أولا : إنشاء صفحة config.php الخاصة بمعلومات الاتصال بقاعدة البيانات
    ثانيا : إنشاء صفحة install.php لإنشاء الجداول
    ثالثا : إنشاء صفحة user.php لتسجيل عضوية مستخدم جديد في الموقع .





    __________________
    100 صقر !!
    يومياتي في تعلم php ..
    أرحب بالمبتدئين لنتعلم معا والمحترفين ليقدموا النصح والتوجيه .
    .
    .
    سبحان الله وبحمده عدد خلقه .. ورضا نفسه .. وزنة عرشه .. ومداد كلماته .

  10. #10
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    168

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



    صبر جميل والله المستعان :shy:

    قائمة من الأسئلة :

    س1 : انواع البيانات mysql هل منها نوع يماثل Boolean datatype
    وماالبديل ؟

    س2 : منطقيا : هل بالإمكان نقل مجموعة بيانات من أحد الجداول إلى جدول آخر ثم تحديثها في الجدول الأساسي بدون أن يتم التحديث في الآخر !!
    يعني حفظ نسخة من بعض البيانات بحيث ما تتأثر بالتحديثات في الجدول الأول .

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

    س4 : عندما يكون مفتاح الجدول تلقائي كيف يتم التعامل معه (( عند إدخال البيانات ))
    كنت قبل فترة أطبق أحد الدروس وكان يعطي هذا الحقل القيمة NULL :

    كود PHP:
    INSERT INTO admin(id,user,passVALUES(NULL,'$user','$pass'
    س5 : إذا كان مفتاح الجدول هو رقم تلقائي : فما هو أفضل نوع بيانات لهذا الحقل ؟
    استخدمت النوع int فهل هناك اقتراح افضل !

    فسحة

    س6 : عندما جربت إنشاء الجدول بلوحة التحكم ظهرت لي هذه الأوامر :
    كود PHP:
    $sql1="CREATE TABLE `user` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `name` VARCHAR( 20 ) NOT NULL ,
    `pass` VARCHAR( 10 ) NOT NULL ,
    `admin` VARCHAR( 10 ) NOT NULL ,
    `email` VARCHAR( 50 ) NOT NULL ,
    PRIMARY KEY ( `id` )
    ) CHARACTER SET = utf8 TYPE = MYISAM" 

    هل يفضل إضافة هذا السطر الأخير أم لا ؟؟ هل تنصحوني بإضافتها أم لا ؟

    س7 : ماهو الترميز المناسب للغة العربية ؟وهل يناسب كلا من الانترنت اكسبلورر6,7 والفايرفوكس

    س8 : ماهو الترميز المناسب للغة الإنجليزية ؟وهل يناسب كلا من الانترنت اكسبلورر6,7 والفايرفوكس

    س9 : ماهي النصائح للحصول على موقع يعرض بشكل جيد جدا في متصفحي الاكسبلورر + الفايرفوكس

    س10 : ماهي أنسب طريقة لترتيب الكود ؟

    س11 : قمت بإنشاء نموذج تسجيل مستخدم جديد وهو كالتالي " هل من ملاحظات عليه :

    كود PHP:
    <?
    include('config.php');
    echo
    '<form achtion=newuser?next=1 method=POST > 
        <tr>
                <td><br>اسم المستخدم :</td>
                <td><input type=text name=name size=30></td>
                </tr>
        <tr>
            <br>
            <td><br>كلمة السر :</td>
                <td><input type=password name=pass size=30></td>
                </tr>
        <tr><br>
            <td><br>إعادةالسر :</td>
                <td><input type=password name=pass2 size=30></td>
                </tr>
        <tr>
            <br>
            <td><br> الإيميل  : </td>
                <td><input type=text name=email size=30></td>
                </tr>
        <input type=submit value=تسجيل name=B1><input type=reset value=مسح name=submitnewuser>            
        </form>'
    ;
        
        
    if(
    $_GET['next']==1) {
                        
        if (empty(
    $_POST['name']) or empty($_POST['pass']) or empty($_POST['pass2']) or empty($_POST['email']))
                echo 
    'يُرجى تعبئة كافة الحقول  <a href=newuser.php> العودة  </a> ';

            elseif (
    $_POST['pass'] != $_POST['pass2'])
                echo 
    '<a href=newuser.php> العودة  </a> كلمتا المرور غير متطابقتان ';
            
            
    // is it true email        
            
    if($_POST['email']) {
                 
    $email trim$email ); 
                if(!empty(
    $email)){ 
                if(
    preg_match('/^[a-z0-9\\_\\.]+@[a-z0-9\\-]+\\.[a-z]+\\.?[a-z]{2,4}$/i'$email$match)) return strtolower($match[0]);
                else  return 
    false
                                    }
                else return 
    false;
            
                }
        else {
        
    // Is admin or not : it will be admin if he is a first user  .
        
    $check_admin "SELECT * FROM user";
        
    $query1 mysql_query($check_admin);
        
    $num mysql_num_rows($query1);
        if (!
    $num)
            
    $admin=true;  // this user : is admin
            
    else
            
    $admin=false//    this user : not admin

        // insert data to user table    
        
    $name $_POST['name'];
        
    $pass md5($_POST['pass']);
        
    $email=$_POST['email'];
        
    $reg "INSERT INTO admin(name,pass,email,admin) VALUES('$name','$pass','$email',,'$admin')";
        
                        }
        }
    ?>


    يقال :
    إذا قصرت يدك عن المكافأة فليطل لسانك بالشكر

    فشكرا لكم . وجزاكم الله خيرا .






    __________________
    100 صقر !!
    يومياتي في تعلم php ..
    أرحب بالمبتدئين لنتعلم معا والمحترفين ليقدموا النصح والتوجيه .
    .
    .
    سبحان الله وبحمده عدد خلقه .. ورضا نفسه .. وزنة عرشه .. ومداد كلماته .

  11. #11
    عضو نشيط
    تاريخ التسجيل
    Dec 2004
    المشاركات
    220


    س1 : انواع البيانات mysql هل منها نوع يماثل Boolean datatype
    وماالبديل ؟
    يمكنك وضعه tinyint و وضع قيمة 0 و 1 كقيمة لهذا الحقل


    س2 : منطقيا : هل بالإمكان نقل مجموعة بيانات من أحد الجداول إلى جدول آخر ثم تحديثها في الجدول الأساسي بدون أن يتم التحديث في الآخر !!
    يعني حفظ نسخة من بعض البيانات بحيث ما تتأثر بالتحديثات في الجدول الأول .
    ما هو الغرض من نقل البيانات من جدول الى آخر ؟

    في قواعد بيانات MS SQL SERVER و Oracle
    يمكن لشخص العودة عن عملية التحديث و يطلع على هذه العملية ب Rollback
    و يمكن لشخص العودة عن عملية التحديث او الحذف التي تمت على قاعدة البيانات
    في حال لم يتم تاكيدها او عدم اكتمال العملية Transaction

    يمكن ان نساعدك لو وضحتي غرضك من نقل البيانات الى جدول اخر اثناء عملية التحديث


    س3 : في إنشاء الجداول : إذا كان الحقل من نوع نصي فهو يشترط تحديد طول الحقل فماهو الطول المناسب لحقلي اسم المستخدم وكلمة المرور والمستخدمة كثيرا .
    اسم المستخدم مناسب ان يكون 30 حرف على الاقل ، انا استخدم في برمجتي 50

    اما عن كلمة المرور فلانك سوف تخزنينها مشفرة فاقل شئ تحطيه هو 32 حرف
    انا اضعها 50 كذلك لانني استخدم تشفيرات اضافية غير معرفة لضمان عدم فك كلمة المرور.


    س4 : عندما يكون مفتاح الجدول تلقائي كيف يتم التعامل معه (( عند إدخال البيانات ))
    كنت قبل فترة أطبق أحد الدروس وكان يعطي هذا الحقل القيمة NULL :
    يمكنك وضع NULL و قاعدة البيانات تلقائيا سوف تزيد العداد او يمكنك عدم ادراجه في
    جملة الاضافةاي عدم وضع الحقل في جملة الطلب.


    س5 : إذا كان مفتاح الجدول هو رقم تلقائي : فما هو أفضل نوع بيانات لهذا الحقل ؟
    استخدمت النوع int فهل هناك اقتراح افضل !
    تضعينه int و الطول 10 و تحددين من ضمن الخيارات unsigned هذا يعني تحديد ان هذا
    الحقل سوف يحتوي على ارقام موجبة فقط و بذلك تحصلين على عدد اكبر من الارقام.

    فسحة


    : ماهو الترميز المناسب للغة العربية ؟وهل يناسب كلا من الانترنت اكسبلورر6,7 والفايرفوكس

    س8 : ماهو الترميز المناسب للغة الإنجليزية ؟وهل يناسب كلا من الانترنت اكسبلورر6,7 والفايرفوكس
    استخدمي تشفير UTF-8 و العرض على المتصفحات تحددينه في وسوم meta
    تحددي char-set:utf-8
    و سوف تعرض بشكل ممتاز على جميع المتصفحات .
    و utf-8 تسمح لك باستخدام AJAX

    س9 : ماهي النصائح للحصول على موقع يعرض بشكل جيد جدا في متصفحي الاكسبلورر + الفايرفوكس
    هذا له علاقة بالتصميم اكثر من له علاقة بالبرمجة.
    في البرمجة يجب ان تراعي ان الجافا سكريبت يحتاج مراعاة في الكتابة ليدعم هذه المتصفحات
    مثلا document.forms(0).name.value
    هذه الجملة لن تعمل على الفاير فوكس لكنها سوف تعمل بشكل ممتاز على الاكسبلورر
    جملة
    document.formname.name.value
    سوف تعمل بنجاح على كلا المتصفحين
    يمكن استخدام كتاب للجافا سكريبت يفيدك في هذا الايطار


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

    س11 : قمت بإنشاء نموذج تسجيل مستخدم جديد وهو كالتالي " هل من ملاحظات عليه :

    نعم لدي ملحوظة انه بامكانك عدم وضع كود html الصفحة في echo
    يمكنك اقفال وسم php و وضع كود html ثم فتح كود php من جديد

    مثال
    كود PHP:
    <?php
        $x
    date("j/n/Y");
    ?>

    <html>
    <head>
    <body>
        <h3>Hello , you are welcome in my page</h3>
        today is <?php echo $x;?>
    </body>
    </hedd>
    </html>
    <?php

    // write code here 
    ?>






    __________________
    المروه.نت تقديم خدمات تقنية المعلومات و التجارة الالكترونية
    www.almarwa.net.sa

  12. #12
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,646


    al-marwa بوركت يداك ما قصرت في الإجاية ..

    س6 : عندما جربت إنشاء الجدول بلوحة التحكم ظهرت لي هذه الأوامر :
    هل يفضل إضافة هذا السطر الأخير أم لا ؟؟ هل تنصحوني بإضافتها أم لا ؟
    إذا كنت ستحددين ترميزاً خاصاً غير الافتراضي لجداولك ، يفضّل أن تستخدميه ، المحرك الافتراضي هو MyISAM لذلك لا ضرورة للعبارة .. لكن الاحتياط ضروري أحياناً .. أنا لا أستخدمها في برمجتي ..

    - ملاحظاتي:
    1. هناك خطأ مطبعي في :
    كود PHP:
    <form achtion=newuser?next=1 method=POST 
    achtion ، والصحيح: action ..

    2. حاولي أن تستخدمي علامات التنصيص المزدوجة Double Quotations في قيم خصائص وسوم الـ HTML ..

    يعني مثلاً:
    كود PHP:
    <form achtion=newuser?next=1 method=POST 
    اجعليه:
    كود PHP:
    <form action="newuser?next=1" method="POST"
    هذا سيفيدك في سهولة الانتقال إلى XHTML لاحقاً إن شاء الله تعالى ..

    3. اهتمي بحماية أكوادك ، في الإدخال إلى قاعدة البيانات مثلاً ، يمكنك الاستعانة بدالة addslashes أو mysql_escape_string أو mysql_real_escape_string ، وأنا أفضّل الأخيرة ..

    كود PHP:
        $name $_POST['name']; 
        
    $pass md5($_POST['pass']); 
        
    $email=$_POST['email']; 
    ستصبح هذه السطور:
    كود PHP:
        $name mysql_real_escape_string(trim($_POST['name']));
        
    $pass md5(trim($_POST['pass']));
        
    $email mysql_real_escape_string(trim($_POST['email'])); 
    هذا يساعد في منع حقن الإستعلام بأوامر خارجية SQL Injection ..

    4. التركيز أثناء كتابة الكود يوفّر جزءاً كبيراً من الوقت في حل المشاكل لاحقاً:
    كود PHP:
    $reg "INSERT INTO admin(name,pass,email,admin) VALUES('$name','$pass','$email',,'$admin')"
    هناك فاصلة أتت عن طريق الخطأ :# .. ستصبح:
    كود PHP:
    $reg "INSERT INTO admin(name,pass,email,admin) VALUES('$name','$pass','$email','$admin')"
    5. عند إرسال نموذج بطريقة POST استخدمي العنصر REQUEST_METHOD من دالة SERVER المعرفة مسبقاً .

    فبدلاً من إرسال الصفحة إلى next=1 ، سنرسلها إلى اسم الملف فقط ، حيث أنه لا توجد سوى هذه العملية هنا ، فلا داعي للتفرع بواسطة GET ..

    السطر التالي:
    كود PHP:
    if($_GET['next']==1) { 
    سيصبح:
    كود PHP:
    if ($_SERVER['REQUEST_METHOD'] == 'POST')  { 
    العنصر REQUEST_METHOD من هذه المصفوفة يحمل دائماً طريقة الوصول للصفحة ، في العادة يكون إما POST أو GET ، عند دخول الصفحة بشكل طبيعي ستكون GET ، أما إن حملت الصفحة بيانات مرسلة بطريقة POST ، فستكون القيمة POST وسيتم تنفيذ جملة الشرط ..

    6. هذا الجزء يبدو لي غريباً:
    كود PHP:
               $email trim$email );  
                if(!empty(
    $email)){  
                if(
    preg_match('/^[a-z0-9\\_\\.]+@[a-z0-9\\-]+\\.[a-z]+\\.?[a-z]{2,4}$/i'$email$match)) return strtolower($match[0]); 
                else  return 
    false;  
                                    } 
                else return 
    false
             
                } 
    فهذا السطر :
    كود PHP:
              $email trim$email ); 
    لم يسبقه تعريف لـ email$ ، فما هو email$ .. ؟! أعتقد أنه عليك استبدالها بـ :
    كود PHP:
    $email trim($_POST['email']); 
    هذا ما لدي حالياً بعد نظرتي السريعة للردود والكود وكل ما سبق ..

    المعذرة على التقصير ..

    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  13. #13
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    168


    صباحكم أجمل من ردودكم الجميلة
    ربنا يبارك لنا ولكم في أوقاتنا .

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

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

    وبعد فترة من الزمن : أصبحت لي وجهة نظر مختلفة في نفس المنتج
    أريد الاحتفاظ بالتعليق القديم ومايتعلق به : من تاريخ إضافة وغيرها من بيانات في جدول آخر

    وبذلك يظهر لزائر الموقع : التعليقات الحديثة
    بينما تتاح لعضو الموقع متابعة "التعليقات المتعددة له أو لغيره والخاصة بمنتج محدد"

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

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

    تكرار الكتابة سيجعلك سريع في الكتابة . "قارن كتابة طالب في أولى ابتدائي بطالب في مرحلة أعلى"

    أعلن بأني لن انسخ كودا بعد هذه اللحظة . :shy:

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    شكر لك أشرف على المتابعة .

    هذا ماقمت به حتى الآن
    :
    عدلت حجم حقلي المستخدم وكلمة السر إلى 50
    تأجيل الاهتمام بالمظهر إلى مرحلة التصميم
    تعديل طريقة كتابة html ضمن صفحات php

    تعديل الأخطاء :
    • <form action="newuser?next=" method="POST">
    • صححت المتغير $email
    • حذفت الفاصلة المتكررة

    استخدمت العنصر request_method
    استخدمت الدالة mysql_real_escape_string

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    والآن : ابحثحول sequest_method
    mysql_real_escape_string

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

    هل من نصائح آخرى؟

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::





    __________________
    100 صقر !!
    يومياتي في تعلم php ..
    أرحب بالمبتدئين لنتعلم معا والمحترفين ليقدموا النصح والتوجيه .
    .
    .
    سبحان الله وبحمده عدد خلقه .. ورضا نفسه .. وزنة عرشه .. ومداد كلماته .

  14. #14
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,646


    ممتاز سيرك في المشروع .. إلى الأمام ..

    من جهتي ليس هناك نصائح ، فقط يمكنك الآن الاستغناء عن next بشكل كامل ، حيث :
    كود PHP:
    <form action="newuser?next=" method="POST"
    يصبح:
    كود PHP:
    <form action="newuser.php" method="POST"
    أووه يبدو أنك نسيتي امتداد ملف newuser.php كذلك .. التعديل في الأعلى هو المطلوب إن شاء الله ..

    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  15. #15
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    168


    لازالت هناك مشكلة !!
    لا يتم حفظ البيانات


    كود PHP:
    <?
    session_start
    ();    
    if(
    $_GET['next']){
        
    //is it empty            
        
    if (empty($_POST['name']) or empty($_POST['pass']) or empty($_POST['pass2']) or empty($_POST['email']))
                echo 
    'يُرجى تعبئة كافة الحقول  <a href=newuser.php> العودة  </a> ';
        
    //check password
            
    if ($_POST['pass'] != $_POST['pass2'])
                echo 
    '<a href=newuser.php> العودة  </a> كلمتا المرور غير متطابقتان ';
            
        
    // is it true email        
        
    if($_POST['email']) {
            
    $email =trim($_POST['email'] ); 
            if(!empty(
    $_POST['email'])){ 
                if(
    preg_match('/^[a-z0-9\\_\\.]+@[a-z0-9\\-]+\\.[a-z]+\\.?[a-z]{2,4}$/i'$email$match)) return strtolower($match[0]);
                    else  return 
    false
                                    }
    //near if
                
    else return false;
                            }
    //main if
        
    else {
        
    // Is admin or not : it will be admin if he is a first user  .
        
    $check_admin "SELECT * FROM user";
        
    $query1 mysql_query($check_admin);
        
    $num mysql_num_rows($query1);
        if (!
    $num)
            
    $admin=1;  // this user : is admin
            
    else
            
    $admin=0//    this user : not admin
        
        // name must be uniqe
        
    if(!admin){
                
    // if found : return to newuser.php   else insert data
                    
    $sql2="SELECT name FROM user";
                    
    $row=mysql_fetch_array($sql2);
                    while(
    $row){if($row==$name$_GET['next']=2;
                                    else 
    $_GET['next==1'];
                                }
                    }
            if(
    $_GET['next']==2)
                {echo
    '<a href=newuser2.php>اسم المستخدم موجود مسبقا . قم بالعودة لاختيار اسم آخر</a>';}
        
        
    // insert data to user table
        
        
    $name mysql_real_escape_string(trim($_POST['name']));
        
    $pass mysql_real_escape_string(md5($_POST['pass']));
        
    $email=mysql_real_escape_string($_POST['email']);
        
    $insert "INSERT INTO user(name,pass,email,admin) VALUES('$name','$pass','$email',,'$admin')";
        
    $insert_query=mysql_query($insert);
        if(
    $insert_query)        
                
    $_GET['next']=3;
                
        if(
    $_GET['next']=3);{// going to  userarea.php 
                            
    echo'<a href=newuser2.php>انتقل لمنطقة الأعضاء</a>';}
        
        }
    }    
    ?>
    لي عودة أخلص فيها بإذن الله :
    مافهمت حوال مصفوفة SERVER
    ودوال trim ,preg_match,mysql_real_escape_string





    التعديل الأخير تم بواسطة SaharRose ; 27-05-2008 الساعة 05:59 PM سبب آخر: تحديث الكود
    __________________
    100 صقر !!
    يومياتي في تعلم php ..
    أرحب بالمبتدئين لنتعلم معا والمحترفين ليقدموا النصح والتوجيه .
    .
    .
    سبحان الله وبحمده عدد خلقه .. ورضا نفسه .. وزنة عرشه .. ومداد كلماته .

صفحة 1 من 4 1234 الأخيرةالأخيرة




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

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