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

علي عبد محسن

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

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

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

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

    4

كل منشورات العضو علي عبد محسن

  1. يمكنك إستعمال مكتبة Propeller لعمل دوران عنصر معين من خلال التحكم بخصائص الدوران من سرعة وزاوية وغيرها. في المثال أدناه لدينا زر عند الضغط عليه يستدعي دالة التدوير rotate وهي user defined function لتقوم بتدوير العنصر من موضع دورانه. بالطبع يمكنك الإستغناء عن هذا كله والتدوير بالماوس مباشرة أو بالإصابع في حالة touch devices. تحتاج تحميل المكتبة من الصفحة الرسمية هنا ثم تقوم بإستخراج الملف propeller.min.js من الحزمة ووضعه في مسار ملف المثال التالي <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title></title> <style> /* تعيين قيم css */ .wrapper{ padding: 10%; width: inherit; height: inherit; display: flex; justify-content: center; align-items: center; } .cube{ /* تصميم مكعب أحمر*/ width:200px; height: 200px; background-color: brown; border-radius: 5px; } </style> <script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script> <!--propeller الضرورية لعمل المكتبة jQuery نتأكد من وجود --> </head> <body> <div class="wrapper"> <div class="cube rotate-this" id="cube1" ></div> <button onclick="rotate()">Rotate</button> <!-- هنا نعرف زر التدوير ونربطة بدالة التدوير --> </div> <!-- نقوم بإستيراد المكتبة من مسار المشروع الرئيسي حيث وضعناها --> <script src="./propeller.min.js"></script> <script> var rotateElement = document.getElementById('cube1'); // نقيد العنصر المراد تدويره في متغير let x= new Propeller(rotateElement , {}); // ننشئ عامل التدوير ونضعه في متغير function rotate(){ // ننشئ دالة نقوم بإستدعاءها مع كل ضغطة زر لتعديل متغيرات التدوير المرتبطة بعامل التدوير x.inertia=0.98 x.speed=0.5 x.step=1 } </script> </body> </html>
  2. عند بداية أي مشروع فلا بد من خطة عمل واضحة فالخصائص التي يتم تطبيقها في الواجهتين هي نفسها لكن بشكل مختلف خصوصاً إذا كنت تمتلك تصميم ux/ui قبل البدء. إذا كان هناك أكثر من مطور مثلاً واحد للbackend والأخر للfrontend فيمكن أن يعملا في نفس الوقت ولن يكون مطور الfrontend بحاجة الى إنتظار جهوز backend حيث يستطيع إستعمال mock data أي بيانات وهمية تحاكي الصيغة المفترض أن تكون عليها البيانات في backend. أما إذا كنت تقوم بكل شيء بنفسك فالأفضل أنجاز الواجهة الخلفية backend وكتابة tests لفحص endpoints في api التطبيق أولاً, كونها ستستغرق وقتاً أقل للإنجاز بصورة عامة ومن ثم الإنتقال الى expo لإنجاز التطبيق الذي قد يأخذ وقت في التصميم والربط مع backend. ربما أنت تفضل العكس وتستعمل طريقة الmocking فالأمر في النهاية يعود لك.
  3. مع ضبط وسم meta المناسب وربما القليل media query طالما أنك تستعمل flex box لعمل الlayout فإنك قد لا تضطر الى تصميم خاص لكل حجم شاشة ولكن فقط تعديلات بسيطة مثل حجم الخط font-size أو display لإخفاء أو أظهار أجزاء معينة. لكن في النهاية الأمر يعتمد على درجة تعقيد ماتريد إنجازه. ... <!-- head طبقاً لحجم الشاشة وتضعه في وسم scale يقوم هذا الكود بعمل --> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> ...
  4. يمكنك إستعمال الattribute المسمى dir على الحافظة الرئيسية التي تحيط بالكود (body) بإسناد القيمة rtl لها وتجرب إذا كانت جميع العناصر ستأخذ نفس الإتجاه المطلوب أم لا.. العناصر التي تمتلك الخاصية display بقيمة absolute مثلا ربما تحتاج تعديل قيمة left أو right لها حتى تظهر بالإتجاه الصحيح. طبعاً تبقى هذه إرشادات عامة بدون وجود كود تتم معاينته ومن ثم الحكم عليه. ... <body dir="rtl"> ... </body> ... ... /*display:absolute مثلاً إذا كان لديك الفقرة التالية بخاصية */ p{ /*dir="ltr" هنا في حالة */ display: absolute; left:10px } ... /* تقوم بتغييرها الى التالي */ p{ /*dir="rtl" هنا في حالة */ display: absolute; right:10px } ...
  5. كما وضحنا لك عندما تفتح ملف في مجلد فإن كود php لا يشتغل. لكن الغرض من xamp هو إنه ينشئ لك خادم محلي وبيئة تشغيل أكواد php لذلك تستعمل رابط الخادم للوصول الى الملفات.
  6. لاحظ إنك تفتح ملف ولست تفتح صفحة مرتبطة بخادم، المفروض أنك تفتح رابط الخادم localhost ولهذا قمت بالتأكيد عليك أول مرة إن تشغل الملف من خلال الخادم. جرب تفتح localhost/test/index.php
  7. هل الخادم server شغال لديك هل تقوم بفتح الملف في المتصفح بهذه الطريقة ؟ localhost/file.php
  8. هل يعمل كود php بعد التغيير الذي عملته؟
  9. يمكنك عمل ذلك بوضع جملة شرطية أخرى بداخل الجملة الشرطية الأولى وفي حال تحققها تقوم بطباعة النص المشار إليه في مثالك وكما يلي <?php $parent_domain = $_SERVER['HTTP_REFERER']; $domains=array("domain1"=>"domain1.com","domain2"=>"domain2.com","domain3"=>"domain3.com"); $ipaddress = getenv("REMOTE_ADDR"); $ips = array( // قم بتعريف مصفوفة الأيبي "ip1"=>'78.58.25.4', "ip2"=>'75.85.76.33', "ip3"=>'57.7.47.58', ) if( array_search($parent_domain,$domains)){ // نبحث هل القيمة الواردة موجودة if( array_search($ipaddress, $ips)){ //ip نبحث عن قيمة echo "allowed"; } } ?>
  10. يمكنك تجربة الكود بعد تعديله ليتضمن الكلمات التي تنتهي ب ؟ و ! SELECT col1 FROM tab1 WHERE col1 regexp '(^|[[:space:]])مجد([\?!])?([[:space:]]|$)';
  11. ممكن يحدث هذا إذا لم تكن قد وضعت الكود المعني داخل وسوم php فلم يتم التعرف عليها. أيضا ربما فتحت الوسم ولم تقفله بشكل صحيح. تأكد من كل هذا وحاول مجدداً وإذا لم يفلح الأمر يمكنك مشاركة الملف المذكور لمعاينته <?php ... //يجب ان تكون داخل هذا الوسم php كل أكواد ?> أيضا تأكد انك تشغل الكود داخل الخادم.
  12. تستطيع الوصول الى إسم المستخدم من خلال user.username ولعمل ذلك سنقوم بتعديل الكود الخاص بك وتحديداً showusername ليعمل بشكل صحيح كما يلي // عدل هذه الدالة لتصبح بهذا الشكل function showusername(){ console.log(user.username); }
  13. يمكنك الإستعانة ب google. نحن هنا نساعدك بقدر الممكن لكن لايمكن أن نكتب الكود بدلاً عنك. حاول أن تبدأ بالمشروع وعندما تواجه مشكلة يمكنك طرحها من جديد وستجد من يساعدك.
  14. نعم المحتوى الديناميكي الذي تريد تغييره تحتاج أن تحفظه في قاعدة البيانات في جدول معين وبأسماء معينة وعند التعديل عليها من لوحة الأدمن (يمكنك إستعمال مكتبة admin-bro/express) يظهر لك التحديث الذي عملته في الواجهة الامامية عند تحديث الصفحة.
  15. إذا كنت تريد إضافة الصفحات بكامل محتوياتها من html و css و javascript من لوحة الأدمن وبدون أن تدخل الى المشروع وتكتب الكود بمحرر الأكواد وترفعه الى host, فهذا يعني أنك ستنشئ platform يشبه wordpress. يمكنك البحث في google عن هذا ولكن للعلم الأمر ليست بتلك البساطة. أما إذا كنت تريد فقط تحديث بيانات صفحة معينة مسبقة الإنشاء, تحديث بياناتها من خلال لوحة الأدمن فهذا سهل جداً وعليك أخبارنا ماذا تستعمل للbackend حتى نرشدك بهذا الخصوص.
  16. بداية موقعك الألكتروني هو من النوع static أي أن البيانات التي تعرض فيه ليست مرتبطة بخادم خارجي أليس كذلك؟ تحتاج تتعلم كيف تبني واجهتين أمامية وخلفية لغرض التحكم بمحتوى الواجهة الأمامية من خلال لوحة أدمن خاصة بك مثلاً. لكن ربما يمكنك تعلم wordpress لحل هذا الإشكال حيث يتيح لك التحكم بالقوالب والصفحات
  17. إذا كنت تملك حساب github هذا والمشروع التابع له وهو الموقع الألكتروني الذي تعمل عليه فكل ما تحتاجه هو أجراء التغييرات التي تريدها على مشروعك في حاسبوك مثلاً تضيف صفحة جديدة وتعمل git add ثم تعمل git commit ثم git push بنفس الطريقة التي رفعت بها مشروعك الى حساب github أو مرة.
  18. أولاً لا تحكم قبل أن تجرب. الشيء الثاني DB Browser for SQLite (DB4S) تأكد من أنك تستعمل إصداراً حديثاً أحدث من 3.6 وأن خيار disable regular expression extension ليس مفعلاً.
  19. ماهو الجدول رقم 3 في الملف أعلاه؟ هل هو البيانات التي تريد عرضها للمستخدم بعد تنفيذ sql query وكنتيجة لها؟ إذا كان هذا هو المقصود ومشكلتك فقط في أسماء الحقول التي تريد تغييرها فيمكنك فعل ذلك كما تقدم في رد سابق وتستطيع إستعمال الخاصية as لتغيير أسماء الأعمدة وإظهارها بالإسم الجديد ولكن هذا كله يحصل وينتهي أثناء تشغيلك للكود وإخراج النتائج, أي أن أسماء الأعمدة في الجداول مرتبطة بالschema مسبقة التعريف.
  20. هذا يعني أنك تستعمل sqlite. هل يمكنك إدراج رسالة الخطأ لديك؟ أيضا يرجى إدراج إصدار DB4S الذي تستعمله.
  21. الأفضل أن تضع الكود الذي تريد حل مشكلته وتوضح ماذا تريد أن تفعل حتى يتسنى لنا مساعدتك.
  22. لنفرض أن لديك ثلاثة جداول وهي كالتالي table1, table2, table3 ويحتويtable1 على foreign-key للجدول table2 وبهذه الحالة تستطيع الوصول الى معلومات سطر واحد أو أكثر في table2 طالما كان الforeign-key الموجود في بيانات table1 مرتبطاً ببيانات موجودة فعلاً في table2. وععمل ذلك يكون من خلال الأداة join في قاعدة البيانات (mysql) أو ما يقابلها في قاعدة البيانات المعنية. إذا أردنا الوصول الى بيانات في table3 من خلال البحث في table1 ولايوجد foreign-key للجدول table3 في table1, ولكن كان table3 يمتلك foreign-key في table2 فإنك بهذه الحالة تستطيع الوصول الى بيانات table3 في table1 عن طريق table2 لأن الأخير يعمل كسجر في هذه الحالة وتستطيع ذلك من خلال عمل أكثر من join واحدة لعمل الربط.
  23. تنشيء خادم بواسطة express وتعين الroute المطلوب الوصول إليه من جانب الfrontend. طبعا يجب أن تكون أنشأت قاعدة البيانات ومثبت لديك mongoose لغرض الإتصال بها ومعالجة البيانات عليها. ... const app = express(); // إنشاء الخادم const PORT = 3000; app.use(express.json()); // application/json إستقبال الطلبات من نوع ... try { mongoose.connect( // تستعمل mongoose PATH_TO_MONGO_DB, // هنا الإتصال بقاعدة البيانات عن طريق رابط الإتصال بها { useNewUrlParser: true, useUnifiedTopology: true }, (err, instance)=> err ? console.log('connection error:', err) :console.log("connected to database ", instance.connections[0].name) ) } catch (error) { console.log("mongoose connection error:", error) } ... // تعريف الراوت app.post("/my_route", (req, res)=> { ... // هنا تتعامل مع البيانات المرسلة من الواجهات الأمامية let body= req.body ... }) // تشغيل الخادم على منفذ معين مثلا 3000 app.listen(PORT, () => console.log(`Express server currently running on port ${PORT}`));
  24. يتطلب هذا الأمر عملاً على كلا الواجهتين frontend و backend. على الواجهة الأمامية تنشئ نموذج form يحتوي على العنصر input من نوع text وكذلك زر الإرسال هو input من نوع submit. وتقوم ببرمجة النموذج للإرسال بطريقة post مثلاً الى الراوت المعني في backend من خلال كتابة عنوانه في الخاصية action. يمكنك الإطلاع أكثر HTML FORM في الواجهة الخلفية يمكنك إستعمال express كإطار عمل ليسهل عليك عمل الrouting وإستلام البيانات وخزنها في mongodb والتي ستستعمل mongoose من أجل التواصل معها من داخل الخادم server. للمزيد من التفاصيل express . أيضا للمزيد من المعلومات عن كيفية إنشاء المكونات في React
×
×
  • أضف...