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

Khaled Osama3

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

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

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

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

    1

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

  1. لقراءة سلسلة رمزية واستبدال أي حرف فيها بحرف آخر. وهذا هو الكود كامل: #include <iostream> #include <string> using namespace std; int main() { // قراءة السلسلة الرمزية cout << "أدخل سلسلة رمزية: "; string inputString; getline(cin, inputString); // استبدال الحرف char targetChar, replacementChar; cout << "أدخل الحرف الذي تريد استبداله: "; cin >> targetChar; cout << "أدخل الحرف البديل: "; cin >> replacementChar; // قم بتنفيذ استبدال الحرف for (char &c : inputString) { if (c == targetChar) { c = replacementChar; } } // طباعة السلسلة بعد الاستبدال cout << "السلسلة بعد الاستبدال: " << inputString << endl; return 0; } هذا البرنامج يقوم بقراءة سلسلة رمزية من المستخدم، ثم يطلب من المستخدم إدخال حرف يريد استبداله وحرف بديل. بعد ذلك، يتم تنفيذ عملية الاستبدال في السلسلة وطباعتها. يمكنك تغيير البرنامج حسب احتياجاتك الخاصة. إليك عينة بسيطة للمدخلات والإخراج: أدخل سلسلة رمزية: Hello, World! أدخل الحرف الذي تريد استبداله: o أدخل الحرف البديل: x السلسلة بعد الاستبدال: Hellx, Wxrld! في هذا المثال، تم إدخال سلسلة رمزية "Hello, World!"، وتم استبدال كل حرف "o" بالحرف "x". الناتج هو "Hellx, Wxrld!".
  2. أخي الكريم، سأحاول شرح الفرق بين الـ foreach والـ map في PHP و React بأسلوب بسيط: - في PHP الـ foreach مصمم بشكل خاص لتكرار عناصر المصفوفة والوصول إلى قيمتها وفهرسها داخل الحلقة. - أما الـ array_map فهو يقوم بتطبيق دالة معينة على كل عنصر بدلاً من مجرد الوصول إليه. - في React، لا يوجد ما يعادل الـ foreach. ولكن الـ map يقوم بنفس وظيفة الـ foreach إضافة إلى إمكانية تطبيق دالة على العناصر كما في array_map. - فهو يقوم بتكرار عناصر المصفوفة وإرجاع مصفوفة جديدة مع إمكانية تغيير قيمة العناصر أو إضافة بيانات جديدة. في PHP، الـ `foreach` تُستخدم عادة لتكرار العناصر في مصفوفة. يتيح لك ذلك الوصول إلى كل عنصر على حدة بسهولة والقيام بالعمليات المطلوبة. $array = [1, 2, 3, 4, 5]; foreach ($array as $value) { echo $value . '<br>'; } في React (وJavaScript بشكل عام)، `map` تستخدم عادة لتحويل مصفوفة من العناصر إلى عناصر جديدة. يمكن استخدامها لإنشاء قائمة من العناصر jsx const numbers = [1, 2, 3, 4, 5]; const doubledNumbers = numbers.map((number) => number * 2); // في JSX const listItems = doubledNumbers.map((number) => <li key={number}>{number}</li>); الاختلاف في الاستخدام يعود إلى الطريقة التي يتم فيها التعامل مع البيانات في كل لغة. في PHP، تكون العمليات عادةً مباشرة على البيانات، بينما في JavaScript وReact، يُفضل استخدام `map` للتلاعب بالبيانات وإنشاء هيكل JSX بشكل أنيق.
  3. بالطبع اخي ايمن حتي تعمل حمايه للبيانات يمكنك اتخاذ بعض الاجراءات 1. تجنب استخدام الإدخالات المباشرة: تجنب استخدام البيانات المدخلة مباشرة في استعلام SQL بدون فحص أو تنقية. يمكن استخدام `mysqli_real_escape_string` لتنقية البيانات. ومع ذلك، يُفضل استخدام Prepared Statements (البنيات الجاهزة) بدلاً من ذلك. $fname = mysqli_real_escape_string($conn, $_POST['fname']); $course_name = mysqli_real_escape_string($conn, $_POST['course_name']); $course_code = mysqli_real_escape_string($conn, $_POST['course_code']); $mid_exam = mysqli_real_escape_string($conn, $_POST['mid_exam']); $fir_exam = mysqli_real_escape_string($conn, $_POST['fir_exam']); $final = mysqli_real_escape_string($conn, $_POST['final']); $id_code = mysqli_real_escape_string($conn, $_POST['id_code']); 2. التحقق من البيانات: يمكنك فحص نوع البيانات المدخلة للتأكد من تناسبها مع نوع البيانات المتوقع. على سبيل المثال: if (!is_numeric($mid_exam) || !is_numeric($fir_exam) || !is_numeric($final)) { // رسالة خطأ } 3. التحقق من البيانات قبل الإدخال: قم بإجراء فحص على البيانات قبل تنفيذ الاستعلام SQL. يمكنك استخدام الشروط للتحقق من صحة البيانات. if (empty($fname) || empty($course_name) || empty($course_code) || empty($mid_exam) || empty($fir_exam) || empty($final) || empty($id_code)) { // رسالة خطأ } 4. استخدام Prepared Statements: يُفضل استخدام Prepared Statements لتجنب هجمات حقن SQL. في PHP، يمكنك استخدام `mysqli` بالتالي: $stmt = $conn->prepare("INSERT INTO student (fname, course_name, course_code, mid_exam, fir_exam, final, id_code) VALUES (?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param("sssssss", $fname, $course_name, $course_code, $mid_exam, $fir_exam, $final, $id_code); if ($stmt->execute()) { // تم الإدخال بنجاح } else { // خطأ في الإدخال } $stmt->close(); باستخدام Prepared Statements، سيتم التعامل بشكل صحيح مع البيانات وتجنب تأثير هجمات حقن SQL. وهذا هو الكود كامل بعد التحسين <?php include 'database.php'; include 'navbar.php'; if (isset($_POST['submit'])) { // تنقية البيانات باستخدام mysqli_real_escape_string $fname = mysqli_real_escape_string($conn, $_POST['fname']); $course_name = mysqli_real_escape_string($conn, $_POST['course_name']); $course_code = mysqli_real_escape_string($conn, $_POST['course_code']); $mid_exam = mysqli_real_escape_string($conn, $_POST['mid_exam']); $fir_exam = mysqli_real_escape_string($conn, $_POST['fir_exam']); $final = mysqli_real_escape_string($conn, $_POST['final']); $id_code = mysqli_real_escape_string($conn, $_POST['id_code']); // التحقق من صحة البيانات if (empty($fname) || empty($course_name) || empty($course_code) || !is_numeric($mid_exam) || !is_numeric($fir_exam) || !is_numeric($final) || empty($id_code)) { echo '<div class="alert alert-danger text-center w-25" role="alert"> الرجاء إدخال بيانات صحيحة </div>'; header("refresh:2;url=index.php"); exit(); } // استخدام Prepared Statements لتجنب حقن SQL $stmt = $conn->prepare("INSERT INTO student (fname, course_name, course_code, mid_exam, fir_exam, final, id_code) VALUES (?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param("sssssss", $fname, $course_name, $course_code, $mid_exam, $fir_exam, $final, $id_code); if ($stmt->execute()) { echo '<div class="alert alert-success text-center w-25" role="alert"> تم حفظ البيانات بنجاح </div>'; header("refresh:2;url=display.php"); } else { echo '<div class="alert alert-danger text-center w-25" role="alert"> حدث خطأ أثناء حفظ البيانات </div>'; echo mysqli_error($conn); } $stmt->close(); } ?>
  4. - الـ Closures هي دوال تمتلك إمكانية الوصول إلى السكوب الخارجي، أي المتغيرات والإعدادات التي كانت موجودة عند تعريفها. مثال: function outer() { let name = "John"; function inner() { console.log(name); } return inner; } let myFunction = outer(); myFunction(); // يطبع "John" - أما Prototypal Inheritance فهي التي تتبعها جافاسكريبت للوراثة. حيث أن الكائنات ترث من بعضها عبر الـ prototype chain. مثال: let person = { name: "John" }; let student = Object.create(person); student.level = "First year"; console.log(student.name); // يطبع "John" ولأن جافاسكريبت ليس لغة موجهة للكائنات، فهي لا تستخدم فكرة الكلاسات، بل تعتمد على هذه الطريقة. في جافاسكريبت، لا يوجد نظام كلاسي بالمعنى الذي يوجد في بعض اللغات الأخرى. بدلاً من ذلك، يتم الاعتماد على نظام Prototypal Inheritance الذي يسمح بتبادل السمات بين الكائنات بشكل فعّال. هذا يجعل البرمجة أكثر مرونة وإمكانية إعادة الاستخدام. يمكنك استخدام Prototypal Inheritance لبناء هياكل بيانات مرنة وتنظيم الكود بشكل أفضل، مما يسهل صيانة البرامج على المدى الطويل.
  5. تظهر حالة الـ 302 عادةً عندما يتم تحويل المستخدم من صفحة إلى أخرى. في حالة فشل تسجيل الدخول، يبدو أن Laravel يقوم بتحويل المستخدم إلى الصفحة الخاصة بتسجيل الدخول مرة أخرى، وذلك على الأرجح بسبب خطأ في البيانات المدخلة. لكن هناك بعض التحسينات التي يمكن إجراؤها لتجنب ظهور حالة 302 عند فشل تسجيل الدخول. 1. استخدام `attempt` لفحص بيانات تسجيل الدخول: بدلاً من استخدام `validate` يمكنك استخدام `attempt` لتبسيط الأمور وتجنب الرجوع إلى الـ view يدوياً عند فشل عملية التسجيل. قم بتغيير هذا الكود: if (!Auth::validate($credentials)) { $error = 'Neplatné údaje!'; return view('admin.login-form', compact('error')); } إلى: if (!Auth::attempt($credentials)) { $error = 'Neplatné údaje!'; return view('admin.login-form', compact('error')); } بعد تطبيق هذه التحسينات، يمكنك إعادة تشغيل التطبيق والتحقق مما إذا كانت المشكلة قد حُلت.
  6. يبدو أن هناك بعض الأخطاء في الكود، ولكن دعني أوضح لك كيفية حفظ الصورة في مجلد عام. يبدو أنك تستخدم Laravel، وهذا ممتاز. لكن، يجب عليك تصحيح الأخطاء التي تظهر في الكود الحالي. الخطأ الرئيسي يتعلق بالتعامل مع الملفات وتحديد المسار الصحيح. في الكود الخاص بك، قد تكون هناك مشكلة في التعامل مع متغير `$pages`، لأنه غير معرف في السياق الحالي. تصحيح الكود: public function store(Request $request) { $input = $request->validate([ 'pages_category_id' => 'required', 'name' => 'required', 'content' => 'required', 'thumbnail' => 'required|image', ]); // تحقق من وجود ملف الصورة في الطلب if ($image = $request->file('thumbnail')) { // حدد المسار الذي تريد حفظ الصورة فيه $destinationPath = 'uploads/pages/'; // قم بتوليد اسم فريد للصورة // الافضل استخدام date('YmdHis') لضمان ان الاسم فريد $imageName = date('Ymd') . "." . $image->getClientOriginalExtension(); // انقل الصورة إلى المسار المحدد $image->move(public_path($destinationPath), $imageName); // قم بتحديث قيمة الحقل 'thumbnail' في المتغير $input $input['thumbnail'] = $destinationPath . $imageName; } // لاحظ أننا قمنا بإعادة تعيين $input هنا بدلاً من أخطاء السطرين السابقين $input['content'] = strip_tags($request->content); // استخدام $input بدلاً من $request->all() Pages::create($input); return redirect('pages/list')->with('success', 'Success Add Page'); } تأكد من أن مجلد "uploads/pages/" قابل للكتابة من قبل الخادم، وأن جميع الأذونات اللازمة متاحة. كما أننا قمنا بتحديث اسم الحقل إلى 'thumbnail'. تأكد من أن اسم الحقل يتناسب مع الحقل الذي تريد حفظ الصورة فيه في جدول قاعدة البيانات.
  7. عند نشر مشروع Laravel على استضافة، يتعين عليك تنفيذ بعض الخطوات لضمان عمل التطبيق بشكل صحيح.فيما يلي أشهر خدمات الاستضافة: 1. استضافة مشروع Laravel على استضافة مشتركة: في حالة استخدامك لاستضافة مشتركة، يفضل أن تتصل بخدمة الدعم الفني للحصول على دعم بخصوص تنفيذ الأوامر. في كثير من الأحيان، يكون لديك واجهة تحكم (cPanel أو Plesk) حيث يمكنك استخدام أدوات إدارة قواعد البيانات لتنفيذ الأوامر. 2. استضافة على خوادم افتراضية أو خوادم خاصة: إذا كنت تستخدم خوادم افتراضية أو خوادم خاصة، يمكنك الاتصال بالخادم عبر SSH وتنفيذ الأوامر مباشرة. استخدم Terminal للوصول إلى خادمك وتنفيذ الأوامر المطلوبة. 3. استخدام استضافة سحابية مثل AWS أو DigitalOcean: في حالة استخدام خدمات السحابة، يمكنك الوصول إلى خادمك عبر SSH. بعد الاتصال بالخادم، قم بالتنقل إلى مجلد المشروع وتنفيذ الأوامر من خلال Terminal. 4. استخدام أدوات إدارة المشاريع مثل Laravel Forge: يمكنك استخدام أدوات إدارة المشاريع مثل Laravel Forge التي تقدم واجهة بسيطة لإدارة مشاريع Laravel على الخوادم. يمكنك تنفيذ الأوامر من خلال واجهة المستخدم أو استخدام خيارات تكوين خاصة. تتباين الخطوات بناءً على نوع الاستضافة التي تستخدمها. الاتصال بدعم الاستضافة أو استخدام SSH يمكن أن يكون الحلا الأمثل. استخدم الوثائق الرسمية لخدمة الاستضافة الخاصة بك للحصول على تفاصيل أكثر دقة.
  8. في ملف gallery.html يجب تغيير data-pos بدلاً من data.pos حيث أن تستدعيها بطريقه خاطئه في ملف ال javascript. في ملف slider.js يبدو أن هناك خطأ في الطريقة التي قمت بها بتحديد الدالة واستخدامها. var translateValue = "translateX(" + position * 25 + "%)"; وهذا هو الكود كامل بعد التعديل والتحسين var $links = $(".itemLinks"); $links.click(function (e) { $links.removeClass("active"); var clickedLink = $(e.target); var position = clickedLink.attr("data-pos"); var translateValue = "translatex(" + position * 25 + "%)"; $("#wrapper").css({ transform: translateValue }); clickedLink.addClass("active"); }); $links.eq(0).addClass("active"); استخدم .eq(0) بدلاً من indexing [] للحصول على العنصر الأول
  9. هناك بعض الاختلافات بين Laragon و XAMPP: - Laragon مخصص أكثر لمشاريع لارافال، بينما XAMPP أكثر شمولاً لمشاريع PHP عامة. - Laragon أسهل في الاستخدام وتثبيت الأدوات والمكونات الإضافية. - XAMPP أكثر شعبية ومتاحة لمنصات أخرى غير ويندوز، بينما Laragon مقتصر على ويندوز فقط. - Laragon يوفر بيئة تطوير متكاملة أكثر من XAMPP وتشمل أدوات متقدمة لتطوير الويب. أما بخصوص أمر php artisan serve فهو: يستخدم هذا الأمر لتشغيل خادم تطوير مدمج مع Laravel. يوفر روابط لطيفة مثل http://localhost:8000. يتيح لك العمل بسرعة على تطبيقك دون الحاجة إلى تكوين Apache أو Nginx. Apache: Apache هو خادم الويب الشهير ويستخدم على نطاق واسع. عند استخدام Apache، يمكنك تكوين مشروع Laravel للعمل معه. يستخدم عادة في بيئات الإنتاج. الفوائد من استخدام php artisan serve: سرعة التطوير: يمكنك البدء بسرعة في التطوير باستخدام php artisan serve دون الحاجة إلى تكوين خوادم خارجية. نصف التلقائي: يقوم Laravel بإعادة تحميل التغييرات تلقائيًا عند استخدام php artisan serve، مما يسهل عملية تطوير التطبيق. روابط لطيفة: يوفر php artisan serve روابط بسيطة ولطيفة تمكنك من الوصول إلى تطبيقك. يمكن استخدام كل من php artisan serve و Apache حسب الحاجة، اعتمادًا على سيناريوهات التطوير أو الاختبار.
  10. المشكلة التي تواجهها تحدث عندما تقوم بإدراج قيمة متغير داخل `input` في النموذج، حيث يجب أن تقوم بتضمين قيمة المتغير داخل علامات الاقتباس (`"`). في هذا السياق، يمكنك تعديل محتوى الـ `input` في النموذج ليكون كالتالي: <input type="text" class="form-control" name="fname" required value="<?php echo $fname ?>"> قمت بإضافة علامات الاقتباس حول `<?php echo $fname ?>`، وهذا يساعد في ضمان أنه عند طباعة القيمة في الـ `input`، يتم استخدام القيمة بكاملها، بما في ذلك الفراغات إذا كان هناك أي. بالنسبة لحماية مدخلاتك من حقن SQL، يفضل دائمًا استخدام استعلامات معلمة محددة (`prepared statements`) بدلاً من تضمين القيم مباشرة في الاستعلام. يمكنك استخدام ميزات mysqli المدمجة لتحقيق ذلك. لحماية طباعة HTML داخل `input`، يمكنك استخدام `htmlspecialchars` لتحويل الرموز الخاصة بـ HTML إلى ترميزها المقابل. على سبيل المثال: <input type="text" class="form-control" name="fname" required value="<?php echo htmlspecialchars($fname, ENT_QUOTES, 'UTF-8') ?>"> هذا يضمن أن أي رموز HTML غير آمنة يتم تحويلها بشكل صحيح لتجنب حقن HTML.
  11. وعليكم السلام ورحمة الله وبركاته، يمكنك تجربه الكود التالي: import os FolderName = "اسم_المجلد" FileName = "اسم_الملف.txt" # إنشاء المجلد إذا لم يكن موجوداً بالفعل os.makedirs(FolderName, exist_ok=True) # فتح الملف في وضع الكتابة ("w") داخل المجلد with open(os.path.join(FolderName, FileName), "w") as file: # يمكنك إضافة المحتوى إذا كنت ترغب في ذلك file.write("Hello, World!") print(f"تم إنشاء الملف {FileName} في المجلد {FolderName}.") استخدام الدالة os.path.join لبناء مسار الملف مع المجلد, هذا الكود يستخدم `os.makedirs` لإنشاء المجلد، وباستخدام `open` يتم إنشاء الملف داخله.
  12. السلام عليكم، لإنشاء حلقة تكرار على الكود الحالي، يمكننا استخدام حلقة `for` لتكرار العملية بناءً على عدد المرات التي نرغب في تكرارها. في هذا السياق، يبدو أن عدد المرات التي نرغب في تكرار القيمة هو عدد صفوف الإطار (DataFrame). مثال # استيراد مكتبة pandas import pandas as pd # قراءة البيانات من ملف إكسل df = pd.read_excel('اسم_الملف.xlsx') # إنشاء قائمة لتخزين القيم المكررة repeated_values = [] # حلقة تكرار على صفوف الإطار for i in range(len(df)): # اختيار القيمة من الخلية المطلوبة (في هذا المثال، خلية في الصف الحالي) selected_value = df.iloc[i, 8] # يجب تعديل الرقم 8 حسب الموقع الصحيح للخلية # إضافة القيمة المحددة إلى القائمة مرة أخرى (تكرارها) repeated_values.append(selected_value) # إنشاء عمود جديد في الإطار يحتوي على القيم المكررة df['new_column'] = repeated_values # طباعة الإطار للتحقق print(df)
  13. المدى يحدد مكان تواجد وصول المتغيرات في برنامجك. 1. Global Scope: المتغيرات في الـ Global Scope تكون متاحة في كل مكان في البرنامج، سواء داخل functions او خارجها. يمكن الوصول إلى محتويات Global Scope من أي مكان آخر في الكود. var globalVar = "I'm global!"; function exampleFunction() { console.log(globalVar); // result = "I'm global!" } exampleFunction(); console.log(globalVar); // result = "I'm global!" 2. Function Scope: المتغيرات في الـ Function Scope تكون محدودة ب fucntion التي تم تعريفها فيها. يعني أن المتغير لا يمكن الوصول إليه خارج الدالة. function exampleFunction() { var localVar = "I'm local!"; console.log(localVar); // result = "I'm local!" } exampleFunction(); console.log(localVar); // سيؤدي إلى خطأ، لأن المتغير ليس متاحًا هنا 3. Block Scope: المتغيرات في الـ Block Scope تكون محدودة بالأقواس `{}` التي تحتوي عليها، كما في الـ if والـ for. هذا النوع من المدى تم إضافته في ECMAScript 6 (ES6). if (true) { let blockVar = "I'm inside a block!"; console.log(blockVar); // result = "I'm inside a block!" } console.log(blockVar); // سيؤدي إلى خطأ، لأن المتغير ليس متاحًا هنا السكوب مهم جدا لفهم عمل جافاسكريبت، وخاصة لمبتدئين يجب فهمه جيدا لتجنب أخطاء عديدة. الفهم الجيد للـ Block Scope مهم مع ES6. قد يكون ذلك مبدئيًا معقدًا، ولكن مع التمارين والتطبيق، ستصبح هذه المفاهيم أكثر وضوحًا.
  14. السودكود هو طريقة لوصف الخطوات التي يقوم بها برنامج ما بطريقة تشبه اللغة البرمجية، ولكن بدون استخدام أي لغة محددة, إنه ليس لغة برمجة فعلية، بل هو تمثيل أكثر تجريدًا للخوارزمية أو العمليات المخطط لتنفيذها. يهدف إلى جعل فهم الخوارزميات أسهل للمبرمجين والمستخدمين الآخرين الذين قد لا يكونون ملمين بتفاصيل البرمجة. كما انه يستخدم في مرحلة التصميم: يستخدم لتوضيح كيفية عمل البرنامج خلال مرحلة التصميم. يساعد في فهم وتفاوض الخوارزميات قبل تحويلها إلى لغة برمجة و مرحله التدريس والتواصل: يُستخدم في الشروح التعليمية وورش العمل لتبسيط الأفكار والخوارزميات، خاصةً مع الطلاب والمبتدئين في مجال البرمجة. لنفترض أننا نريد كتابة برنامج يطبع"Hello World" خمس مرات. باستخدام السودكود يمكننا كتابة ما يلي: Start For loop from 1 to 5: Print "Hello World" End هذا يوضح الخطوات بشكل مفهوم ومنطقي دون استخدام أي لغة معينة. ثم يمكن ترجمته لاحقاً إلى لغات مثل بايثون أو سي++ أو جافا. فهو مفيد لشرح وفهم الخوارزمية قبل البدء بالتطوير.
  15. ابدأ بشيء بسيط مثل عمل API لتسجيل دخول وتسجيل خروج المستخدمين. هذا شيء أساسي في كل مشاريع الويب. أو عمل API لإدارة قائمة مفردات مثل قائمة المدن أو الدول (CRUD). يمكنك إضافة وتحديث وحذف بيانات بسيطة. تخيل مشروع صغير مثل موقع لتقييم الأفلام أو المطاعم ثم تخيل البيانات والعمليات التي ستحتاجها. ابدأ بسيطاً مثل إنشاء مستخدمين وإضافة تقييمات. ثم تطويره تدريجيا. لا تخف من الخطأ. ابدأ وتعلم من الأخطاء. المهم أن تكتسب الخبرة بالتطبيق العملي. المهم البدء بشيء بسيط ومتواضع ثم التحسين تدريجيا. وليكن انك اخترت "تقييم الافلام" ولتكن اول خطوه هي انشاء حساب ثم طور ميزه تسجيل الدخول, والخطوه الثانيه انشاء جدول الافلام (CRUD) = Create, Read, Update, Delete ثم طور ميزة عرض قائمة الأفلام, والخطوه الثالثه ميزة إضافة تقييم فيلم بواسطة مستخدم معين. لا تنسي : اختبر كل ميزة بدقة قبل الانتقال للتالية, تابع بإضافة ميزات جديدة مثل تحرير التقييمات أو حذفها, استمر بتحسين وتطوير المشروع بشكل مستمر. توكل على الله وبدأ بالخطوة الأولى. مع المثابرة ستتقن العمل بهذا المشروع. إذا احتجت أي مساعدة فلا تتردد.
  16. الاستعلام الحالي يبحث فقط عن الطلاب المسجلين في مقررين محددين، لكن للبحث عن الطلاب الذين يدرسون جميع المقررات المحددة هناك يلزم تعديل الاستعلام لكي يتمكن من العثور على الطلاب المسجلين في جميع المقررات المذكورة، بدلا من البحث عن مقررين فقط. <?php $host="localhost"; $user="root"; $pass=""; $db="res"; $con=mysqli_connect($host,$user,$pass,$db); ?> <div align='center'> <form action='' method='post'> <input type='text' name='search'><br> <input type='text' name='search1'><br> <input type='text' name='search2'><br> <input type='text' name='search3'><br> <input type='submit' name='btn_search' value='Search'> </form> <?php if (isset($_POST["btn_search"])) { ?> <table border='5'> <tr> <th>رقم المتدرب </th> <th>اسم المتدرب</th> <th>التخصص </th> <th>المعدل </th> <th>رمز المقرر </th> <th>اسم المقرر </th> <th>الواحدات المعتمدة </th> </tr> <?php $str = $_POST["search"]; $str1 = $_POST["search1"]; $str2 = $_POST["search2"]; $str3 = $_POST["search3"]; $sh=mysqli_query($con, "SELECT id_trainee, name, specialty, gpa, ramz, name_mogrr, credit FROM `tr1` WHERE id_trainee LIKE '%$str%' AND ramz IN ('$str', '$str1', '$str2', '$str3') GROUP BY id_trainee HAVING COUNT(DISTINCT ramz) = 4"); while($row = mysqli_fetch_array($sh)){ ?> <tr> <td> <?php echo $row['id_trainee']?></td> <td> <?php echo $row['name']?></td> <td> <?php echo $row['specialty']?></td> <td> <?php echo $row['gpa']?></td> <td> <?php echo $row['ramz']?></td> <td> <?php echo $row['name_mogrr']?></td> <td> <?php echo $row['credit']?></td> </tr> <?php } } ?> </table> </div> هذا التعديل يستخدم `GROUP BY` مع `HAVING COUNT(DISTINCT ramz) = 4` للبحث عن الطلاب الذين لديهم جميع المقررات المحددة.
  17. يمكنني ان اقترح اليك اكثر من حل من الممكن ان يكون يسببوا المشكله 1 - حاول تنفيذ الامر التالي, يمكن أيضًا مسح ذاكرة التخزين المؤقت لـ Laravel عن طريق تشغيل php artisan optimize:clear كثيرًا. 2 - حاول تنفيذ الاوامر التالية, npm install ثم npm run build ثم npm run dev. اذا لم تحل المشكله حتي الان اذن هذه مشكله استخدام اصدار قديم لل Node.js او اصدار قديم لل npm يمكنك تحديثه عن طريق هذا الامر npm install -g npm@latest ثم جرب تسطيب الحزمه مجددا
×
×
  • أضف...