لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 03/15/22 في كل الموقع
-
2 نقاط
-
لدي نص String بتنسيق mm-dd-YYYY (على سبيل المثال ، 3-14-2022) يتم إستخراجه من ملف txt، كيف يمكنني تحويله بشكل صحيح إلى كائن Date بتنسيق YYYY-mm-dd؟2 نقاط
-
بفرض أن لدي مصفوفة Array بالشكل التالي: $arr = ["One", "Two", "Three"]; وأريد أن أحول عناصر هذه المصفوفة إلى نص String واحد لتكون النتيجة كالتالي: "One, Two, Three"; لذلك قمت بعمل حلقة loop للمرور على كل عنصر من العناصر وتضيفه إلى متغير جديد: <?php $arr = ["One", "Two", "Three"]; $result = ""; foreach($arr as $element){ $result .= $element; $result .= ", "; } echo $result; // "One, Two, Three, " هل توجد دالة أفضل تقوم بتجميع عناصر مصفوفة array وتحويلها إلى نص String واحد؟2 نقاط
-
السلام عليكم ورحمة الله وبركاته، بعد لغة بايتون هل تنصحوني ب تعلم django لبرمجة الويب ? هل مجال برمجة مواقع الويب مربح ومطلوب في سوق الفريلانس؟ وماهي افضل المجالات اللي ممكن اتعلمها الان بعد تعلمي للغة بايتون، وتكون مطلوبة ف سوق الفريلانس ؟ وشكرا1 نقطة
-
بفرض لدي وحدة في بايوثن تحتوي دالة معينة واريد استدعاء تلك الدالة عن طريق اسمها فقط.. هل توجد طريقة لفعل ذلك؟ مثلا لو كان لدي دالة اسمها func داخل وحدة اسمها mod واريد ان استدعي هذه الدالة من خلال اسمها فقط.. كيف يمكن فعل ذلك؟1 نقطة
-
شفت فيديوهات كثير تشرح عن الرفع الى heroku لكن لما اجرب تظهر اخطاء كثيرة ممكن طريقة نشر التطبيق علما المشروع بيسط لا يحتوى على ملفات static و لا على ملفات media وانا وضعت كود html في الكلاس HttpRespons اي بدون صفحة html1 نقطة
-
سؤال بخصوص طريقة livewire mount () method ؟ بحسب التوثيق الرسمي تستخدم الطريقة لالغاء دالة البناء وتمرير أو حقن المعاملات الي العروض والغاء التلميح hinting . If for whatever reason, this automatic behavior doesn't work well for you, you can intercept parameters using the mount() method: In Livewire components, you use mount() instead of a class constructor __construct() like you may be used to. NB: mount() is only ever called when the component is first mounted and will not be called again even when the component is refreshed or rerendered. Like a controller, you can inject dependencies by adding type-hinted parameters before passed-in ones. الأن بداخل المشروع الذي أنفذة باستخدام نفس الطريقة لتمرير معامل id للمنتج والكوبون يحدث لدي الخطأ التالي : Missing required parameter for [Route: admin.editcoupons] [URI: admin/coupon/edit/{coupon_id}] [Missing parameter: coupon_id]. (View: F:\xampp\htdocs\mshmk_shop\resources\views\livewire\admin\admin-coupons-component.blade.php) <?php namespace App\Http\Livewire\Admin; use Livewire\Component; use App\Models\Coupon; class AdminEditCouponComponent extends Component { // خواص الصنف كوبون public $code; public $type; public $value; public $cart_value; public $coupon_id; public function mount($coupon_id){ $coupon = Coupon::find($coupon_id); $this->code = $coupon->code; $this->type = $coupon->type; $this->value = $coupon->value; $this->cart_value = $coupon->cart_value; $this->coupon_id = $coupon->coupon_id; } public function updated($fields){ $this->validateOnly($fields,[ 'code' => 'required|unique:coupons', 'type' => 'required', 'value' => 'required|numeric', 'cart_value' => 'required|numeric', ]); } public function updatecoupon(){ $this->validate([ //بعدما تتحقق من البيانات التي أدخلها المستخدم باستخدام التابع validate 'code' => 'required|unique:coupons', 'type' => 'required', 'value' => 'required|numeric', 'cart_value' => 'required|numeric', ]); //ثم قم بانشاء كائن جديد وتخزين قيمة البيانات المدخلة $coupon = coupon::find($this->coupon_id); $coupon->code = $this->code; $coupon->type = $this->type; $coupon->value = $this->value; $coupon->cart_value = $this->cart_value; // قم بحفظ البيانات بأستخدام التابع save $coupon->save(); //بعد ذلك قم بطباعه الرسالة التالية لجلسة المستخدم session()->flash('message','Coupon Has Been Updated Successfully!'); } public function render() { // دالة أعادة العرض الي المستخدم return view('livewire.admin.admin-edit-coupon-component')->layout('layouts.base'); } } // المسار Route::get('admin/coupon/edit/{coupon_id}',AdminEditCouponComponent::class)->name('admin.editcoupons'); // ملف العرض <div> <div class="container" style="padding: 30px 0;"> <div class="row"> <div class="col-md-12"> <div class="panel panel-default"> <div class="panel-heading"> <div class="row"> <div class="col-md-6"> Edit Coupon </div> <div class="col-md-6"> <a href="{{ route('admin.coupons')}}" class="btn btn-success pull-right"> All Coupons </a> </div> </div> </div> <div class="panel-body"> @if(Session::has('message')) <div class="alert alert-success" role="alert">{{ Session::get('message')}}</div> @endif <form class="form-horizontal" wire:submit.prevent='updatecoupon'> @csrf <div class="form-group"> <label class="col-md-4 control-label"> Coupon Code </label> <div class="col-md-4"> <input type="text" placeholder="Coupon Code" class="form-control input-md" wire:model='code' > @error('code') <p class="text-danger">{{$message}}</p> @enderror </div> </div> <div class="form-group"> <label class="col-md-4 control-label"> Coupon Type </label> <div class="col-md-4"> <select class="form-control"wire:model='type'> <option value="fixed">Select</option> <option value="fixed">Fixed</option> <option value="percent">Percent</option> </select> @error('type') <p class="text-danger">{{$message}}</p> @enderror </div> </div> <div class="form-group"> <label class="col-md-4 control-label"> Coupon Value </label> <div class="col-md-4"> <input type="text" placeholder="Coupon Value" class="form-control input-md" wire:model='value' > @error('value') <p class="text-danger">{{$message}}</p> @enderror </div> </div> <div class="form-group"> <label class="col-md-4 control-label"> Cart Value </label> <div class="col-md-4"> <input type="text" placeholder="Cart Value" class="form-control input-md" wire:model='cart_value' > @error('cart_value') <p class="text-danger">{{$message}}</p> @enderror </div> </div> <div class="form-group"> <label class="col-md-4 control-label"></label> <div class="col-md-4"> <button type="submit" class="btn btn-primary">Update</button> </div> </div> </form> </div> </div> </div> </div> </div> </div>1 نقطة
-
يمكنك تمرير خاصية ما إلى المكون عبر أولًا تعيينها كخاصية ضمن الصنف ثم الإشارة إليها من التابع mount كالتالي: <?php class AdminEditCouponComponent extends Component { public $coupon_id; ... public function mount(){ $coupon = Coupon::find($this->coupon_id); ... ^^^^^^^^^^^^^^^^ } } ثم عند استخدام المكون ضمن ملفات العرض view يجب تمرير ذلك التابع للمكون كالتالي <livewire:admin-edit-coupon-component :coupon_id="123"> ^^^^^^^^^^^^^^^^ // أو من متغير <livewire:admin-edit-coupon-component :coupon_id="$coupon_id"> ^^^^^^^^^^1 نقطة
-
لدي نص عبارة عن عنوان URL على النحو التالي: $url = "https://www.example.com/search.php?q=myquery"; كيف أحصل على مصفوفة من النص السابق بالشكل التالي: echo $result['q']; // myquery كيف أقوم بهذا الأمر في PHP؟1 نقطة
-
إن كان لديك عنوان URL مُخزن في متغير، فيمكنك تحليله وإستخراج query منه من خلال الدالة parse_url و parse_str بالشكل التالي: <?php $url = "https://www.example.com/search.php?q=myquery&abc=123"; // نستخرج الـ query من العنوان $query = parse_url($url, PHP_URL_QUERY); // q=myquery&abc=123 // نقوم بتحويل النص السابق إلى مصفوفة ترابطية key-value $queries = array(); parse_str($query, $queries); // يمكن إستخدام المصفوفة أو أحد المفاتيح منها بالشكل التالي echo $queries['abc']; // 123 echo $queries['q']; // myquery ملاحظة: بدءًا من الإصدار PHP 7.2 لا يُفضل استخدام الدالة parse_str() بدون المعامل الثاني لها، لأنها ستقوم في هذه الحالة بتحويل المفاتيح keys إلى متغيرات (q$ و abc$) ، وقد يقوم بعض المخترقين Hackers بإستغلال هذا الأمر في صالحهم ومحاولة إختراق الموقع. يمكنك الإطلاع على هذه المقالة لمزيد من المعلومات عن كلا الدالتين: أو من خلال موسوعة حسوب: الدالة parse_str() في PHP1 نقطة
-
الكود شغال تمام بس المشكله لما بضيف اكتر من مهمه بتروح المهمه القديمه بس انا بدي تضل يا ريت حدا يشوف الكود ويصححلي الخطأ ملف "To do list.html" <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="To do list.css"> <script src="To do list.js" defer></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> <body> <div class="container"> <div> <h1 class="h11">Task List</h1> <p class="p1">New task</p> <input type="text" class="input1"> <button class="btn1">ADD TASK</button> </div> <hr> <div> <h1 class="h12">Tasks</h1> <input type="text" class="input2" placeholder="Filter tasks"> <div class="container1" id="container1"> </div> <button class="btn2">CLEAR TASK</button> </div> </div> <script> </script> </body> </html> ملف "To do list.js" var input1 = document.querySelector(".input1"), text1 = document.querySelector(".p1"), btn = document.querySelector(".btn1"), input2 = document.querySelectorAll(".input2"), container = document.getElementById("container1"), content = document.querySelector(".content"), div = document.createElement("div"), div2 = document.createElement("div"), div1 = document.createElement("div"), p = document.createElement("span"), x2 = document.createElement("span") function tasks(value) { if (value.length < 1) { alert("Please enter a valid task"); } else { console.log(value); container.appendChild(div).appendChild(div1); div.classList.add("content"); div.appendChild(div2); p.innerText = value; p.classList.add("task"); div1.appendChild(p); x2.innerText = "✕"; x2.classList.add("x") div2.appendChild(x2) $(function strike() { $(".task").click(function() { $(this).toggleClass("strike"); }); $(".x").click(function() { $(this).parent().parent().remove(); }); }) } } window.onload = function() { $(function strike() { $(".task").click(function() { $(this).toggleClass("strike"); }); $(".x").click(function() { $(this).parent().parent().remove(); }); }) } btn.onclick = function() { tasks(input1.value); } input1.onfocus = function() { text1.classList.add("selected"); text1.classList.remove("unselected"); }; input1.onblur = function() { text1.classList.add("unselected"); text1.classList.remove("selected"); }1 نقطة
-
سابقًا كنت تقوم بإنشاء عنصر لوضع المهمة الجديدة ضمنه، وعند إضافة مهمة ثانية تقوم فقط بتعديل محتوى العنصر للمهمة السابقة وهذا خطأ، الصحيح في حالتك أن تقوم بإنشاء عناصر جديدة كليًا لكل مهمة جديدة وإضافتها لأسفل قائمة المهام بعد تعديل محتواها ليتضمن المهمة الجديدة1 نقطة
-
السلام عليكم.. عند حفظي للصورة باستخدام buffer يظهر هذا الخطأ : TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined at Function.from (buffer.js:330:9) تحويل الصورة الى base64 : $('#add-product').submit(function(e) { e.preventDefault() var image = $("#img").get(0); var img = image.files[0]; var reader = new FileReader(); reader.onloadend = function() { reader.result.split(',')[1] } reader.readAsDataURL(img); $.ajax({ type: 'POST', url: `${serverAddress}/product/add`, cache: false, contentType: false, processData: false, data: reader, success: (res) => { alert('success'); }, error: (er) => { alert('err'); } }) }) كتابة الملف : const fs = require('fs'); const path = require('path'); exports.write = (base64String, fileName) => { var buffer = Buffer.from(base64String, 'base64'); fs.writeFile(`${__dirname}/images/${fileName}.jpg`, buffer, (error) => { if(error) { console.log(error) } }); // الملف الذي تخزن فيه الصور return `/images/${fileName}.jpg`; } شكرا .1 نقطة
-
قيمة جسم الطلب المرسل إلى addProduct هي فقط نص الصورة على شكل base64، يجب إرسال باقي البيانات مع أسماءها الصحيحة ضمن الطلب بطرف العميل ووضع قيمة الصورة ضمن proImg ليتم استخراجها بشكل صحيح كالتالي: $.ajax({ type: 'POST', url: `${serverAddress}/product/add`, ... data: { proName: ..., proQuantity: ..., ... proImg: imageBase64 }, })1 نقطة
-
نتيجة ال log /9j/4RWURXhpZgAASUkqAAgAAAAMAAABAwABAAAAgAcAAAEBAwABAAAAgAcAAAIBAwADAAAAngAAAAYBAwABAAAAAgAAABIB طبعا السلسة النصية اطول من هذا لكن جلبت اول سطر منها فقط استدعاء التابع write : exports.addProduct = (req,res) => { const {proName, proQuantity, proPrice, proDisPrice, proDescription, proPromoName, proClassification} = req.body; const product = new Product ({ proName, proQuantity, proPrice, proDisPrice, proDescription, proPromoName, proClassification, }); const imagePath = fileWriter.write(req.body.proImg, product._id) ; product.proImg = imagePath; product.save().then(product => { res.status(201).send(); }).catch(error => { console.log(error) res.status(500).send(); }); }1 نقطة
-
كم هو دخل شهري لي من شاهد دورة وتم توظيفه حسب شروط الأكاديمية حاسوب أن كل من يتم دورة ويخرج بشهادة تضمن له عمل وسؤال الذي عندي كم هو دخل شهري1 نقطة
-
لا يوجد رقم ثابت فالأمر يختلف من مسمى وظيفي لآخر (مطور واجهات أمامية Frontend، مطور تطبيقات، مطور وجهات خلفية Backend .. إلخ) كما أن الدخل الشهري للمبرمج يعتمد على الشركة التي يعمل بها أو المجهود الذي يقوم به (إذا كان يعمل كمستقل في أحد مواقع العمل الحر مثل خمسات أو مستقل) ويختلف هذا الأمر من دولة لآخر كذلك، على سبيل المثال قد يكون هناك شركة تدفع للمبرمج X دولار، وشركة أخرى تدفع الضعف لنفس المبرمج. أيضًا تُعد المميزات التي تقدمها الشركة للمبرمج عاملًا مهمًا في تحديد المرتب، فعلى سبيل المثال قد تحصل على مرتب كبير نسبيًا من أحد الشركات ولكن لا تحصل على أي تأمينات أو قد تعمل في بيئة سيئة نوعًا ما مما يجعل العمل في هذه الشركة صعبًا وغير مريح، وقد تقوم شركة أخرى بدفع مرتب متوسط لنفس المبرمج مع الحصول على بعض الإمتيازات الوظيفية مما يجعل العمل في هذه الشركة مريح ومربح للمبرمج كذلك في نفس الوقت، لذلك فإن الراتب الشهري ليس العامل الوحيد الذي يجب أن يُأخذ في الحسبان. هناك طريقة بسيطة يمكنك إستخدامها لحساب متوسط الدخل الشهري (في مواقع العمل الحر)، قم بالذهاب إلى أحد مواقع العمل الحر مثل مستقل على سبيل المثال، وقم بقراءة المشاريع المطلوبة ومتوسط العرض وميزانية كل مشروع، وقم بحساب عدد المشاريع التي يمكنك أن تقوم بها شهريًا، ومن خلال هذه الأرقام تستطيع تحديد متوسط الدخل الذي يمكنك الحصول عليه إن عملت كمستقل. وعندما تنهي أحد دورات حسوب سوف تحصل على العديد من النصائح والمساعدة أثناء فترة بحثك عن عمل، وأنا أقتبس هنا من صفحة الأسئلة الشائعة: الأمر الآخر هو أن أكاديمية حسوب تضمن لك استرداد استثمارك خلال 6 أشهر إن لم تحصل على عمل بعد إتمام الدورة: إن أردت العمل كمستقل، فستجد في قسم العمل الحر الكثير من المقالات المفيدة والنصائح والإرشادات التي ستمكنك من العمل كمستقل بشكل إحترافي1 نقطة
-
ايضا لم تحل .. $('#add-product').submit(function(e) { e.preventDefault() var image = $("#img").get(0); var img = image.files[0]; let imageBase64 = null; var reader = new FileReader(); reader.onloadend = function() { imageBase64 = reader.result.split(',')[1] } reader.readAsDataURL(img); $.ajax({ type: 'POST', url: `${serverAddress}/product/add`, cache: false, contentType: false, processData: false, data: imageBase64, success: (res) => { alert('success'); }, error: (er) => { alert('err'); } }) })1 نقطة
-
يوجد خطأ في استخدام التابع write حيث يتم تمرير له قيمة base64String غير معرفة، السبب ضمن طرف العميل عليك تخزين الناتج من التحويل ضمن متغير ثم تمريره مع الطلب وليس تمرير reader مباشرة، يمكن حل المشكلة بتعديل الشيفرة كالتالي: let imageBase64 = null; var reader = new FileReader(); reader.onloadend = function() { imageBase64 = reader.result.split(',')[1]; ^^^^^^^^^^^^^ } //... $.ajax({ ... data: imageBase64, ... ^^^^^^^^^^^ }) })1 نقطة
-
1 نقطة
-
سؤال ؟ كم هو دخل بعد توفير الأكاديمية حاسوب لي عمل يعني ماهو دخل تقريبا1 نقطة
-
1 نقطة
-
يمكنك استخدام الخطاف useEffect لاستدعاء الوظيفة widthResizer المسؤولة عن اظهار واخفاء القائمة الجانبية لديك عند تركيب المكون. يتم ذلك عن طريق التعديل على ملف المكون Navbar/index.js: const widthResizer = () => { if(window.innerWidth > 768){ setVisible(true); }else{ setVisible(false); } } useEffect(() => { widthResizer(); }, []); window.addEventListener('resize', widthResizer); let pages = props.items; return ( .. من المهم اضافة المصفوفة التبعية الفارغة كمعامل ثان لتحميل الوظيفة عند تركيب (عمل mounting) للمكون.1 نقطة
-
1 نقطة
-
بخصوص ثغرة csrf ؟ أجد ملف لأختبار أختراق الثغرة علي موقع exploit-db التابع اليKali Linux وهو يستخدم ملف html وبعض دوال جافا سكربت لتوليد token ورفع صورة الي الموقع المخترق . الاصدار Laravel Framework 8.70.1 بتاريخ Date: 14/11/2021 كيف اتاكد من ان هذه الثغرة تم اغلاقها والثغرات عموما اثناء العمل علي سكربت لارافيل وما هي الثغرات الشائعة مثل هذة الثغرة .1 نقطة
-
ثغرات CSRF هي واحدة من بين المفاهيم التي تنتبه لارافيل الى معالجتها والعمل عليها، وهي اختصار ل cross site request forgeries أو عمليات تزوير الطلبات عبر المواقع. ولفهمها على نحو جيد لنقم بطرح المثال التالي: تخيل أن التطبيق الخاص بك يحتوي على هذا المسار: /user/email يقبل طلب POST لتغيير عنوان البريد الإلكتروني للمستخدم المصادق عليه. حيث يتوقع هذا المسار أن يحتوي حقل إدخال البريد الإلكتروني على عنوان البريد الإلكتروني الذي يرغب المستخدم في البدء في استخدامه. وهذا هو الطبيعي. بدون حماية CSRF سيمكن لأي تطبيق على الانترنت الوصول الى نقطة الوصول هاته وسيكفيه فقط جلب اي مستخدم مستهدف الى هذا الموقع الضار لارسال طلب POST مزيف وتغيير بريده الالكتروني والوصول الى بياناته في تطبيقك. ولفعل هذا تقوم لارافيل بفحص كل الطلبات وتمييز تلك التي يرسلها تطبيقك على الويب عن تلك التي لا تخصك. يُنشئ لارافيل token او رمزا مميزا لكل جلسة مستخدم نشطة يديرها التطبيق الخاص بك. يتم استخدام هذا الرمز المميز للتحقق من أن المستخدم المصادق عليه هو الشخص الذي يقوم بالفعل بتقديم الطلبات إلى التطبيق. ويتم ذلك اما عن طريق تعريف حقل هاته السلسلة النصية داخل نموذج ما أو عن طريق استعمال تعليمة blade يخصصها لارافيل لهذا: <form method="POST" action="/profile"> @csrf <!-- مكافئ ل... --> <input type="hidden" name="_token" value="{{ csrf_token() }}" /> </form>1 نقطة
-
1 نقطة
-
إن أي ملف هو عبارة عن سلسلسة نصية من المحارف والأرقام، مع وجود ترويسة تعبر عن نوعية محتواه. بعد جلب محتوى وسم الصورة باستخدام جيكويري ستكون عبارة عن سللسة نصية نرسلها للمخدم على شكل formData var url = "url/action"; // جلب الصورة var image = $('#image-id').attr('src'); // توحيد تنسيق الصور var base64ImageContent = image.replace(/^data:image\/(png|jpg);base64,/, ""); var blob = base64ToBlob(base64ImageContent, 'image/png'); // لتقسم الملف على أجزاء var formData = new FormData(); // إسناد الصورة formData.append('picture', blob); // إرسال طلب أجاكس $.ajax({ url: url, type: "POST", cache: false, contentType: false, processData: false, data: formData }) .done(function(e){ alert('done!'); }); يمكنك الاستفادة أيضا من الشرح:1 نقطة
-
1 نقطة
-
هل تقوم بفحص النتيجة في console على المتصفح ؟ أيضا هل يمكنك إرفاق الملف هنا ؟1 نقطة
-
1 نقطة
-
1 نقطة
-
يعطيك العافية أخ محمود بداية في Laravel Framework هناك directive خاصة بثغرة csrf ، توضع في كل form بغض النظر انت مستخدم اي method بال form ، في حال انك نسيت تضع هاد ال directive مباشرة رح يجي رسالة خطأ عند ارسال البيانات ، اي بمعنى انه لا يمكنك ارسال اي بيانات بدون هاد ال Directive ، ال directive بنشأ hidden input بداخله قيمة ال token ، وهيك بيكون ال laravel محمي من ثغرات ال csrf1 نقطة
-
ما الفرق بين ال id و ال class ومتى استخدم ال id و متي ال class1 نقطة
-
1 نقطة
-
في سؤالك نلاحظ أنك تطلب اسم النطاق domain حيث يمكن الوصول له من خلال المصفوفة العامة (متغير عام النطاق) SERVER_$ التي توفرها PHP $title = 'https://www.example.com'; echo $_SERVER['HTTP_HOST']; // => example.com حيث أن HTTP_HOST تعيد لنا اسم النطاق / الاستضافة يمكنك التعرف على خاصيات المصفوفة و ما يمكن أن تأخذه من مفاتيح من خلال المقالة:1 نقطة
-
1 نقطة
-
ملاحظة: تصميم عمود الأحجام يخالف نبادئ تصمي مقواعد البيانات، بحيث كل خلية يجب أن تحوي على قيمة واحدة، إما يكون لدينا 4 أعمدة كل منها من نوع منطقي bool مثلاً تدل على وجود هذا القياس أو مثلا عدد int تدل على كمية القياس نفسه، أو عمل دول فرعي خاص بالقياسات لكل منتج حيث أنه لكل منتج قياس أو أكثر فالعلاقة one to many أي يكون في جدول القياسات عمودين الأول رقم المنتج وهو مفتاح ثانوي، و العمود الثاني هو القياس.. في حالتك، يمكننا تجاهل خطأ التصميم، و قراءة السلسلة النصية ومن ثم تقسيمها حسب الفاصلة، و لكل قياس نقوم بإنشاء عنصر إدخال.. نجلب المنتجات باستعلام SQL حسب شرط معين .. نحتاج حلقة للمرور على المنتجات لكل منتج نستخلص سلسلة الأحجام المتاحة explode لتقسيم السلسلة النصية لعناصر مصفوفة حسب محرف ما مثل الفاصلة , لكل حجم نقوم بإنشاء عنصر input radio له مثلاً <?php // اتصال بقاعدة البيانات $conn = new mysqli($servername, $username, $password, $dbname); // تحقق من الاتصال if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // الاستعلام $sql = "SELECT size, name, * FROM products where id = 13213132"; $result = $conn->query($sql); if ($result->num_rows > 0) { // طباعة العناصر while($row = $result->fetch_assoc()) { // لكل منتج $productName = $row["name"]; // اسم المنتج $productSize = $row["size"]; // سللسة الأحجام // explode لتقسيم السلسلة النصية لعناصر مصفوفة حسب محرف $SizesArray = explode (",", $productSize); // مصفوفة كل عنصر يمثل حجم echo '<p> product: {$productName}, available sizes:</p>' foreach ($SizesArray as $itemSize) { echo '<input name="size" type="radio" value="{$itemSize}" />' } } } else { echo "0 results"; } $conn->close();1 نقطة
-
ان كنت تنوي تطبيق قاعدة عامة لتحديد حجم الرفع في تطبيق اللارافيل الخاص بك فيمكنك تعديل ملف اعداد بما يلائم هذا التخصيص، قم بالبحث عن هذين السطرين وعدلهما: post_max_size = 1024KB upload_max_filesize = 1024KB كما يمكن تعديل ملف htaccess. ليقوم بنفس الشيء عن طريق اضافة أو تعديل السطرين: php_value post_max_size=15M php_value upload_max_filesize=15M1 نقطة
-
يمكنك تحديد الحد الأقصى للملف المرفوع كما تشاء باستخدام max كالتالي $validator = Validator::make($request->all(), [ 'file' => 'max:1024', // 1MB أقصى حجم ]); أو أقصى حجم أن يكون 500 كيلوبايت كالتالي $validator = Validator::make($request->all(), [ 'file' => 'max:500', // 500KB أقصى حجم ]);1 نقطة
-
في مثل هذه الحالة يمكنك إستعمال الدالة explode والدالة implode، على النحو التالي: <?php $string = "https://www.example.com"; // تقسيم النص بإستخدام نقطة $s = explode(".", $string); // نحذف الجزء الأول من النص unset($s[0]); // نجمع باقي النص بنقطة بين كل جزء $s = implode(".", $s); echo $s; // "example.com" يمكنك الإطلاع على توثيق الدالة explode والدالة implode من خلال موسوعة حسوب.1 نقطة
-
يمكنك استعمال الدالة str_replace لاستبدال الجزء الغير مرغوب فيه في سلسلة نصية بفراغ ثم ازالة هذا الفراغ عن طريق الدالة trim. سيتبع ذلك منطقا مشابها: $title = 'https://www.example.com'; $title = trim(str_replace('https://www.','',$title)); echo $title; // example.com يمكنك التعرف أكثر عن كل من: الوظيفة trim الوظيفة str_replace1 نقطة
-
يوجد خطأين في الكود، الخطأ الأول هو عملية تحويل السعر إلى رقم وإضافة الرقم إلى الخاصية data-price، حيث بعد تحديد طريقة ترتيب المنتجات ستجد أن الخاصية data-price تحمل القيمة NaN أي ليس رقم Not a Number وذلك لأنك تقوم بتحويل محتوى العنصر li نفسه إلى رقم من خلال الكائن Number ولكن هذه العملية تفشل لأن محتوى العنصر li ليس رقم بل مجموعة من النصوص، لذلك عليك أن تقوم بتحديد محتوى العنصر h4 الموجود داخل المنتجات بالشكل التالي: let select = document.getElementById('select'); let ar = []; for (let i of li) { const last = i.lastElementChild.querySelector('h4'); // محدد العنصر h4 const x = last.textContent.trim(); // نستخرج السعر كـنص const y = Number(x.substring(1)); // نزيل علامة الدولار $ ليتبقى فقط الرقم ونحوله عبر الكائن Number i.setAttribute("data-price", y); console.log(y); ar.push(i); } أما الخطأ الثاني يحدث عندما تقوم بجلب قيمة الخاصية data-price من خلال التابع getAttribute، حيث أن الخواص في HTML يتم تخزين القيم فيه على شكل نصوص وليس أرقام Numbers لذلك يعيد التابع getAttribute السعر على شكل نص وبالتالي تتم عملية مقارنة الأسعار لترتيبها بالشكل التالي: "100.78" > "50.78" // false ولحل هذه المشكلة عليك أن تقوم بتحويل السعر إلى رقم مرة أخرى بالشكل التالي: sortli = li.sort((a, b) => { const ax = Number(a.getAttribute('data-price')); const bx = Number(b.getAttribute('data-price')); return ax > bx ? (1 * dm) : (-1 * dm); }); بهذا الشكل سوف يتم ترتيب العناصر بشكل سليم حسب السعر.1 نقطة
-
عليك في البداية تحديد المجال الذي تريد التخصص فيه، هل تريد إنشاء مواقع إلكترونية؟ أو ربما تريد إنشاء تطبيقات الهواتف الذكية؟ أو قد تريد تطوير الألعاب، كل مجال من المجالات السابقة لديه تقنيات ولغات برمجة يتم إستخدامها فيه وهذه التقنيات والبرامج تختلف من مجال إلى آخر، لذلك أول خطوة هي تحديد التخصص الذي تريد العمل فيه، ثم عليك تحديد التقنيات ولغات البرمجة التي سوف تستخدمها في هذا التخصص والتي عليك أن تتعلمها بالترتيب وأن تتدرب على إستخدامها بشكل جيد هنا مقالة توضح أهم المجالات وشرح مبسط له وأهم اللغات والتقنيات المستخدمه فيه: تم نشر أسئلة مشابهة لهذا السؤال كثيرًا في السابق، يمكنك الإطلاع على بعضٍ منها من هنا:1 نقطة