اذهب إلى المحتوى

محمد المري2

الأعضاء
  • المساهمات

    68
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    6

أجوبة بواسطة محمد المري2

  1. بتاريخ On 5/23/2018 at 21:09 قال khaled93:

    السلام عليكم

    كل عام وانتم بخير

    كيف اعمل ساعة بلغة سي شارب تعتمد على توقيت MS sql server

    مع العلم ان البرنامج على 4 اجهزة

    السؤال غير واضح ,

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

    أو انك تقصد بأنك تريد عرض الساعة حسب الوقت الذي يقوم باحتسابه الـ SQL Server ? 

    اذا كان حسب الوقت الذي يقوم بإحتسابه الـ SQL Server فهو يعتمد على توقيت النظام نفسه, كما هو الحال مع الـ C#

    فلو اخذنا على سبيل المثال في الـ C# : 

    DateTime time = DateTime.Now;
    

    وفي الـ SQL Server : 

    SELECT GETDATE() 
    

    جميعها ستكون متساوية بالتواقيت. 

    لمعرفة ذلك يمكنك عمل تجربة صغيرة بداخل برنامج الـ C# : 

    string sql;
    string cSharpTime = DateTime.Now.ToString();
    using (SqlConnection connection = new SqlConnection(db))
    {
      using (SqlCommand cmd = new SqlCommand("SELECT GETDATE()", connection))
      {
        connection.Open();
        sql = cmd.ExecuteScalar().ToString();
      }
    }
    
    Console.WriteLine("C# : " + cSharpTime);
    Console.WriteLine("SQL : " + sql);
  2. اتقان لغة الجافا لوحدها كافيه بأن تمكنك من إنشاء تطبيقات بالاندرويد واي برامج او تطبيقات اخرى يمكن عملها بالجافا (مثلاً برامج لانظمة اخرى). 

    ولكن في الاندرويد , قد تحتاج الى معرفة الـ XML وبعض اللغات الاخرى (مثل JavaScript و HTML و CSS) التي ستمكنك من وضع لمسات اضافية خاصة لكل تطبيق. 

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

     

    اما عن تعلمها, 

    فالجواب عليه يعتمد على سرعة الإستيعاب والفهم . 

    فحتى لو خصصت نصف يوم بشكل يومي , لايهم, المهم مقدار المعرفة واالمهارات التي اكتستبها خلال فترة تعلمك .. 

    فمن الممكن ان تتعلم وتقن مهارات بالجافا خلال شهر , بينما اخرين قد يتقنونها باكثر من ثلاثة اشهر ! 

     

    • أعجبني 2
  3. بتاريخ 10 ساعات قال سارة محمد2:

    السلام عليكم

    أريد برمجة نظام ERP لإدارة شركة باستخدام laravel هل أستطيع بيعه لأكثر من شركة؟ وكيف أستطيع توفيره لشركة معينة بدون أن أسلمها  الsource code

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

    من اشهر تلك البرامج : 

     

    • أعجبني 1
  4. بتاريخ منذ ساعة مضت قال Waseem Al Soufi:

    ماذا عن قاعدة المعطيات كيف سوف تعمل على جهاز المستخدم إن لم يكن هناك اي برنامج لتشغيلها وهل يجب ان أغير اي شيء في تعليمة الاتصال ؟

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

    لذلك مايتوجب عليك عمله هو اولاً ضبط طريقة الاتصال بالـ SQL Server وذلك عن طريق التعديل على ConnectionString للإتصال وجعله يعتمد على حساب المستخدم المسجل بالنظام Windows Account Login .. 

    والـ ConnectionString سيكون شبيه بالتالي : 

    connectionString="Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=True"

    فقط تقوم بتغيير الـ ServerName و DatabaseName .. وسيكون الاتصال بقواعد البيانات مبني على تصاريح حساب المستخدم الذي يستخدمه على النظام نفسه Windows .. 

    ومن الممكن ان يتم عمل متغيرات لها حتى يتمكن المستخدم من تغيير اسم ServerName و DatabaseName اذا كان سير عمل البرنامج يسمح بذلك. 

    اما عن معلومات تسجيل الدخول الاخرى او اي معلومات قد تكون حساسة , يجب عليك تشفيرها وعدم حفظها بدون تشفير, وجعل البرنامج يقرأها بالتشفير. 

    واذا كنت لاتعرف كيف ذلك, انصحك بالبحث والقراءة ثم تطبيقها على مشروع جديد (تجريبي) وعندما تكون جاهزة , يمكن تطبيقها على البرنامج وعمل التغييرات اللازمة لها. 

    يمكن ايضاً حفظها بملف اعدادات البرنامج Settings وذلك عن طريق الضغط على اسم المشروع الزر الايمن ثم اختيار Properties ثم الذهاب الى Settings .. 

    اذا لم يكن هنالك ملف اعدادات قم بإنشاءه (في Visual Studio سيكون هنالك رسالة لذلك عند فتح نافذة Settings فقط اضغط عليها وسيتم انشائها تلقائياً). 

    فائدة ملف الاعدادات هذا هو حفظ اي بيانات تمكن البرنامج من قرائتها باستمرار بما فيها معلومات الـ ConnectionString مثل DatabaseName و ServerName .. 

    ويمكن ايضاً حفظ معلومات الدخول فيها ولكن كما ذكرت ليست الحل الامثل لها ولكنها ستعمل خارج نطاق البرنامج. 

    ويمكن ايضاً وضع متغيرات بداخلها يقوم البرنامج بقرائتها او الحفظ فوقها في كل مره يعمل (مثل عدد مرات تشغيل البرنامج) ..

    اما بداخل البرنامج فيتم استدعائها عن طريق : 

    String someString = Properties.Settings.Default.MySavedSettingString;

    اما اذا كنت قد استخدمت خصائص DataSet و Data Models وقمت بإستيراد schema من الـ VisualStudio فالـ ConnectionString سيكون استدعائه مشابه للمثال الآتي : 

    String db = ConfigurationManager.ConnectionStrings["ProjectName.Properties.Settings.db"].ConnectionString;

     

    اتمنى ان تكون الامور اوضح الآن

    • أعجبني 2
  5. بتاريخ 42 دقائق مضت قال Waseem Al Soufi:

    السلام عليكم ...

     

    لقد قمت بتصميم وتطوير برنامج باستخدام لغة c#  windows form app البرنامج يحوي على قاعدة بيانات SQL البرنامج يعمل بشكل جيّد و ممتاز على الجهاز الخاص بي اريد الان بيع ونشر البرنامج الخاص بي على اجهزة الزبائن ماهي الخطوات ؟

    فقط قم بالذهاب الى قائمة Build ثم اختار  Publish 

    وحدد مكان حفظ البرنامج .. واستخدم هذه النسخة مع الزبائن .. 

    مايقوم به الـ Publish هو عمل نسخة Complied للبرنامج ويقوم بحفظ حزمة الملفات داخل ملف exe حتى يمكن للشخص تنصيب البرنامج على جهازه.

     

    • أعجبني 1
  6. بتاريخ 18 ساعات قال Fatma Abdeldaem:

    بداية أشكرك أستاذ محمد على الرد، وعندي استفسار.
    هل الوسم هو "<HTML> " ككل أم فقط "<>" ؟

    الوسم هو <HTML> ككل. 

    حتى تتضح الصورة بشكل افضل. 

    الوسم يكون بهذه الطريقة : <التعريف>

    كل وسم يجب أن يحمل تعريف, والتعريف هو عبارة عن عنوان يقوم بتعريف الكائنات الموجودة داخل الوسم. 

    مثال بسيط : 

    <Person>
        <Name>Mohammed</Name>
    </Person>

    في المثال السابق, قمنا بتعريف Person (شخص) وإعطائه إسم محمد.

    لو لاحظنا, الوسم <Person> هو الوسم الرئيسي الذي يحمل وسم <Name>

    أي ان وسم <Name> عباره عن جزء من <Person> وبهذا نعرف أن الشخص هذا اسمه محمد.

    لكن لو قمنا بعمل الآتي : 

    <Person>
        <>Mohammed</>
    </Person>

    الوسم <Person> سيحمل وسم "مجهول" بداخله لأنه لم يتم إعطائه تعريف. لاننا سنعرف ان هذا هو شخص, ويملك محمد. ولكن مانوع محمد الذي يملكه ؟ هل يقصد اسمه ؟ اما مكان؟ ام هواية ؟ ام ماذا ؟

    ولذلك ستكون كتابته خاطئه لان قواعد اللغة البرمجية لاتسمح بإعطاء تعريف مجهول لأي وسم سواء كان في HTML او XML او حتى بعض اللغات الأخرى التي تستخدم الوسوم في منظومتها. 

     

    (مثال على لغات اخرى) في الجافا و C# 

    ArrayList<int> numberList = new ArrayList<int>();

    في المثال اعلاه قمنا بتعريف مصفوفة جديدة من نوع int (اعداد صحيحة) وذلك بإستخدام وسم <int> .. 

    لو قمنا بعمل الآتي : 

    ArrayList<> numberList = new ArrayList<>();

    لن ينجح البرنامج من ترجمة نوع المصفوفة Compile , والسبب ان المترجم لن يستطيع تحديد نوع المصفوفة لأننا لم نقم بإعطائها تعريف فأصبحت مجهولة الهوية!

    فلذلك عند استخدام الوسوم في لغات البرمجة, لابد دائماً اضافة التعريف للوسم. 

     

    اما في حالة استخدام اشارة الوسم كمعامل رياضي (مثل معاملات المقارنة المذكورة سابقاً) فهذا الامر لاينطبق عليها. 

     

  7. بتاريخ 52 دقائق مضت قال Fatma Abdeldaem:

    دائما ما تبدأ الكود بهذه الأقواس <> وتنتهي هكذا </> فهل لهم اسم معين؟
    وهل يختلف الاسم من لغة لأخرى؟

    اذا كنتِ تقصدين HTML فهي تسمى وسوم او وسم - Tags أو Elements (عنصر)

    مثلاً

    <HTML> 
    
    </HTML>

    بداية الوسم يكون <HTML> ونهايته يكون <HTML/> .كذلك هو الحال تماماً مع XML .. 

    ايضاً في HTML يستخدم لإضافة تعليقات مثال : 

    <!-- Comment -->

     

    اما بقية لغات البرمجة فلا تستخدم هذه الطريقة بالوسم. 

    بل تستخدمها في عدة مواضع بطرق مختلفه. 

    مثلاً C# لو أخذنا List .. للتعريف عن نوعها يتوجب علينا استخدام الوسم واضافة نوعها داخل الوسم مثل هذه الطريقة

    List<String>

    فهنا قمنا بتعريف القائمة على انها قائمة نصية 

    ايضاً تستخدم في بعض العمليات الحسابية والمقارنة مثل اكبر من, اكبر من أو يساوي , اصغر من , اصغر من أو يساوي 

    a < b 	// a is smaller than b
    a > b 	// a is grater than b 
    a <= b 	// a is smaller than or equal to b
    a >= b 	// a is grater than or equal to b

    وهذه مشتركة في غالبية اللغات .. 

    ايضاً في الـ SQL وبعض اللغات الاخرى .. تستخدم <> للمقارنة وتعني (لاتساوي).

    a <> b // a is not equal to b

     

    • أعجبني 1
  8. بتاريخ منذ ساعة مضت قال مرام احمد:

    لكن البرزنتيشن كان عن وحده من لغات البرمجه وانا اخترت SQL

    و هذي النقاط المطلوبه : ياليت تفيدني فيها

    1 مين مصمم اللغه ( الشخص والجهه )

    2 متى (التاريخ )

    3 رابط اللغه على الانترنت

    4 برنامج يطبع aslamu alikum

    5 program domain (Scientific applications . business applications . artificial intelligence   . System programming . web software )

    6 هل هي مفتوحة المصدر ؟ (open source)

    7 هل تدعم opp مع التوضيح

    8 هل تدعم ال concurrency

    9 language Categries (markup / programing hybrid , logic , functional , imperative ) 

    10 implementation methods (hybrid , interpreter , compiler)

    تم تصميم الـ SQL من قبل Donald D. Chamberlin و  Raymond F. Boyce داخل شركة IBM سنة 1970. 

    3. لا اذكر ان لها موقع رسمي. لأنها متبناه من قبل شركات مختلفه وكل شركة لها موقعها (فقط ابحثي بإسم المحرك - رقم 6-). 

    4. سبق واجبتك على هذا السؤال. 

    5. Database 

    6. يعتمد على المحرك ( MySQL, PostgreSQL مفتوحة المصدر اما SQL Server و Oracle فمغلقة المصدر ).

    7. اجبت على هذا السؤال سابقاً.

    8. يعتمد على نظام المحرك هو من يتحكم بهذا الامر.

    9.  سبق وذكرت انها declarative language

    10. interpreter

     

     

     

  9. بتاريخ On 2/28/2018 at 20:47 قال بالعلم نرتقى:

    طلباً وليس امراً اخوتي اريد منهج متكامل للبرمجة بلغة ( الجافا - السي c - الماتلاب - الفيحول بيسك ) 

    جزاكم الله خير وفتح عليكم .

    اعتقد ان هذا الموقع ستجد فيه ماتحتاجه: 

    https://www.kutub.info/library/category/1

    • أعجبني 1
  10. بتاريخ 3 ساعات قال مرام احمد:

    وعليكم السلام اخي محمد 

    شكرا جزيلا افدتني بالمعلومات 

    لكن ليش لازم اختار MYSQL ? هل SQL ماتعتبر لغة ؟ 

    و ياليت تعطيني ايميلك بما ام عندك علم واسع باللغات عشان تساعدني )'

    ضروري مره لازم التسليم يوم الاحد

    الـ SQL هي لغة البرمجة اما الـ MySQL و SQL Server و Oracle وغيرها .. هذي تسمى نظام إدارة قواعد البيانات Database Management System ويختصرونها بكلمة DBMS .. 

    فنظام إدارة قواعد البيانات مبني على SQL واللي من خلاله راح يسهل علينا التعامل مع البيانات بشكل مرئي واسرع. 

    هذا هو الفرق بينها.

     

  11. بتاريخ On 2/28/2018 at 16:47 قال مرام احمد:

    السلام عليكم

    عندي برزنتيشن عن لغة SQL

    احتاج رابط شامل معلومات عنها

    احتاج برنامج يطبع لي كلمة "aslam alikom " بنفس اللغه

    احتاج program domin 

    وهل هي مفتوحة المصدر

    و هل تدعم الـ او او بي مع التوضيح

    لم تقم بتحديد نوع المحرك المطلوب للـ SQL .. 

    مثل SQL Server, Oracle, MySQL, ...etc .. 

    لذلك يمكنك زيارة هذه الصفحة والإستفادة من الكتب الموجودة : 

    https://www.kutub.info/library/category/15

     

    بالنسبة لأمر طباعة كلمة  "aslam alikom "

    SELECT 'aslam alikom'

    اما بالنسبة للـ program domain لم افهم ماذا تقصد بها ؟

    اما دعم الـ OOP (اعتقد انك تقصد Object Oriented Programming) 

    بالنسبة للـ Oracle PL/SQL نعم يدعمها, وتسمى Object Types .. اما بقية المحركات الأخرى (مثل SQL Server) فلا تدعمها بشكل مباشر, وانما تحتاج الى لغات اخرى تدعمها (مثل C#) وتقوم بإستخدام OOP من خلالها ..  لان محركات الـ SQL الاخرى لاتتعامل مع البيانات كـ Objects وانما تتعامل معها كجداول بيانات بعلاقات Relational Database. 

    لان الـ SQL لغة تصريحية declarative language بينما الـ OOP لغة حتمية imperative language .

     

    في الـ SQL انت فقط تقوم بتحديد نوع المخرجات ومحرك الـ SQL يقوم بالعمليات الاخرى لجلبها لك. بينما في الـ OOP انت تقوم بصياغة الخطوات الكاملة للمخرجات. 

    وهذا هو الفرق بينها. 

  12. بتاريخ 13 ساعات قال مهندسة متجددة:

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

    خطوات عملي للتقرير:

       الدخول لسيكيورد بورتال واخراج الداتا لمدة اسبوع على هيئة اكسيل شييت

    ثم اخزنها في باث معين ثم ابعثها بالايميل

    انا قرات عن الموضوع بس لسا مشتتة بحكم اني مو مبرمجة ولا ديفيلوبر. 

      كيف ممكن تقرير الداتا الاسبوعية يكون جاهز كل يوم وينبعث بالايميل اوتوماتيكي شاركوني اراءكم/البرامج اللي لازم تكون عندي عشان استفيد واطبق

     

    هنالك عدة طرق لأتمتة العمل.

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

    اما بالنسبة لمابعد تحميل الملف, 

    فمثلاً من الممكن تحميله وحفظه باسم معين في مكان معين. والاسم والمكان ثابتين. 

    ثم نقوم بعمل سكربت ليقوم بإرسال الرسالة متضمناً معها الملف, البريد المرسل إليه مع العنوان والرسالة. 

    هنالك عدة طرق لعمل سكربت اما عن طريق ملف Batch او Powershell  او حتى VB. كلها واردة. 

    بالنسبة للـ Batch هنالك مكتبات جاهزة لها من اشهرها Blat و SendEmail مكتبة أوامر ارسال الرسائل الإلكترونية عن طريق شاشة الاوامر للويندوز Windows Command Prompt والتي ايضاً يمكن ان نستعين بها لإستخدام اوامرها بشكل تلقائي من خلال ملف Batch. 

    يمكن ايضاً استخدام أوامر الـ Powershell وهو بديل للـ Batch ويعطي نفس النتائج. 

    مثال بسيط : 

    Function Send-EMail {
        Param (
            [Parameter(`
                Mandatory=$true)]
            [String]$EmailTo,
            [Parameter(`
                Mandatory=$true)]
            [String]$Subject,
            [Parameter(`
                Mandatory=$true)]
            [String]$Body,
            [Parameter(`
                Mandatory=$true)]
            
            [String]$Password
        )
    
          $EmailFrom = "user@domain"
            $SMTPServer = "HMAIL IP" 
            $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
            $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) 
            $SMTPClient.EnableSsl = $true
            $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($EmailFrom, $Password); 
            $SMTPClient.Send($SMTPMessage)
            Remove-Variable -Name SMTPClient
            Remove-Variable -Name Password

     

    وهذه طريقتين شائعة. 

     

    بعد عمل السكربت, يمكنك إضافته الى جدولة المهام في الويندوز Task scheduler وتحديد الوقت الذي سيقوم الويندوز بتشغيل السكربت فيه في كل مره. وحفظ المهمة وسيقوم الويندوز تلقائياً بتشغيل السكربت في الوقت المحدد وبالشروط المعطاه له. 

     

    هذا موجز مبسط لطريقة أتمتة العمل المطلوب.

     

  13. بتاريخ 1 ساعة قال Hassan Dayem:

    أولاً لك مني كلّ الشكر والتقدير لاهتمامك بالموضوع، بالنسبة لإضافة تحرير المحتوى نعم كنت استخدم ولكن ليس لتحرير المقالات إنما التعديل على الصفحات وباعتبارها مدونة فاستخدامي لـ Elementor قليل جداً.
    بالنسبة للموقع فقد قرر صاحب الموقع إلغاء المدونة على دومين فرعي وإلحاقها بالموقع الرئيسي مباشرة، ولأجل ذلك قام بتجميد النطاق الفرعي ولهذا لن يعمل الموقع.
    الموقع الرئيسي يدعم تعدد اللغات دون أن استخدم خاصية تعدد المواقع، لأن الموقع كما لاحظت هو OnePage لا يحتوي إلا الصفحة الرئيسية وباقي الروابط هي روابط داخلية ضمن الصفحة، فاستخدمت إضافة Polylang لدعم اللغة الأخرى.
    أخيراً أشكرك مرةً أخرى على قضاء بعض من وقتك بالإجابة عن الأسئلة، وأعتذر عن إطالة الموضوع.

    تحتاج إلى التأكد من مسبب المشكلة ليتم حلها. 

    قم بتفعيل وضع Debug من خلال اضافة هذا السطر : 

    define( 'WP_DEBUG_LOG', true );

    الى ملف wp-config.php .. 

    وبعدها قم بإعادة المحاولة لإضافة منشور جديد او تحديث منشور حالي. 

    بعدها إذهب الى مجلد wp-content وستجد بداخله ملف جديد بإسم  debug.log.

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

  14. بتاريخ 4 ساعات قال Hassan Dayem:

    اسخدم Apache

    Web server PHP version: 5.6.30

    PHP MyAdmin Version: 4.7.3

    هل تقوم بإستخدام اضافة لتحرير المحتوى مثل Elementor و DIVI Builder ؟ 

    بالنسبة للرابط الذي تم وضعه في المشاركة الأولى, 

    الموقع:  blog.maksupply.com.tr 

    لا يعمل, ولكن http://www.maksupply.com.tr يعمل.

    ايضاً وجدت أن الموقع يدعم تعدد اللغات, فهل أنت قمت بتفعيل خاصية تعدد المواقع Multisite Network ؟ 

    وماهي الإضافة المستخدمة لذلك ؟ هل تستخدم MultilingualPress؟

    • أعجبني 1
  15. بتاريخ 1 ساعة قال روب رات:

    هل يمكن ان تفسر اكثر اخي "محمد"  انا مبتدا في php

    المتغيرات في الـ PHP (وفي كافة لغات البرمجة) تعمل على حفظ القيم المعطاه لها. 

    فمثلاً لو قمت بإنشاء متغير جديد وإعطاءه القيمة 1. سيحمل المتغير هذه القيمة, فإينما وضعت المتغير سيتم قرائتها على أنها 1. 

    لكن عندما تقوم بإنشاء المتغير بدون أي قيمة مسجلة, سيعطي NULL او سيظهر خطأ على حسب لغة البرمجة. 

    في الـ PHP أي متغير يتم إنشاءه بدون قيمة, سيتم تسجيل قيمة NULL بداخله. 

    مثال على ذلك : 

        $id;
        $NullCheck = is_null($id); //True or False
    
        if($NullCheck == 1){
            echo "I'm a NULL";
        }else{
            echo "$id";
        }

    في المثال أعلاه, قمنا بإنشاء متغير id$ بدون إعطاءه أي قيمة, ثم قمنا بإنشاء متغير آخر NullCheck$ وسجلنا به الدالة $NullCheck = is_null($id) ودالة is_null() في الـ PHP تقوم بمراجعة قيمة المتغير id$ فإذا كانت قيمته NULL ستكون النتيجة 1 (اي True) وإذا كانت غير ذلك ستكون النتيجة 0 (اي False). 

    لو لاحظت أني لم أقم بإعطاء id$ اي قيمة, وعند محاكاة الكود اعلاه ستظهر لنا رسالة I'm a NULL وهذا بسبب أن id$ لا يحمل قيمة بداخلة بل يحمل قيمة NULL. ولو استخدمنا وضع Debug في PHP وإظهار الأخطاء error_reporting(E_ALL) سيظهر لنا خطأ Undefined variable وهذا يعيد كلامي السابق بأن المتغير لم يتم إعطاءه أي قيمة. 

    ولكن لو قمنا بإعطاء المتغير id$ قيمة (مثلا 1) واستخدمنا المثال السابق, ستظهر لنا النتيجة (1) ويزول خطأ Undefined variable

    مثال : 

        $id = 1;
        $NullCheck = is_null($id); //True or False
    
        if($NullCheck == 1){
            echo "I'm a NULL";
        }else{
            echo "$id";
        }

     

    هذه فكرة ملخصة عن المتغيرات. قد تكون قيمة مضافة لك وقد تكون مراجعة.

     

    نعود الى الخطأ الرئيسي في الكود الخاص بك. 

    لديك 

    $sql="SELECT * FROM threads WHERE id='$id'";

    يجب ان يكون المتغير id$ لديه قيمة مسبقة حتى يتم استبداله بهذه القيمة, ولكن في الكود الخاص بك ليس هنالك أي قيمة مسبقة له. 

    فمثلاً كحل سريع للمشكلة , لنقل أن الرقم التعريفي للمنشور المراد التعديل عليه هو 456. 

    فلو قمنا بعمل الآتي : 

    $id = 456;
    if($connect=mysqli_connect('localhost','root','a','flip')){
    $sql="SELECT * FROM threads WHERE id='$id'";
    $query=mysqli_query($connect,$sql);

    وبهذا تم حل مشكلة التعديل على المنشور رقم 456. ولكن هذا يعني اننا سنحتاج إلى وضع رقم المنشور في كل مره يحتاج الى تعديل بشكل يدوي. إذا سنحتاج الى طريقة لجلب رقم المنشور المراد التعديل عليه وثم تخزينة في id$. حتى يتم تنفيذ امر sql$ بدون مشاكل. وطريقة جلب رقم المنشور تعتمد على طريقة حفظ رقم المنشور نفسه واستدعائه.

     

     

  16. بتاريخ 1 ساعة قال Hassan Dayem:

     

     

    أشكر جوابك ولكن كما أشرت في بداية طرحي للمشكلة وهي أني قد جربت إعادة بناء الروابط الدائمة أكثر من مرة دون فلاح، ولكن عندما أعيد الروابط الدائمة إلى الوضع الافتراضي لها، يختفي خطأ "الصفحة غير موجودة" ويظهر خطأ 403 المتعلق بصلاحيات الوصول:

    Forbidden

    You don't have permission to access /wp-admin/post.php on this server.

    وأشكرك مجدداً على جوابك.

    مانوع السيرفر الذي تستخدم الوردبريس عليه ؟ Apache او IIS ؟

  17. بتاريخ 2 ساعات قال روب رات:

    كود edit.php

     

     

    edit.php

    $sql="SELECT * FROM threads WHERE id='$id'";

    $id لم يتم تجهيزة بأي قيمة قبل الإتصال بقواعد البيانات. يجب استيراد الـ id وتخزينه في $id ثم بعد ذلك تقوم بالإتصال بقواعد البيانات. حتى يتم تحويل المتغير الى القيمة المخزنة بداخلة (القيمة المستوردة) .

  18. اعتقد ان مشكلتك تكمن في الرابط نفسه. 

    أستخدم دلالات بالحروف الإنجليزية عوضاً عن العربية. 

    قم ايضاً بالذهاب الى الإعدادات ثم Permalinks واضغط على زر حفظ التغييرات Save Changes حتى يتم تحديث الإعدادات 

    إذا لازالت المشكلة موجودة , قم بالرجوع الى صفحة الـ Permalinks ثم قم بإسترجاع الإعدادات الافتراضية للروابط بحيث يكون الرابط برقم المقال او الصفحة (الخيار الأول Plain) ثم احفظ الإعدادات. 

    إذا كنت تستخدم IIS , تأكد بان تختار Custom وتضع

     /%postname%/index.php

    وتقوم بحفظ الإعدادات

  19. بتاريخ 23 ساعات قال afrah shsh:

    ابي شرح وافي عن join

    حاولت ابحث لك عن شرح جاهز ويكون مبسط. وهذا قد يفي بالغرض : ما هى ال joins ؟ و ما انواعها و فيما تستخدم ؟

    ملاحظات تهمك (تعقيب على الشرح )  : 

    الـ INNER JOIN يكتب على ثلاث صيغ (بما أنه الربط الإفتراضي) .

     

    SELECT   s.stor_id, d.discounttype
    FROM     stores s JOIN discounts d
    ON       s.stor_id = d.stor_id
    SELECT   s.stor_id, d.discounttype
    FROM     stores s INNER JOIN discounts d
    ON       s.stor_id = d.stor_id

    الصيغيتن التي بالأعلى متشابهه وهي على صيغة ANSI-92 standard وهي الصيغة الحديثة وستعطي نفس النتائج سواء تم كتابة الـ JOIN بخيار الـ INNER او بدونه.

    اما الصيغة التالية :

     select s.store_id, d.discounttype 
    from stores s, discounts d
    where s.store_id=d.store_id


    هذه الصيغة هي الصيغة القديمة من الصيغيتين السابقة وهي على صيغة ANSI-89 standards . وعلى الرغم من ان لازالت محركات قواعد البيانات تدعمها, إلا أني لا أنصح بإستخدامها ودائماً نستخدم الصيغ الحديثة لأن محركات قواعد البيانات تستخدم الصيغة الحديثة. أي نضع دائماً الكلمات الدلالية للربط JOIN ونستخدم الـ ON لشرط الربط (عدا الـ CROSS JOIN لايحتاج الى ON).

    هذا سيجنبك اي مشاكل قد تحدث بسبب الصيغ (لان محركات قواعد البيانات في تحديث مستمر, واحتمالية تخلصها من الصيغ القديمة عالية).

    إذا كان هنالك أي استفسار حول الشرح بالرابط المدرج أعلاه, يرجى طرحه وسأحاول أن اجيب عليه بإذن الله.

    • أعجبني 1
  20. بتاريخ منذ ساعة مضت قال Somar Alodat:

    اخر سؤال:

    شو السعر الي لازم اقدمو لهيك صفحة (صفحة الي وصفتها)

    يعني اذا طلبت برمجتها على مستقل 

    هل لديك تخيل للسعر الي لازم اقدمو؟ 

     

    هذا الطلب صعب تخيل سعره .. 

    لانه بيعتمد على متطلباتك والجهد والوقت المبذول فيها .. 

    فمثلاً , 

    ممكن مشروع مفتوح المصدر مع بعض التخصيصات فيه قد تفي بالغرض .. 

    وممكن راح تحتاج الى انك تبرمجها من الصفر  .. 

    وبالحالتين الاسعار تختلف ! 

     

  21. بتاريخ 3 ساعات قال Somar Alodat:

    الجواب ممتاز ما شاء الله كتير كتير ساعدني !! 

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

    يعني مثال مشان حملو وشوف كيف هنن مبرمجينو ؟ 

    انا بتشكرك كتير مرة اخرة !! 

    اذا كنت تقصد صفحة اضافة الأكلات والبحث , فليس لدي مثال فوري على ذلك. 

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

    مثل : https://github.com/tastyigniter/TastyIgniter

     

    • أعجبني 1
  22. والله مابعرف اذا باللحق اجاوب على كامل السؤال او لا .. 

    انت بالمختصر عندك موقع للأكلات بشكل عام , 
    ومتطلباتك مختلفه وتختلف التقنيات المستخدمة فيها كذلك. 

    فمثلاً صفحة اضافة الأكلات , 
    هذا من الممكن برمجته من خلال Javascript و PHP.
    ستقوم بإستخدام الجافاسكربت في التحكم بالتغييرات الديناميكية في واجهة المستخدم. 
    مثلاً, قام المستخدم بإختيار اكلة من القائمة, سيظهر له حقلين جديدة بشكل تلقائي وبدون تحديث للصفحة. 
    مثل هذه التغييرات الديناميكية يمكن عملها بالجافا سكربت, 
    اما الـ PHP فلا يتميز بها. فلذلك غالباً مايتم استخدام التقنيتن معاً لهذا السبب. 
    وهذا ايضاً يدخل في موضوع البحث وإظهار قائمة المقترحات وقت البحث (هذا ايضاً بالجافا سكربت).

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

    اما بالنسبة للـ Google Sheets, 
    فبإمكانك اضافتها الى قواعد البيانات وهنالك طرق مختلفه لذلك.  ولكن اسهلها هي استخدام ملفات CVS , فقواعد البيانات تقرأ ملفات CVS وبإمكانك تصدير Google Sheets الى CVS ومن ثم استيرادها من داخل قواعد البيانات. ولكن لابد أن تكون الجداول والصفوف والأعمدة بنفس ترتيب جدولها الموجود داخل قاعدة البيانات.

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


    -كيف ممكن ابرمج نظام الخانات يعني انو دائما يشوف شو الاكلة الي خترتها واذا الها اضافات يعملي خانات جنبها واذا لا ما يعمل ... وكيف فيني حدد الاضافات لكل اكلة ؟؟
    بالنسبة لرؤية الأكلة او ظهورها بشكل عام بالصفحة, فهذا يعتمد على طريقتك بإظهارها. 
    الـ PHP سيكون كافي لإظهارها, ولكن كما ذكرت سابقاً ستحتاج الى التقنيات الديناميكية للتحكم بتنسيق الصفحة بشكل عام مثل HTML, CSS, Javascript.
    اما تحديد الاضافات لكل اكلة, فهذه فائدة قواعد البيانات الموحدة, يمكنك ربط كل اضافة بالرقم التعريفي للأكلة في قواعد البيانات ومن ثم قرائتها من الـ PHP. ولا يمنع من استخدام بعض Queries المساعدة لنتائج افضل.


    - كيف ممكن اربط التصنيفات تبع الاكل مع الاكل بقاعدة البيانات (نوع كل اكلة  .... مع العلم لدي فقط 5 انواع)؟ 

    كما ذكرت تقوم بإعطاء رقم تعريفي ID مميز لكل تصنيف داخل جدول التصنيفات. ومن ثم تقوم بإضافة عمود جديد مثلا تقوم بتسميته الصنف وتقوم بربطه بمفتاح اجنبي foreign key في جدول الأكلات وتقوم بإضافة الرقم التعريفي للتصنيف لكل اكل عبر استخدام داخل هذا العمود. 

    مثال : 
    رقم الأكلة      العنوان         الوصف           الصنف

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

    ان شاء الله اني وفقت بالاجابة

    • أعجبني 1
  23. بتاريخ 1 ساعة قال Abdullah alwassam:

    مشكور اخوي محمد المري

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

    ما احتاجه هو كالتالي :

    يقوم العميل بتسجيل بياناته الشخصية ليتولد له حساب بنكي افتراضي او محفظة wallet شبيهه بـ paypal بحيث تكون معلوماته على شكل باركود QRcode ويقوم بتحويل الاموال لحسابه او لمحفظته

    هذا الجزء الكبير من الامر

     

    ستحتاج إلى إما استخدام API او مكتبة بها الحزمة المطلوبة.

    شخصياً, انا استخدمت Google QR Code في أحد المشاريع السابقة, وهنالك مواقع اخرى تقدم مثل هذه الخدمة ولكن الغالبية العظمى منها خدماتها ليست مجانية.

    ايضاً هنالك مكتبات برمجية جاهزة يمكنك استخدامها مثل مكتبة ZXing (مفتوح المصدر) وهي مكتبه تعمل على كثير من المنصات مثل Java و C# و Android وغيرها. 

    نقطة أخيرة , بما أنك ستسخدمها لحفظ بيانات بنكية, الـ QR Code ليس آمن لمثل هذه الإستخدامات, ولا أنصح به. ولكن لو كنت تريد إستخدامه يجب عليك ان لاتحفظ البيانات بدون تشفير, اي قم بتشفيل البيانات اولاً ثم بعد ذلك حفظها ك QR Code.

×
×
  • أضف...