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

Khaled Osama3

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

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

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

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

    1

كل منشورات العضو Khaled Osama3

  1. هناك عده خطوات يجب اتباعها: 1. تأكد من توافر Python مع إصدار 3.6 فأعلى على جهازك. python --version 2. افتح terminal (cmd) وقم بتنصيب virtualenv بأمر: pip install virtualenv 3. قم بإنشاء بيئة افتراضية لمشروع Django بأمر: virtualenv myprojectenv 4. تفعيل البيئة الافتراضية بأمر: myprojectenv\Scripts\activate 5. تأكد من تنصيب Django بأمر: pip install django 6. قم بإنشاء مشروع Django الأول بأمر: django-admin startproject myproject الدخول لمجلد المشروع بأمر: cd myproject 7. أنشئ تطبيق الويب بأمر: python manage.py startapp webapp 8. تشغيل الخادم التطويري بأمر: python manage.py runserver 9. افتح عنوان localhost:8000 لرؤية صفحة Django. http://127.0.0.1:8000/
  2. يبدو أن المشكلة في الكود هي وجود علامة الدولار ($) قبل متغير task_id في السطر: $_GET['$task_id'] فعلامة الدولار تجعل من task_id اسم متغير بدلاً من قيمته. الكود الصحيح هو: <?php require "config.php"; if(!empty($_GET['task_id'])) { $connection->query("UPDATE tasks SET done=1 WHERE id=".$_GET['task_id']." AND user_id=".$_SESSION['user_id'].""); } header("location: ../index.php"); ?> الآن، يجب أن يعمل الكود بشكل صحيح. يمكنك تعديل الكود والتجربه مره اخري.
  3. Khaled Osama3

    Django

    ارجو السؤال اسفل الدرس لمساعدتك بشكل افضل
  4. يمكنك استخدام أمر prepared statements في MySQLi أو PDO. فهي تفصل البيانات عن الاستعلام مما يمنع حقن الSQL. // افتراضًا أن $mysqli هو الاتصال بقاعدة البيانات $unsafe_variable = $_POST['user_input']; // استخدام استعلام معد مسبقًا $stmt = $mysqli->prepare("INSERT INTO `table` (`column`) VALUES (?)"); // ربط القيمة بشكل آمن $stmt->bind_param("s", $unsafe_variable); // تنفيذ الاستعلام $stmt->execute(); // إغلاق الاستعلام $stmt->close(); او تعديل الإدخالات قبل إدراجها في الاستعلام. مثل إزالة الرموز خاصة وتحويل الأقواس إلى نص. $user_input = strip_tags($unsafe_variable); $user_input = mysqli_real_escape_string($conn, $user_input); $query = "INSERT INTO table (column) VALUES ('$user_input')"; بعد استخدام strip_tags، يتم إزالة أي علامات HTML (إذا كانت موجودة). مثلا المستخدم أدخل النص التالي: $user_input = '<script>alert("Hello, this is a malicious script!");</script><p>This is some text.</p>'; سيتم إزالة جميع العلامات HTML وPHP، وبالتالي، ستكون قيمة $user_input بعد استخدام strip_tags هي: $user_input = 'alert("Hello, this is a malicious script!");This is some text.'; بعد استخدام mysqli_real_escape_string، تصبح الرموز الخاصة معتبرة جزءًا من البيانات وليست جزءًا من الكود SQL، مما يمنع حقن الشيفرة SQL ويحافظ على سلامة الاستعلام وقاعدة البيانات. فمثلا الاستعلام قبل استخدام `mysqli_real_escape_string`: $user_input = "'; DROP TABLE users; --"; $query = "INSERT INTO table (column) VALUES ('$user_input')"; إذا تم تمرير هذا الاستعلام إلى قاعدة البيانات كما هو، فإنه يتضمن توجيه إضافي لحقن الشيفرة SQL، ويحاول حذف جدول المستخدمين (`DROP TABLE users`)، مما يسبب فقدان البيانات. الآن، إذا تم استخدام `mysqli_real_escape_string`: $user_input = "'; DROP TABLE users; --"; $user_input = mysqli_real_escape_string($conn, $user_input); $query = "INSERT INTO table (column) VALUES ('$user_input')"; فإن `mysqli_real_escape_string` سيقوم بتهيئة `$user_input` بحيث تتم معالجة الرموز الخاصة في النص بشكل صحيح. النتيجة ستكون: $user_input = "\'; DROP TABLE users; --"; $query = "INSERT INTO table (column) VALUES ('$user_input')"; ويفضل ان تحقق من نوع البيانات: if(is_int($user_input)) { $user_input = (int) $user_input; } $query = "INSERT... $user_input"; الأفضل دائما استخدام طرق موثوقة للتعامل مع البيانات مثل prepared statements.
  5. السبب في أن البرنامج يعطي دائما نفس النتيجة لأول كود هو أنه ينفذ دائما الكود الأول الموجود في الملف المصدري. لعرض نتائج مختلفة، يجب إضافة الكود الجديد وحفظ الملف ثم التنفيذ, يمكن أن تستخدم اختصارات لحفظ الكود، مثل Ctrl + S في Windows أو Cmd + S في macOS. اما بالنسبه لملف test.exe هو ملف التنفيذي الناتج عن ترجمة المصدر test.c++. أما ملف json فربما يكون ملف إعدادات المشروع. هذا طبيعي في لغة سي++. يمكنك قراءة المزيد عن دورة حياة برنامج سي++ من الترجمة إلى التنفيذ لفهم هذه الأمور بشكل أفضل. لا تقلق كونك مبتدئًا. مع الممارسة ستتعود على هذه الأشياء.
  6. الفرق بين import numpy as np و import Numpy as np: numpy هي الطريقة الصحيحة والمتعارف عليها لاستيراد مكتبة NumPy. Numpy بحرف كبير في البداية ليست طريقة صحيحة لأن اسم المكتبة الفعلي هو numpy. فإذا كتبت Numpy ، فمن الممكن Python لن تتعرف على هذا الاسم وسيعطي خطأ. عند استيرادها على شكل Numpy فهذا سيقوم باستيراد متغير باسم Numpy لكنه لن يحتوي على دوال وميزات numpy. ولهذا السبب عدم دعم بعض الدوال مثل mod, deg2rad والدوال المثلثية. لأنه لم يتم استيراد المكتبة الحقيقية ولكن استرد متغير.
  7. المشكلة هنا ناتجة عن أن بعض المكتبات التي تستخدمها المشروع لا تدعم الإصدار 8 من PHP حاليًا. عندما تتضمن مكتبة ملف composer.json تحديدًا لإصدارات PHP المدعومة، فسوف يرفض composer تثبيتها إذا لم تتوافق الإصدارات. لحل هذه المشكلة يمكنك تجربة الخطوات التالية: البحث عن إصدارات حديثة من تلك المكتبات تدعم PHP 8. تحديث composer.json لتحديد إصدار أقل حتى PHP 7. استخدام flag `--ignore-platform-reqs` مع أمر composer install لتجاهل متطلبات PHP.
  8. حسنا يمكنك تجربه الحل التالي: import DatePicker from "react-datepicker"; import TailwindDatePicker from "react-tailwindcss-datepicker"; عادة ليس مطلوبا تغيير أسماء المتغيرات عند استيراد مكونات من مكتبات مختلفة. لكن في حالة التعارض، يجوز تغيير الاسم دون مشكلة لأن الاسم المستخدم مجرد متغير محلي للإشارة إلى المكون المستوردو المكتبة نفسها لا تعتمد على هذا الاسم، بل على طريقة استدعاء المكون, فمثلا لو استدعينا DatePicker باسم آخر مثل MyDatePicker لن يحدث أي تأثير على المكتبة.
  9. سبب المشكلة هو أنه عند استيراد مكتبتين أو أكثر يحتويان على مكون (Component) بنفس الاسم، فإن ذلك يؤدي إلى تضارب (Conflict) بين المكونات. والسبب في ذلك هو: - في كل مكتبة يتم تصدير/تعريف المكونات تحت أسمائها الأصلية في المستند الرسمي. - لكن عند استيراد المكتبتين مع بعض فإنه يحدث تداخل بين الأسماء. - فالمترجم (Compiler) لن يستطيع التمييز بين المكون الأول والثاني لأنهما يحملان نفس الاسم. - لذلك يحدث خطأ أثناء التجميع. أما عند استخدام أسماء مختلفة عند الاستيراد فإن ذلك يجعل المترجم قادراً على التمييز بين كل مكون على حدة، فلا يحدث تداخل. وبالتالي فإن تغيير الأسماء عند الاستيراد هو الحل لتفادي المشكلة، على الرغم من أن الأسماء الأصلية في المستندات ستظل كما هي.
  10. المشكلة هنا تظهر عند استخدام استيرادين يحتويان على نفس اسم المكتبة (`DatePicker`)، مما يؤدي إلى تداخل في أسماء المكونات عند الاستخدام. لحل هذه المشكلة يمكنك استخدام الاستيراد بطريقة التسمية المختلفة لكل مكتبة يمكنك تجربه الحل التالي: import DatePicker from "react-datepicker"; import { Datepicker } from "react-tailwindcss-datepicker"; بهذه الطريقة ستقوم باستيراد كل مكتبة تحت اسم مختلف، حيث: - DatePicker سيكون اسم المكون من مكتبة react-datepicker - {Datepicker} سيكون اسم المكون من مكتبة react-tailwindcss-datepicker هذا سيمنع حدوث أي تداخل بين الاسمين داخل المشروع. يمكنك بعدها استخدام كل مكون باسمه الجديد دون مشاكل.
  11. يجب تغيير اسم ملف home.html الي home.php
  12. في الاغلب يكون هذا هو الكود ولكن من الممكن ان يختلف من شخص لاخر $servername = "localhost"; $username = "root"; $password = ""; $dbname = "Legacy"; // اسم قاعدة البيانات يمكنك تجربه مره اخري
  13. سأجيب على أسئلتك بالترتيب: 1- كيف يتم تحديث الـ API بشكل لحظي؟ - بعض الـ APIs تقوم بتحديث البيانات بشكل تلقائي باستخدام تقنيات مثل webhooks أو WebSockets . فمثلاً API للطقس عادة ما تستقبل البيانات بشكل مستمر من مراكز الأرصاد الجوية وتقوم بتحديثها لحظياً عبر الـ API. 2- الأدوات اللازمة لربط الـ API بواجهة مستخدم: - يمكن استخدام مكتبة Python مثل Requests لجلب البيانات من الـ API عبر طلبات HTTP. أما لبناء واجهة المستخدم فيمكن استخدام Flask أو Django لبناء صفحات ويب تعرض البيانات, بالنسبة لـ Streamlit، نعم، يمكنك استخدامها أيضًا لإنشاء واجهة المستخدم بشكل سريع وسهل. 3- هل يمكن ربط موقع بـ AdSense مباشرة؟ - نعم يمكن ربط موقع الـ API بـ AdSense مباشرة إذا كان الموقع مطابق لسياساتهم. لكن عادة ما يستغرق الموافقة على الطلب بضعة أسابيع. ولتحسين الـ SEO يمكن استخدام كلمات بحثية ذات صلة بخدمة الـ API مثل : 1. الكلمات الرئيسية (Keywords): استخدم كلمات رئيسية ذات صلة بالمحتوى الخاص بك. 2. عناوين الصفحات (Page Titles): جعلها واضحة ووصفية. 3. الوصف الخاص بالصفحة (Meta Description): كتابة وصف موجز وجذاب للصفحة. 4. الروابط الداخلية (Internal Links): ربط صفحات موقعك الداخلية ببعضها البعض. 5. صور متناسقة (Optimized Images): ضغط الصور واستخدام النص البديل (Alt Text). 6. روابط ذات جودة (Quality Backlinks): الحصول على روابط من مواقع ذات سمعة جيدة. 7. تحسين سرعة التحميل (Page Speed): استخدام صور مضغوطة وتقنيات تحسين الأداء. 8. محتوى فريد وجودة عالية (High-Quality Content): إنشاء محتوى جذاب ومفيد للزوار. https://io.hsoub.com/programming/22454/comment/104409
  14. يبدو انه يوجد لديك خطأ انه لا يتصل بقاعده البيانات يرجي التاكد من انك غيرت هذه البيانات وكتبت بيانات صحيحه للاتصال بقاعده البيانات $servername = "اسم_الخادم"; $username = "اسم_المستخدم"; $password = "كلمة_المرور"; $dbname = "Legacy"; // اسم قاعدة البيانات
  15. يمكنك تجربه هذا الكود <!DOCTYPE html> <html lang="ar"> <head> <link rel="icon" href="https://c0.klipartz.com/pngpicture/573/614/gratis-png-ng%C5%A9-hanh-s%C6%A1n-distrito-casa-apartamento-inmobiliaria-volta-redonda-venta-de-logotipos-de-bienes-raices.png" /> <title>موقع العقارات</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@300&display=swap" rel="stylesheet"> <meta charset="utf-8" /> <link rel="stylesheet" type="text/css" media="screen" href="home.css"> </head> <body> <header> <div> <img src="a.png" alt="نظام العقارات من كمال تجريبي"> </div> <center> <div> <button>نقاط البيع</button> <button>أدارة المخزون</button> <button>الإراضي</button> <button>الشيكات</button> <button>الأستاذ العام</button> <button>إدارة النظام</button> </div> </center> </header> <?php // اتصال بقاعدة البيانات $servername = "اسم_الخادم"; $username = "اسم_المستخدم"; $password = "كلمة_المرور"; $dbname = "Legacy"; // اسم قاعدة البيانات $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("فشل الاتصال: " . $conn->connect_error); } // استعلام SQL $sql = "SELECT * FROM Problemss"; $result = $conn->query($sql); ?> <table border="1" width="100%"> <tr> <th>تم</th> <th>الحلول</th> <th>المشكلة</th> <th>م</th> <th>الرقم</th> </tr> <?php if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "<tr> <td>" . $row["تم"] . "</td> <td>" . $row["الحلول"] . "</td> <td>" . $row["المشكله"] . "</td> <td>" . $row["م"] . "</td> <td>" . $row["الرقم"] . "</td> </tr>"; } } else { echo "<tr><td colspan='5'>لا توجد نتائج</td></tr>"; } // إغلاق الاتصال بقاعدة البيانات $conn->close(); ?> </table> </body> </html> ولكن لا تنسي ان تغير ال extension الملف من html ل php (home.php)
  16. يمكنك ان تضغط ع هذا الجدول نقره يمني بالماوس ستظهر لك قائمه يمكنك ان تختار منها هذا الخيار "Select Top 1000 Rows" هذا الخيار سيعرض لك 1000 صف من الجدول
  17. هل تريد تعديله ليصبح بلغه PHP ؟
  18. اذا كنت تريد ربط صفحة HTML بقاعدة بيانات SQL Server باستخدام لغة PHP, اليك مثال بسيط: 1. إنشاء ملف PHP جديد وسميه مثلا connect.php. 2. كتابه الكود التالي في الملف للاتصال بقاعدة البيانات: <?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } 3. اضافة أمر SQL لاسترجاع البيانات مثل: <?php $sql = "SELECT * FROM اسم_الجدول"; $result = mysql_query($sql); if (mysql_num_rows($result) > 0) { while ($row = mysql_fetch_assoc($result)) { echo "اسم: " . $row["اسم"] . " - عمر: " . $row["عمر"] . "<br>"; } } else { echo "0 نتائج"; } mysql_close($conn); ?> ثم حفظ الملف connect.php ثم استدعاؤه من ملف HTML باستخدام تعليمة include أو require. 4. إظهار النتائج في صفحة HTML: <!DOCTYPE html> <html> <head> <title>صفحة العرض</title> </head> <body> <h2>البيانات من قاعدة البيانات</h2> <?php // الكود الخاص بالاتصال بقاعدة البيانات والاستعلام ?> </body> </html>
  19. هنا بعض الخطوات العامة لتحويل مشروع مكتوب بلغة C++ إلى ملف تنفيذي (.exe): 1. تأكد من أن كل ملفات الشفرة المصدرية (.cpp) والتعريف (.h) مرتبطة بشكل صحيح في ملف مشروع الـ Visual Studio. 2. أضف أي مكتبات خارجية أو ملفات رأس مطلوبة للمشروع. 3. حدد إصدار النظام المستهدف هل هو 32 بت أو 64 بت. 4. ضع الكود التنفيذي المطلوب تشغيله عند بدء تشغيل البرنامج في دالة main(). 5. في Visual Studio، اختر بناء المشروع من قائمة Build - Build Solution. 6. سيتم توليد الملف التنفيذي بامتداد exe في مجلد output folder. 7. يمكن توزيع الـ exe مع أي ملفات مساعدة أخرى مثل المكتبات الخارجية لتشغيل البرنامج على أجهزة أخرى.
  20. لا يمكن ربط صفحة HTML بقاعدة بيانات SQL Server باستخدام لغة CSS وحدها. لغة CSS (Cascading Style Sheets) هي لغة تقديم وتنسيق المحتوى على الويب، وهي مسؤولة عن جانب التصميم والمظهر البصري للصفحة، أما وظيفة الربط بين الصفحة وقاعدة البيانات فتتطلب استخدام لغة برمجة أخرى تتيح الاتصال بقاعدة البيانات وإجراء الاستعلامات. الطرق التي شرحتها سابقاً باستخدام لغات برمجة مثل PHP أو ASP.NET أو واجهة برمجة تطبيقات هي الأنسب لغرض الربط، بينما لا يمكن لـ CSS القيام بهذا الدور. فال CSS يستخدم عن طريق يتم إنشاء صفحة HTML عادية مع تضمينها لملف CSS لتنسيق المحتوى على الويب.
  21. هناك طرق عديده لربط صفحة HTML بقاعدة بيانات SQL Server منها: 1- استخدام لغة PHP: - يتم إنشاء ملف PHP ويتضمن الأكواد التي تربط بقاعدة البيانات (استخدام mysql_connect) - يتم استدعاء طلبات SQL لاسترجاع أو إدخال البيانات - يتم عرض النتائج داخل ترميز HTML 2- استخدام لغة ASP.NET: - يتم إنشاء ملف ASPX ويتضمن الأكواد التي تربط بقاعدة البيانات (استخدام SqlConnection) - يتم استدعاء طلبات SQL لاسترجاع أو إدخال البيانات - يتم عرض النتائج داخل ترميز HTML 3- استخدام خدمة ويب (RESTful API): - يتم برمجة واجهة برمجة التطبيقات للوصول لقاعدة البيانات - تتم طلبات HTTP من الصفحة HTML للحصول على البيانات - يتم تحويل البيانات لتنسيق JSON أو XML
  22. لا تقلق، ما تواجهه أمر طبيعي في تعلم مجال جديد خاصة بالتكنولوجيا والبرمجة. اليك بعض النصائح قد تساعدك: استمر في تعلم الجافاسكربت باستخدام مصادر موثوقة مثل كتب وكورسات عالية الجودة واعطيها وقتها ولا تستعجل في تعلمها. إذا وجدت مصطلحًا أو مفهومًا غير معروف، لا تخجل من سؤال زملائك أو البحث عنه في المواقع والمنتديات. وتذكر ان هذا المجال قديم وبالطبع يوجد ناس تعمل به من سنين ونحن غير ملزمين بمعرفه كل شئ في هذا ولكن مهمتنا معرفه الاساسيات ثم تطبيق مشاريع صغيره وهكذا. بالصبر والمثابرة ستتقلص الفجوات.
  23. جزاك الله خيرا. طريقة حفظ الأعمدة دون طباعتها في الجدول، يمكنك حفظ قيم الأعمدة في متغيرات منفصلة بدلاً من إضافتها للجدول مباشرة. مثال: # حساب العمود الأول col1_values = Table.iloc[:, [5,6]].max(axis=1) # حساب العمود الثاني col2_values = Table.iloc[:, [10,11]].max(axis=1).apply(lambda x: 50 if x > 50 else x) # استخدام القيم في العملية التالية Table['3أكبر_قيمة'] = Table.apply(lambda row: col1_values[i] if col2_values[i]==0 else col2_values[i] if 0 < col2_values[i] <= 50 else None, axis=1) فهذا يحافظ على القيم دون إضافتها للجدول. اما هذا الكود محتاج بعض التعديلات: 1. لا تضف القيم مباشرة للمتغيرات repeated، بل احفظها في متغيرات مستقلة 2. استخدم المؤشر i للوصول لقيم المتغيرات داخل الدوال 3. حساب قيم الأعمدة خارج الدوال وليس داخلها repeated_values1 = [] repeated_values2 = [] col1_values = [] col2_values = [] for i in range(len(Table)): repeated_values1.append(df.iloc[6,3]) repeated_values2.append(df.iloc[3,4]) Table['إسم المادة'] = repeated_values1 Table['العام الدراسي'] = repeated_values2 Table.fillna(0, inplace=True) col1_values = Table.iloc[:, [5,6]].max(axis=1) col2_values = Table.iloc[:, [10,11]].max(axis=1).apply(lambda x: 50 if x > 50 else x) Table['3أكبر_قيمة'] = Table.apply(lambda row: col1_values[i] if col2_values[i]==0 else col2_values[i] if 0 < col2_values[i] <= 50 else None, axis=1)
  24. لابد اولا من فهم ما يلي: - Dependency Injection: هنا يتم حقن تابع الـ Project كائن داخل الوظيفة، بدلاً من اننا نقوم بإنشائه داخل الوظيفة. - Route Model Binding: عندما نضع معلمة من نوع Model كـ Project في المسار، فإن Laravel يقوم تلقائياً بالبحث عن السجل المطابق للـ id وتمريره. أي أن لارافيل يقوم بالبحث بنفسه وتمرير النموذج المطلوب دون أن نحتاج للقيام به والافتراضي لها هو الid . مثال: Route::get('/project/{project}', function (Project $project) { return $project->name; }); هنا project سيحتوي مباشرة على البيانات بدون الحاجة لاستدعاء find. في المقابل لو استخدمنا: Route::get('/project/{id}', function ($id) { return Project::find($id)->name; }); فهنا سنقوم بالبحث يدويا. تستخدم هذه الطريقة عندما نريد أن يقوم لارافيل بالبحث تلقائيا دون الحاجة للقيام به يدويا. ويمكننا عمل Route Model Binding عن طريق اي حقل يكون unique, فهكذا يمكننا اخبار لارافل ان تفعل ال Route Model Binding لحقل ال slug Route::get('/projects/{project:slug}', 'ProjectController@show'); public function show(Project $project) { // يمكنك الوصول إلى حقول النموذج هنا باستخدام الـ slug $projectName = $project->name; $projectDescription = $project->description; // ... }
×
×
  • أضف...