-
المساهمات
1296 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عبد الوهاب بومعراف
-
لتحقيق هذا النوع من التحكم في الوصول عادة نقوم باستخدام كلا من نظام التوثيق (Auth) وMiddleware يمكن استخدام نظام التوثيق لتحديد من هو المستخدم (مدير أو طالب) وعادة ما يتم ذلك عند تسجيل الدخول بعد ذلك يمكنك تخزين نوع المستخدم في الجلسة أو في التوكن. كما يمكن استخدام Middleware للتحقق من نوع المستخدم قبل الوصول إلى أجزاء معينة من التطبيق فيقوم ال Middleware بفحص إذا كان المستخدم يمتلك الصلاحيات اللازمة للوصول إلى صفحة معينة أو تنفيذ إجراء معين. سأسترسل في الطريقة عبر مثال توضيحي، أولا تقوم بإنشاء Middleware للتحقق من نوع المستخدم: php artisan make:middleware CheckRole ثم داخله نضع التالي، وفي الأخير نعيد المستخدم الذي لا يمتلك أي صلاحيات إلى الصفحة الرئيسية: public function handle($request, Closure $next, $role) { if (auth()->check() && auth()->user()->role == $role) { return $next($request); } return redirect('/home'); } الخطوة التالية هي التسجيل في Kernel من خلال تسجيل Middleware في app/Http/Kernel.php هكذا: protected $routeMiddleware = [ 'role' => \App\Http\Middleware\CheckRole::class, ]; وهذا نموذج لاسخداماته في الRoutes: Route::group(['middleware' => ['role:admin']], function () { // المسارات الخاصة بالمدير }); Route::group(['middleware' => ['role:student']], function () { // المسارات الخاصة بالطالب });
-
كل شيء ممكن لذا حاولي التركيز على التدريب العملي والمشاريع من خلال البحث عن فرص التدريب (Internships) في الشركات المحلية أو عبر الإنترنت فهذه الفرص تساعدك على تعلم كيفية العمل في بيئة مهنية والاستفادة من خبرة العمل ضمن الفريق مع الاهتمام ببناء ملف أعمال يعرض مشاريعك الشخصية والمشاريع التي شاركت فيها و يجب أن يتضمن ذلك مشاريع تستخدم لغة Python وC++ وبعض التقنيات الأخرى مثل تحليل البيانات، التعلم الآلي (Machine Learning)، أو الذكاء الاصطناعي (AI) بعدها شاركي أعمالك على GitHub وأنشئي حسابا على LinkedIn لعرض خبراتك ومهاراتك. ورحلة التعلم لا تنتهي لذا استمري في تعلم الأدوات والمنصات التي تستخدم في علم البيانات مثل NumPy، Pandas، Matplotlib، Scikit-Learn، TensorFlow، وPyTorch. يمكنك تجربة العمل ضمن منصات العمل الحر كمستقل وخمسات عبر هذه الروابط: مستقل و خمسات. العمل الحر مدونة مستقل و دروس و مقالات في العمل الحر أكاديمية حسوب كما يمكنك أيضا متابعة منصة بعيد فهي منصة تسمح للشركات بتقديم عروض للعمل عن بعد.
-
وعليكم السلام. الـ int في لغة البرمجة هو نوع بيانات (Data Type)، ويمكن اعتباره class فكل نوع بيانات في بايثون، مثل int للأعداد الصحيحة، وfloat للأعداد العشرية، وstr للنصوص، يُعتبر كلاس. وبالتالي، يمكن إنشاء كائنات من هذه الأنواع لكنه ليس بدالة ونوع البيانات هذا يمثل الأعداد الصحيحة (integers) لهذا تم أخذ أول ثلاث أحرف int لتسمية هذا النوع ويستخدم لتخزين القيم العددية أما ال class فهي كائنات يمكن أن تحتوي على خصائص (attributes) وطرق (methods). أما الدالة فهي مجموعة من التعليمات التي تؤدي وظيفة معينة، ويمكن أن تأخذ مدخلات وتعيد نتائج. وهذه المقالة شاملة وتشرح جميغ الأنواع:
- 3 اجابة
-
- 1
-
-
بايثون تفسر الأوامر في وقت التشغيل مما يعني أن الكود يترجم سطر بسطر أثناء التنفيذ، و هذا يضيف طبقة إضافية من العمل بالمقارنة مع لغات تترجم بالكامل قبل التشغيل، كما أنها لغة ديناميكية مما يعني أنها تدعم تغييرات في وقت التشغيل مثل تغيير أنواع المتغيرات، و هذا يتطلب عمليات تحقق إضافية أثناء التشغيل. و اللغات المفسرة مثل بايثون تسهل عملية التطوير لأنها لا تتطلب وقت ترجمة طويل، حيث يمكن للمطورين تجربة الكود بشكل أسرع، و غالبا ما توفر مرونة أكبر في التعامل مع الكود، مثل القدرة على تشغيل الأوامر التفاعلية مباشرة، كما أنه ليس كل التطبيقات تحتاج إلى الأداء العالي الذي توفره اللغات المترجمة، في بعض الأحيان سهولة التطوير والصيانة تكون أكثر أهمية من سرعة التنفيذ، فكل نوع من اللغات له استخداماته ومميزاته بناء على احتياجات المشروع.
- 5 اجابة
-
- 1
-
-
حاول استخدام مكتبة time لتنفيذ تأخير، ومكتبة os لتنفيذ الأوامر، و يمكنك أن تبرمجه على حسب نظام التشغيل الخاص بك لأن الأمر يختلف بينهم بهذا الشكل: import os import time time.sleep(5) if os.name == 'nt': # ويندوز os.system('cls') else: # لينكس/ماك os.system('clear')
- 6 اجابة
-
- 1
-
-
بما أنك ما زلت في عمر 15 عاما، لديك الوقت لتطوير مهاراتك تدريجيا، فالذكاء الإصطناعي يعتمد بشكل كبير على بايثون و بالتالي يجب عليك تعلمه أولا و من ثم الإنتقال لهذا المجال، و بما أنك تعرف في الرياضيات، هذا جيد جدا، فالذكاء الاصطناعي يعتمد بشكل كبير على الرياضيات، خصوصا في مجال التعلم الآلي، فاستمر في تطوير مهاراتك الرياضية. بعد إنتهائك من دورة البايثون يمكنك الإنتقال إلى دورة الذكاء الإصطناعي و التي بدورها أيضا تحتوي على مسار خاص بالبيثون الذي سيساعدك على التقدم أكثر في هذا المجال، و ستتعلم بأسلوب عملي وشيق الخوارزميات والمفاهيم البرمجية وراء تحليل البيانات Data Analysis وتمثيلها مرئيا، وتعلم الآلة Machine Learning والتعلم العميق Deep Learning وغيرها، وستكون تجربتك التعليمية مرتكزة على ممارسة ما تتعلمه على مشاريع حقيقية تستخدم في سوق العمل؛ مما يؤهلك للمنافسة بقوة في هذا المجال.
- 3 اجابة
-
- 1
-
-
التعليم الجامعي قد يوفر لك أساسا قويا في العلوم الأساسية للهندسة البرمجية، مثل الخوارزميات، وهندسة البرمجيات، والتصميم المنطقي كما أن هذه المفاهيم الأساسية تستمر في تطبيقها في الممارسة المهنية، حتى لو تطورت التقنيات والأدوات. ولكن سوق العمل يتطلب مهارات عملية إضافية لا يتم تغطيتها بالكامل في الدراسة الجامعية، مثل خبرة العمل الفعلي، والتواصل، وحل المشكلات، وإدارة المشاريع لذا فإن الخبرة العملية والتدريب الإضافي مهمان لتطوير هذه المهارات. والتعليم الجامعي يعد بداية الرحلة المهنية فبعد التخرج ستحتاج إلى استمرار التعلم والتطور المهني عبر التدريب والتطوير الذاتي لأن التعليم الجامعي لا يمكن أن يوفر كل ما تحتاجه على الفور لسوق العمل. كما أن الشهادة الجامعية تعطيك الأساس والمصداقية المطلوبة لدى أصحاب العمل. ولكن عليك أيضا أن تواصل تطوير نفسك وإثبات قدراتك العملية. لذا فالخلاصة هي أن التعليم الجامعي يوفر لك أساسا قويا، ولكن عليك أن تكمل هذا التعليم بالخبرة والتطوير المستمر لتكون مهيئًا بشكل كامل لسوق العمل ويعد هذا هو الطريق الأمثل للوصول إلى النجاح المهني.
-
إحدى الطرق تتمّ عبر إنشاء قاعدة بيانات SQL جديدة ثم إنشاء جدول جديد مطابق لتركيب بيانات ملف CSV الخاص بك مع التأكد من تحديد أنواع البيانات المناسبة لكل عمود عبر استيراد ملف CSV إلى جدول SQL: يمكنك استخدام أداة واجهة المستخدم الرسومية في قاعدة البيانات. استخدام أداة مثل phpMyAdmin أو SQLWorkbench. كتابة استعلام SQL لتحميل البيانات من ملف CSV إلى الجدول. ومن فوائد تحويل البيانات من CSV إلى SQL أنّ معالجة البيانات ستكون بكفاءة فقواعد البيانات SQL توفر إمكانيات أكبر في تخزين وإدارة البيانات مقارنة بملفات CSV، مما يسهل إجراء استعلامات واستخراج بيانات بحيث يمكّن من تعريف قيود وتأكيدات على البيانات لضمان سلامتها وصحتها وقواعد البيانات مصممة للتعامل مع كميات كبيرة من البيانات بكفاءة، بينما ملفات CSV لها قيود في هذا الجانب. بالنسبة للمشاريع الحقيقية، غالبا ما يتم استخدام قواعد البيانات SQL كمخزن رئيسي للبيانات، بينما قد تستخدم ملفات CSV لأغراض معينة كنقل البيانات أو التحليل الأولي وهذا كله يعتمد على طبيعة المشروع ومتطلباته. أما في مجال تعلم الآلة والتعلم العميق، يمكن استخدام ملفات CSV كمصدر أولي للبيانات لإجراء التحليلات والتجارب الأولية ومن ثم يمكن استيراد هذه البيانات إلى قواعد بيانات SQL لمزيد من المعالجة والتحليل المتقدم.
- 7 اجابة
-
- 1
-
-
أعتقد أنّ المشكلة قد تكون في طريقة بناء URL لطبقات الرادار والأقمار الصناعية هنا: var tileLayer = L.tileLayer(baseUrl + radarData.path + "/256/{z}/{x}/{y}.png", { opacity: 0.5 }); و var tileLayer = L.tileLayer(baseUrl + satelliteData.path + "/256/{z}/{x}/{y}.png", { opacity: 0.3 }); لذا يجب تعديل هذه الأسطر لتتوافق مع الصيغة الصحيحة لـ RainViewer API والصيغة الصحيحة هي: var tileLayer = L.tileLayer(baseUrl + radarData.path + "/{z}/{x}/{y}/2/1_1.png", { opacity: 0.5 }); و var tileLayer = L.tileLayer(baseUrl + satelliteData.path + "/{z}/{x}/{y}/2/1_1.png", { opacity: 0.3 }); وهذا وفقا لتوثيق RainViewer API وقد يكون السبب في عدم تحميل البيانات بشكل صحيح من API الخاص بـ RainViewer أو عدم إضافة طبقات الخريطة بشكل صحيح إلى عنصر الخريطة.
- 1 جواب
-
- 1
-
-
وعليكم السلام. حاليا وفي الوقت الراهن لا توجد دورة مخصصة للأمن السيبراني، لكن يمكنك الاستفسار مباشرة مع مركز دعم الأكاديمية للاطلاع على أيّ جديد من هنا: مركز مساعدة أكاديمية حسوب. بداية عليك بتعلم اللغات البرمجية المهمة للأمن السيبراني كبايثون وتعلم مختلف أساسيات الشبكات كبروتوكولات TCP / IP و DNS و DHCP و HTTP و HTTPS و SSL / TLS ودراسة المفاهيم الأساسية للأمن السيبراني، ومنها أنواع الهجمات والأدوات المستخدمة فيها وكيفية تحليل الثغرات وإصلاحها وتحديد مجالات الأمن السيبراني التي تهمك والتخصّص فيها، مثل الهجمات الاجتماعية والاختراق والحماية من الفيروسات والبرمجيات الخبيثة وتطوير البرمجيات الآمنة جمعت لك بعض المقالات التي يمكن أن تفيدك في هذا المجال:
-
لا داعي للقلق، فبعد إكمالك للدورة بإذن الله ستتمكن من العثور على فرص عمل، لأن الكثير من المشاريع التي تم تطويرها سابقا لا تزال تعمل على إصدارات أقدم مثل Laravel 9 والشركات عادة لا تنتقل فورا إلى أحدث إصدار من Laravel إلا إذا كانت هناك حاجة قوية لذلك، لذا ستجد بالتأكيد فرصا للعمل في مشاريع تستخدم إصدارات أقل. لكن هذا الأمر لا يعني أن نستغني عن مواكبة التحديثات والتطورات في هذه اللغة فحتى بعد إكمال الدورة قد يتمّ تحديثها من قبل فريق الأكاديمية وأنصحك بالاطلاع على أي تحديثات تطرأ بين الفينة والأخرى، حتى تكون جاهزا للتعامل مع أي مشروع جديد أو حتى لترقية المشاريع الحالية. التحديثات غالبا ما تأتي بتحسينات كبيرة كما أنّ معرفة الإصدارات الأحدث سيجعلك مرشحا أقوى في سوق العمل. كما أنّ فيديوهات الأكاديمية في قناة اليوتيوب تضع فيديوهات حول إختلافات هذه الإصدارات:
-
دالة ToLower() يمكنك استخدامها فهي متوفرة ضمن فئة string وهذه الدالة تقوم بتحويل كل الحروف الكبيرة في السلسلة النصية إلى حروف صغيرة كما تريد، وهذا مثال على كيفية عملها: using System; class Program { static void Main() { string originalText = "HELLO WORLD!"; string lowerCaseText = originalText.ToLower(); Console.WriteLine("Original Text: " + originalText); Console.WriteLine("Lower Case Text: " + lowerCaseText); } }
-
أرجو في قادم المرات إن كان سؤالك متعلقا بإحدى دورات الأكاديمية أن تقوم بإدراجه أسفل كلّ درس استصعب عليك فهمه أو لديك استفسار حوله، أين ستجد صندوقا للتعليقات مثل الذي هنا، يمكنك إرفاق مجلدات مشروعك أو لقطات شاشة وإرفاق الاستفسار الذي لديك وسنجيبك بكلّ صدر رحب. بالنسبة لسؤالك، فالرقم 1 الموجود في resolve(1) هو القيمة التي يتم تمريرها عند نجاح الـPromise وهذا الرقم هو الذي يتم إرساله عند استدعاء الدالة resolve بعد مرور الوقت المحدد (في هذه الحالة، بعد 1000 ميلي ثانية أو 1 ثانية). أما إذا قمت بحذف الرقم 1 تماما، فإن الكود قد لا يعمل كما هو متوقع، لأن الدالة resolve ستستدعى بدون أي قيمة وبشكل افتراضي، إذا لم تمرر أي قيمة إلى resolve، سيتم تمرير undefined. لذلك إذا كنت بحاجة إلى إزالة الرقم 1، عليك التأكد من أن الكود الذي يستخدم الـPromise قادر على التعامل مع القيمة undefined. مثلا في هذا المثال، resolve ستستدعى بدون أي قيمة أي بعد 1 ثانية وإذا كانت هناك عملية تعتمد على القيمة التي تمرر من resolve، قد تتعطل هذه العملية إذا لم تكن تتوقع الحصول على undefined: new Promise((resolve, reject) => { setTimeout(() => resolve(), 1000); })
-
أرجو في قادم المرات إن كان سؤالك متعلقا بإحدى دورات الأكاديمية أن تقوم بإدراجه أسفل كلّ درس استصعب عليك فهمه أو لديك استفسار حوله، أين ستجد صندوقا للتعليقات مثل الذي هنا، يمكنك إرفاق مجلدات مشروعك أو لقطات شاشة وإرفاق الاستفسار الذي لديك وسنجيبك بكلّ صدر رحب.
-
عدم القدرة على استدعاء مكتبة speech_recognition على الرغم من تثبيتها عادة ما تكون نتيجة لعدم استخدام البيئة الصحيحة حيث تم تثبيت المكتبة لهذا قد يؤدي ذلك إلى عدم التعرف على المكتبة من قبل VSCode. لذلك تحقق من تثبيتها عبر الأمر: pip show SpeechRecognition وتأكد من استخدام البيئة الصحيحة وأنك ضمن البيئة الصحيحة التي تم تثبيت المكتبة فيها، يمكنك تنشيط البيئة على الطرفية أين مسار مجلد المشروع باستخدام: .\venv\Scripts\activate ثم استيرادها بهذه الكيفية: import speech_recognition as sr إن استمر المشكل قم بحذف ثم إعادة تثبيتها داخل البيئة الافتراضية: pip uninstall SpeechRecognition pip install SpeechRecognition بما أنك قمت بالمشاركة معنا أول مرة أرجو في قادم المرات إن كان سؤالك متعلقا بإحدى دورات الأكاديمية أن تقوم بإدراجه أسفل كلّ درس استصعب عليك فهمه أو لديك استفسار حوله، أين ستجد صندوقا للتعليقات مثل الذي هنا، يمكنك إرفاق مجلدات مشروعك أو لقطات شاشة وإرفاق الاستفسار الذي لديك وسنجيبك بكلّ صدر رحب.
-
البرمجة الخاصة للمتجر الإلكتروني باستخدام لارافل أو غيرها من اللغات وأطر العمل هي مناسبة إذا كانت لديك متطلبات خاصة أو تحتاج إلى تخصيص عميق في المتجر، بينما استخدام المواقع الجاهزة يبقى خيارا جيد إذا كنت ترغب في إطلاق متجر بسرعة وسهولة دون تعقيدات البرمجة فمن ناحية البرمجة بلارافل فستحظى بميزات وتفضيلات كالمرونة في تخصيص المتجر مما مما يتيح لك بناء ميزات فريدة وفقا لاحتياجاتك الخاصة، لكن هذا قد يتطلب تعقيدا لأنه يحتاج إلى معرفة عميقة بلغة PHP وأساسيات البرمجة بالإضافة إلى فهم بنية الإطار كما أنّه قد تكون التكلفة أعلى نظرا لاحتياجك إلى مطورين أو فريق تقني متخصص للبرمجة والصيانة. بينما إنشاء متجر إلكتروني باستخدام منصات E-Commerce فيمكن استخدامها من ناحية السهولة فتوفر منصات مثل Shopify مثلا واجهات استخدام سهلة، مما يمكّن حتى المبتدئين من إنشاء متجر بسرعة كما يمكنك إطلاق المتجر في وقت قصير دون الحاجة إلى كتابة الكثير من الأكواد وغالبا ما تتضمن هذه المنصات دعما مباشرا وتحديثات تلقائية، مما يسهل عليك التركيز على المبيعات كما أن تكاليف بدء التشغيل قد تكون أقل، ولكن هناك رسوم شهرية أو نسبة من المبيعات.
-
قم بإضافة الحقل في نموذج الـ Livewire عبر تحديث النموذج الذي تستخدمه لتحميل الصورة فأنت لم تقدم معلومات أو شيفرة توضح النموذج الذي تعمل عليه، حسنا لا بأس، قم بإضافة الحقل كما أشرنا على هذا النحو: public $photo; protected $rules = [ 'photo' => 'image|max:1024' ]; ثم أضف حقل الإدخال لتحميل الصورة في ملف الـ Blade: <input type="file" wire:model="photo"> وبعد أن يتم تحميل الصورة، استخدم الوظيفة store لحفظها في public/storage، ثم احفظ الرابط في قاعدة البيانات وهذا مثال عملي على ذلك: public function store() { $this->validate(); if ($this->photo) { $path = $this->photo->store('photos', 'public'); Model::create([ 'photo_path' => $path, ]); } } وعندما تريد عرض الصور من قاعدة البيانات، استخدم الدالة Storage::url() للحصول على الرابط العام للصورة: <img src="{{ Storage::url($model->photo_path) }}" alt="صورة"> ثم قم بتشغيل الأمر: php artisan storage:link لإنشاء الرابط الرمزي.
-
يمكنك استخدام SSH لكنه يحتاج إلى خبرة، فأوّل خطوة هي الوصول إلى خادم SSH من خلال أدوات مثل mysqldump و scp أو rsync يمكنك فتح الطرفية وكتابة الأمر التالي: ssh username@yourserver.com بطبيعة الحال عليك أن تستبدل username باسم مستخدمك وyourserver.com بعنوان خادمك. بعدها استخدم الأمر mysqldump لإنشاء ملف احتياطي لقاعدة البيانات كالتالي: mysqldump -u db_user -p db_name > backup.sql كالعادة استبدل db_user باسم مستخدم قاعدة البيانات وdb_name باسم قاعدة البيانات وبعد إنشاء ملف backup.sql, يمكنك استخدام scp لنقله إلى جهازك لكن انتبه لهذا الأمر: scp username@yourserver.com:/path/to/backup.sql /local/path/ مع استبدال /path/to/backup.sql بالمسار الصحيح على الخادم و/local/path/ بالمسار على جهازك المحلي.
-
لفك تشفير هذا الملف، ستحتاجين إلى معرفة نوع التشفير المستخدم وأيضا مفتاح فك التشفير المناسب، يمكنك الاطلاع على هذه الشروحات التي ستفيدك:
-
يمكنك استخدام جافا سركيبت للتأكد من حذف الصورة عند تغيير الخيار من "طبيب" إلى "مهندس" وهذا مثال كامل للتعامل مع جافا سركيبت مع PHP: <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>تعديل المعلومات</title> <style> body { font-family: Arial, sans-serif; } .hidden { display: none; } </style> </head> <body> <form method="POST" enctype="multipart/form-data"> <label for="role">اختر الوظيفة:</label> <select id="role" name="role"> <option value="doctor">طبيب</option> <option value="engineer">مهندس</option> </select> <div id="imageUpload" class="hidden"> <label for="image">رفع الصورة:</label> <input type="file" id="image" name="image"> </div> <input type="submit" value="تعديل"> </form> <script> const roleSelect = document.getElementById('role'); const imageUploadDiv = document.getElementById('imageUpload'); const imageInput = document.getElementById('image'); roleSelect.addEventListener('change', function() { if (this.value === 'doctor') { imageUploadDiv.classList.remove('hidden'); } else { imageUploadDiv.classList.add('hidden'); imageInput.value = ''; // حذف الصورة عند التغيير } }); window.onload = function() { if (roleSelect.value === 'doctor') { imageUploadDiv.classList.remove('hidden'); } }; </script> </body> </html> فهنا الملف يحتوي على نموذج يتضمن select لاختيار الوظيفة و input لرفع الصورة كما استخدمنا كلاس hidden لإخفاء عنصر رفع الصورة، وعند تغيير الخيار في select، يتحقق مما إذا كان الخيار "طبيب" أو "مهندس" وإذا تم اختيار "مهندس" فسترى أنه يتم إخفاء عنصر رفع الصورة ويتم مسح قيمة الصورة.
-
الطرق تتعدّد وتختلف على حسب رغبتك، فأولا يجب عليك إنشاء قاعدة بيانات ولتكن MySQL بحيث تحتوي على جدولين مثلا كالتالي: جدول users (مع أعمدة id, name, email) posts (مع أعمدة id, user_id, title, content) ثم قم بإنشاء صفحة HTML بسيطة تتضمن نموذج بحث: <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>صفحة البحث</title> <style> body { font-family: Arial, sans-serif; margin: 20px; padding: 0; background-color: #f4f4f4; } .container { max-width: 600px; margin: auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } input[type="text"] { width: 100%; padding: 10px; margin: 10px 0; border: 1px solid #ddd; border-radius: 5px; } button { padding: 10px 15px; background: #5cb85c; color: white; border: none; border-radius: 5px; cursor: pointer; } button:hover { background: #4cae4c; } </style> </head> <body> <div class="container"> <h2>بحث عن بيانات</h2> <form action="search.php" method="POST"> <input type="text" name="query" placeholder="أدخل كلمة البحث..." required> <button type="submit">بحث</button> </form> </div> </body> </html> ثم أنشئ ملف search.php لمعالجة البيانات المرسلة من النموذج: <?php $servername = "localhost"; // اسم الخادم $username = "username"; // اسم المستخدم $password = "password"; // كلمة المرور $dbname = "database_name"; // اسم قاعدة البيانات // إنشاء اتصال $conn = new mysqli($servername, $username, $password, $dbname); // التحقق من الاتصال if ($conn->connect_error) { die("فشل الاتصال: " . $conn->connect_error); } // الحصول على كلمة البحث $query = $conn->real_escape_string($_POST['query']); // استعلام SQL للبحث في الجدولين $sql = "SELECT * FROM users WHERE name LIKE '%$query%' UNION SELECT * FROM posts WHERE title LIKE '%$query%' OR content LIKE '%$query%'"; $result = $conn->query($sql); if ($result->num_rows > 0) { // عرض النتائج while($row = $result->fetch_assoc()) { echo "نتيجة: " . $row['name'] . " - " . $row['title'] . "<br>"; } } else { echo "لا توجد نتائج."; } $conn->close(); ?> بعدها قم بفتح ملف index.html في المتصفح وأدخل كلمة البحث واضغط على الزر للبحث.
- 3 اجابة
-
- 1
-
-
إذا كنت تفكر في تعلم الأساسيات عبر تطبيقات الهاتف خلال الفترة الحالية، فهذا يمكن أن يكون خطوة مفيدة لتأسيس معرفة أولية عن اللغة. ولكن يجب أن تعلم أن التطبيقات على الهاتف تكون محدودة في العمق والشمولية مقارنة بالعمل على الحاسوب، بالنسبة للكورس على الأكاديمية، يمكنك أن تبدأ به حتى لو لم تكن لديك خلفية عن البرمجة أو بايثون، فالكورس يحتوي على كل الأساسيات ويبدأ من الصفر، مما يجعله كافيا حتى لو لم تكن لديك أي خبرة سابقة، و بهذه الطريقة ستحصل على منهج متكامل ومنظم يغطي كل ما تحتاجه.
- 2 اجابة
-
- 1
-
-
أرجوا وضع أسئلتك فقطهنا و سيتكفل المدربون بمساعدتك.
- 4 اجابة
-
- 1
-
-
يمكنك استخدام JavaScript للتحكم في العرض والإخفاء، حيث عندما يختار المستخدم 'انثى'، يظهر الـselect الثاني ويسمح للمستخدم بتحديد نوع المركز، أما إذا اختار 'ذكر'، فيظهر فقط الـselect الثالث الذي يسأل إذا كان المستخدم مديرا، ام الـselect الثالث يظهر دائما إذا تم تحديد الجنس، وإذا اختار المستخدم 'نعم'، يظهر حقل الصورة للرفع بهذا الشكل: <!-- الـselect الأول --> <select name="Cn" id="Cn" onchange="showSelect(this)"> <option value="">الجنس</option> <option value="انثى" <?php echo ($row['Cn'] == 'انثى') ? 'selected' : ''; ?>>انثى</option> <option value="ذكر" <?php echo ($row['Cn'] == 'ذكر') ? 'selected' : ''; ?>>ذكر</option> </select> <!-- الـselect الثاني (يظهر إذا كان الخيار 'انثى') --> <select id="na" name="nah" style="display: <?php echo ($row['Cn'] == 'انثى') ? 'block' : 'none'; ?>;" value="<?php echo $row['nah']; ?>"> <option value="">نوع المركز</option> <option value="المركز الاول" <?php echo ($row['nah'] == 'المركز الاول') ? 'selected' : ''; ?>>المركز الاول</option> <option value="المركز الثاني" <?php echo ($row['nah'] == 'المركز الثاني') ? 'selected' : ''; ?>>المركز الثاني</option> </select> <!-- الـselect الثالث (يظهر دائمًا بعد تحديد 'انثى' أو 'ذكر') --> <select id="am" name="aly" style="display:none;" value="<?php echo $row['aly']; ?>"> <option value="">هل انت مدير؟</option> <option value="نعم" <?php echo ($row['aly'] == 'نعم') ? 'selected' : ''; ?>>نعم</option> <option value="لا" <?php echo ($row['aly'] == 'لا') ? 'selected' : ''; ?>>لا</option> </select> <!-- قسم الصورة (يظهر إذا تم اختيار 'نعم' في الـselect الثالث) --> <div> <label id="zoo" style="display: none;">ارسل صورة:</label> <input type="file" id="img" name="file" style="display: none;" value="<?php echo $row['file']; ?>"> </div> <br> <script> function showSelect(select) { const naSelect = document.getElementById('na'); const amSelect = document.getElementById('am'); const zooLabel = document.getElementById('zoo'); const imgInput = document.getElementById('img'); // عرض الـselect الثاني فقط إذا كان الجنس 'انثى' if (select.value === 'انثى') { naSelect.style.display = 'block'; amSelect.style.display = 'block'; } else if (select.value === 'ذكر') { naSelect.style.display = 'none'; amSelect.style.display = 'block'; } else { naSelect.style.display = 'none'; amSelect.style.display = 'none'; zooLabel.style.display = 'none'; imgInput.style.display = 'none'; } // عرض قسم الصورة إذا كان المستخدم اختار 'نعم' amSelect.addEventListener('change', function() { if (amSelect.value === 'نعم') { zooLabel.style.display = 'block'; imgInput.style.display = 'block'; } else { zooLabel.style.display = 'none'; imgInput.style.display = 'none'; } }); } </script>
- 4 اجابة
-
- 1
-
-
ربما سيكون توجهك للإعتماد على htmx مع بعض الإضافات حل جيد لتحقيق أهدافك الحالية، لأنه يوفر لك وسيلة فعّالة لتطوير الواجهات الأمامية باستخدام HTML فقط مع تقليل الاعتماد على JavaScript التقليدي، وهو ما يتماشى مع رغبتك في تجنب ضعف القواعد والحدود في JavaScript، كما يتيح لك إضافة تفاعلات AJAX، وسحب المحتوى ديناميكيا، وإدارة التفاعل بشكل سلس، مما يسهل عليك بناء واجهات مستخدم تفاعلية. و لكن بما أن هدفك النهائي هو التخصص في الـ Backend، استمر في تعزيز مهاراتك في تقنيات مثل Node.js و Laravel و Django، والتي ستفيدك بشكل كبير في المستقبل، لأن في المشاريع الكبيرة ستحتاج إلى أطر عمل سريعة جدا و ممتازة لذا إجعل هذا الأمر كبداية للخوص أكثر في هذا الأمر.