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

بلال زيادة

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

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

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

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

    30

كل منشورات العضو بلال زيادة

  1. عندما تستخدم get () تحصل على مجموعة. في هذه الحالة تحتاج إلى تكرارها للحصول على الخصائص: @foreach ($about as $a) {{ $a->title }} @endforeach أو يمكنك فقط الحصول على أحد العناصر من خلال فهرسها: {{ $about[0]->title }}
  2. تتحقق دالة whereBetween من أن قيمة العمود تقع بين قيمتين. $from = date('2021-01-01'); $to = date('2021-03-02'); Reservation::whereBetween('reservation_from', [$from, $to])->get(); أو في بعض الحالات , تحتاج إلى إضافة نطاق زمني ديناميكيًا فيمكنك استخدام Carbon. Reservation::all()->filter(function($item) { if (Carbon::now->between($item->from, $item->to) { return $item; } });
  3. في ملف index.php قم بتبديل التالي SELECT * FROM messages WHERE recipient_id = ? Order By id desc إلى التالي SELECT *, u.id,u.username FROM messages m INNER JOIN users u ON m.recipient_id = u.id Order By id desc
  4. يمكنك استخدام $user_info = DB::table('usermetas') ->select('browser', DB::raw('count(*) as total')) ->groupBy('browser') ->get(); ايضا يمكنك استخدام $browser_total_raw = DB::raw('count(*) as total'); $user_info = Usermeta::getQuery() ->select('browser', $browser_total_raw) ->groupBy('browser') ->pluck('total','browser'); أو افتح الملف config / database.php. ابحث عن مفتاح strict داخل إعدادات اتصال mysql. اضبط القيمة على false.
  5. نعم تستطيع, ولكن سيعمل ببطئ نوعا ما. مما يسبب بعض المشاكل.
  6. إذا لديك حاسوب قوي يمكنك تستخدم macOS بشكل وهمي ولكن ستواجه بعض المشاكل و هي انه يجب التطبيق على موبايل حقيقي. إذا كان لديك أنترنت سريع استخدام RDP MACOS أفضل. هناك شركة macincloud يمكنك زيارة رابط موقعها على الأنترنت من هنا وتقدم هذه الشركة عدة حزم مثل: Pay-As-You-Go حيث معناها تدفع مقابل ما تستخدمه 1$. Managed Server: تدفع شهرياً 25$ مقابل RDP. Dedicated Server: تدفع شهرياً 49$ مقابل RDP. هناك مميزات لكل حزمة تستخدمها ويوجد مقارنة بين الحزم بشكل كامل, يمكنك أختيار ما يناسبك و الأشتراك بأحدى هذه الحزم. يمكن تحميل VMware Workstation على حاسوبك من هنا أو من هنا, ومن ثم تحميل نسخة macOS High Sierra تجد روابطها من هنا أوهنا, ويمكنك استخدام تحميل xcode بشكل يدوي وتثبيته على النسخة بعد تثبيتها, وايضا تحتاج إلى Patch Tool من هنا بعد تحميل vmware وتثبيته على جهازك , و ايضا تحميل نسخة macOS High Sierra. قم بالخطوات التالية: استخراج صورة macOS High Sierra, عن طريق فك ضغط الملف بعد تحميله. قم باستخراج الملف Patch Tool من تنسيق Zip. افتح Patch Tool - Unlocker Master ثم انقر بزر الماوس الأيمن على win-install.cmd وحدد تشغيل كمسؤول. سيقوم بتثبيت ملف التصحيح في برنامج VMware لنظام التشغيل macOS High Sierra والإصدارات الأقدم من أجل فتح برنامج VMware والسماح لك بتثبيت macOS عليه. افتح الآن برنامج VMware, انقر على Create a New Virtual Machine, ثم حدد Recommended ثم Next. حدد I will install the operating system later ثم Next. اختر الآن "Apple Mac OS X" من قائمة أنظمة التشغيل ثم حدد مكان macOS High Sierra وانقر فوق التالي. لا تحدد مساحة القرص, فقط حدد Store virtual disk as a single file وانقر على التالي. تم إنشاء ملفات VM الأساسية لنظام التشغيل macOS High Sierra, فانتقل وانقر فوق Finish. افتح نافذة macOS High Sierra VM على محطة عمل VMware أو المشغل, ثم انقر فوق Edit virtual machine settings. قم بزيادة الذاكرة من 2 جيجا بايت إلى 4 جيجا بايت أو أعلى من ذاكرة الوصول العشوائي لأداء أفضل. قم بزيادة نواة وحدة المعالجة المركزية من مركزين إلى 4 أنوية أو أعلى للحصول على أداء أفضل. أخيرًا, انقر فوق موافق لحفظ جميع التغييرات التي أجريتها على إعدادات virtual machine. افتح نافذة macOS High Sierra VM ثم انقر فوق power في virtual machine. اختر الدولة وانقر على متابعة. اختر تخطيط لوحة المفاتيح وانقر على متابعة. اختر الآن طريقتك لنقل المعلومات إلى جهاز Mac هذا وانقر don’t want to transfer any information ثم انقر فوق متابعة. يمكنك تسجيل الدخول باستخدام معرف Apple الخاص بك. وافق على الشروط والأحكام. املأ الاسم الكامل واسم الحساب وكلمة المرور وحدد مربع تعيين المنطقة الزمنية بناءً على الموقع الحالي. ثم انقر أخيرًا على متابعة لإنشاء حساب المستخدم الخاص بك لنظام التشغيل macOS High Sierra, والذي سيتم تثبيته. في صفحة الإعداد السريع, لا تريد القيام بشيء ما فقط انقر فوق متابعة. انتظر قليلاً لإعداد جهاز Mac الخاص بك. ثم سيتم تشغيله على سطح مكتب macOS High Sierra.
  7. يمكنك استخدام cron job في PHP, ستحتوي وظيفة cron دائمًا على خمسة أعمدة يمثل كل منها "عامل تشغيل" زمنيًا متبوعًا بالمسار الكامل والأمر المطلوب تنفيذه: * * * * * home/path/to/command/the_command.sh كل عمود من الأعمدة الزمنية له صلة محددة بجدول المهمة. وهم على النحو التالي: تمثل الدقائق الدقائق في ساعة معينة , 0-59 على التوالي. تمثل الساعات ساعات يوم معين , 0-23 على التوالي. تمثل الأيام أيام شهر معين , 1-31 على التوالي. الشهور تمثل شهور سنة معينة , 1-12 على التوالي. يمثل "يوم من الأسبوع" يوم الأسبوع , من الأحد إلى السبت , عدديًا , بالرقم 0-6 على التوالي. Minutes [0-59] | Hours [0-23] | | Days [1-31] | | | Months [1-12] | | | | Days of the Week [Numeric, 0-6] | | | | | * * * * * home/path/to/command/the_command.sh إذا أردت جدولة مهمة في الساعة 12 صباحًا في اليوم الأول من كل شهر 0 0 1 * * home/path/to/command/the_command.sh إذا أردت جدولة مهمة للتشغيل كل يوم سبت في الساعة 8:30 صباحًا 30 8 * * 6 home/path/to/command/the_command.sh يمكنك استخدام دالة exec لتنفيذ ملفات .sh.
  8. يتم استخدام {!! !!} لطباعة النص مع عدم الحماية من أكواد html لذلك يتم طباعة النص كما هو فمثلا {{ $text }} يصبح {!! $text !!} في Laravel 5 يتم استخدام {!!html_entity_decode($text)!!}
  9. قم بإنشاء ملف وليكن اسمه helpers.php في المسار التالي app\Helpers طبعا تنشأ مجلد اسمه helpers داخل مجلد app ثم في ملف composer.json تقوم بإضافة الملف ليتم تحميله تلقائيا في المشروع عن طريق إضافة التالي "autoload": { "classmap": [ ... ], "psr-4": { "App\\": "app/" }, "files": [ "app/helpers.php" // اسم ملفك هنا ] }, ومن ثم تنفيذ الأمر التالي composer dump-autoload ومن ثم في ملف helpers.php تستطيع إنشاء إي دالة و من ثم يمكنك استخدامها في أي ملف view تريده. داخل ملف helpers.php لتستطيع مشاركة الدالة ضمن ملفات views التي تريدها.
  10. يمكن التوجه إلى المسار التالي project_folder\app\Providers ومن ثم فتح ملف RouteServiceProvider.php وإزالة التعليق // عن متغير // protected $namespace = 'App\\Http\\Controllers'; فيصبح protected $namespace = 'App\\Http\\Controllers'; فستعمل مع المسارات بشكل ممتاز
  11. يوجد عدة طرق منها هو نقل ما بداخل مجلد Public و وضعه في Public_html مباشرة و من ثم تغيير التوجية إلى الملفات في ملف index.php بعد نقله من مجلد public فيمكنك تغيير require __DIR__.'/../vendor/autoload.php'; فتصبح require __DIR__.'/vendor/autoload.php'; وتغيير $app = require_once __DIR__.'/../bootstrap/app.php'; إلى $app = require_once __DIR__.'/bootstrap/app.php'; مع تغيير APP_URL APP_DEBUG بداخل ملف .env لتشغيل أوامر Artisan عن طريق المتصفح يمكنك استخدام Artisan::call() مثلا Artisan::call('key:generate'); Artisan::call('cache:clear'); Artisan::call('route:clear'); Artisan::call('config:clear'); Artisan::call('view:clear'); Artisan::call('migrate:refresh --seed'); Artisan::call('db:seed'); Artisan::call('storage:link'); مع إضافة use Illuminate\Support\Facades\Artisan;
  12. هناك ايضا طرق أخرى منها, تغيير Migration Length إلى 191 مثل $table->string('name', 191); أو من ملف AppServiceProvider.php في دالة Boot يمكنك إضافة التالية \Illuminate\Support\Facades\Schema::defaultStringLength(191); فتصبح public function boot() { \Illuminate\Support\Facades\Schema::defaultStringLength(191); } إذا كنت لا تهتم بـ utf8mb4 , يمكنك الانتقال إلى ملف config / database.php واستبدال charset و collation بـ utf8 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', تصبح 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci',
  13. تشير رسالة الخطأ إلى أنه تمت تجربة اتصال MySQL عبر Socket (وهو أمر غير مدعوم). يمكنك استخدام بيئة مختلفة و تنفيذ الأمر التالي php artisan migrate --env=production يمكنك في Laravel 5 من تغيير قيمة DB_HOST في ملف .env من localhost إلى 127.0.0.1
  14. تمام بخصوص لو أردت تغيير إصدار PHP يجب معرفة برنامج السيرفر الشخصي الذي تستخدمه و من ثم الذهاب إلى موقعه الرسمي و تحميل نسخة من هذا البرنامج بعد حذف البرنامج الذي لديك و تحميل نسخة تحتوي على إصدار إقل من PHP 8. فمثلاً إذا كنت تستخدم برنامج xampp يمكنك تحميل نسخة أقل من النسخة التي تستخدمها وتحتوي على إصدار PHP أقل من PHP 8. إذا أردت تحديث نسخة Laravel يجب الذهاب إلى الموقع الرسمي للارافل من هنا. تذهب إلى Upgrade Guide في الموقع بعد أختيار النسخة التي تريد تحديث النسخة التي معك إليها, ومن ثم تقوم بقراءة متطلبات التحديث إلى النسخة التي تريدها.
  15. ما هو إصدار Laravel الذي تستخدمه؟ يجب تحديث نسخة Laravel إلى اخر إصدار أو تغيير إصدار PHP لديك ليناسب إصدار Laravel لديك. إذا كنت تستخدم برنامج xampp يمكنك تحميل نسخة أقل من النسخة التي تستخدمها وتحتوي على إصدار PHP أقل من PHP 8.
  16. قم بحذف مجلد vendor ثم ملف composer.lock ,ثم قم بتنفيذ الأمر التالي composer dump-autoload ومن ثم الأمر التالي composer install ثم الأمر التالي composer update --no-scripts
  17. يمكنك ذلك من خلال وضع الأكواد التالية في ملف .env DB_CONNECTION_SECOND=mysql DB_HOST_SECOND=127.0.0.1 DB_PORT_SECOND=3306 DB_DATABASE_SECOND=database2 DB_USERNAME_SECOND=root DB_PASSWORD_SECOND= فلاحظ جيدا اننا قمنا بتعريف متغيرات لقاعدة بيانات أخرى, ثم في مسار config/database.php نقوم بوضع 'mysql2' => [ 'driver' => env('DB_CONNECTION_SECOND'), 'host' => env('DB_HOST_SECOND'), 'port' => env('DB_PORT_SECOND'), 'database' => env('DB_DATABASE_SECOND'), 'username' => env('DB_USERNAME_SECOND'), 'password' => env('DB_PASSWORD_SECOND'), ], تحت mysql بحيث يكون هذا يكون معلومات الاتصال بقاعدة البيانات الأخرى. يمكنك صنع جدول لقاعدة البيانات عبر Schema بحيث نعرف Schema::connection لقاعدة البيانات الأخرى مثل Schema::connection('mysql2')->create('users_two', function($table) { $table->increments('id'): }); يمكنك استخدام Query Builder بهذا الشكل $posts = DB::connection('mysql2')->select(); ايضا يمكنك توجيه Model إلى استخدام قاعدة الاتصال الثاني الخاص بقاعدة البيانات الثانية باستخدام protected $connection = 'mysql2'; ايضا يمكنك في Controller استخدام الشكل التالي : public function index() { $post = new Post; $post->setConnection('mysql2'); $something = $post->find(1); $get_posts = Post::on('mysql2')->find(1); return $get_posts; }
  18. هنا يجب استخدام inner join كي تستطيع جلب أخر رسالة لكل عضو فمثلا: SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; طبعا inner join مقصود بها الربط الداخلي تستخدم لربط جدولين أو اكثر وذلك لتحديد بعض السجلات من الجداول المترابطة مع بعضها, ويمكن استخدامها بعدة صيغ حسب ما تريد الاستعلام عنه, ففي حالتك فلنفترض ان جدول الأعضاء اسمه users وجدول الرسائل اسمه messages فتكون إلية الربط بينهم باستخدام inner join هكذا. SELECT m.msg, u.name FROM messages m INNER JOIN users u ON m.recipient_id = u.id فلاحظ أننا استخدمنا اسماء مستعارة للجداول فجدول users قمنا بإعطائه الاسم المستعار u و جدول messages قمنا بإعطائه الاسم المستعار m و قمنا في الاستعلام السابق بجلب نص الرسالة مع اسم العضو الذي قام بارسالها وقمنا بالتعويض عن اسم الجدول باسمه المستعار.
  19. في هذا الكود ابسط طريقة وهي إذا لا تريد أحداث تغييرات في الكود يمكنك إضافة limit. <?php $stmt = $db->prepare('SELECT * FROM messages WHERE recipient_id = ? Order By id desc'); $stmt->bind_param('i', $_SESSION['id']); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo '<div class="div_messages"><a href="index.php?to='.$row['sender_id'].'"> تم استلام رسالة من <br />'.$row['sender_name'].'<br />'.$row['date'].'</a></div>' ; } $stmt->close(); ?> يصبح <?php $stmt = $db->prepare('SELECT * FROM messages WHERE recipient_id = ? Order By id desc limit 1'); $stmt->bind_param('i', $_SESSION['id']); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo '<div class="div_messages"><a href="index.php?to='.$row['sender_id'].'"> تم استلام رسالة من <br />'.$row['sender_name'].'<br />'.$row['date'].'</a></div>' ; } $stmt->close(); ?> في الكود الثاني ممكن تغيير الشرط بحيث يصبح OR و ليس And . ولكن يتم التحديد ومساعدتك بشكل أفضل إذا أرفقت مجلد المشروع كاملا. هنا يتم استخدام ajax لجلب البيانات بدون تحديث الصفحة. بحيث تقوم بكتابة كود PHP يرجع قيمة عدد الاشعارات بصيغة json و من ثم استخدام ajax لجلب القيمة بدون تحديث للصفحة.
  20. يمكن إرفاق الكود الخاص بك لمساعدتك في وضع الروابط, أو يمكنك بعد وسم <a class="navbar-brand" href="#">Navbar</a> وضع بعده الرابطين حسب ما تريد مثل <a class="navbar-brand" href="#">اطلب عرض سعر</a> <a class="navbar-brand" href="#">اطلب تطبيق فكرة</a> و من ثم في باستخدام css يمكنك التحكم في محاذاة و مكان الروابط. جميع ما بداخل كلاس collapse navbar-collapse يتم إخفاءه و يتم إظهاره في قائمة المنسدلة على شاشات الجوال عند الضغط على ايقونة البار.
  21. لديك طريقتان لتشفير كلمة المرور في Laravel. $data['password'] = bcrypt($request->password); و الطريقة الأخرى هي تخزين كلمة المرور غير مشفرة $data['password'] = $request->password; ثم تشفير كلمة المرور في Model public function setPasswordAttribute($value) { $this->attributes['password'] = bcrypt($value); } إذا قمت بذلك بهذه الطريقة ، فتأكد فقط من عدم تجزئة كلمة المرور مرتين ، لذلك يجب عليك الانتقال إلى RegisterController وبدلاً من: 'password' => Hash::make($data['password']); تضيف 'password' => $data['password'] لاحظ أيضًا أنه لا يوجد فرق بين فئة Hash والوظيفة المساعدة bcrypt (). إذا كنت تريد استخدام Hash Hash::make() وتحقق من ذلك عن طريق Hash::check()
  22. يمكنك استخدام مكتبة html2canvas.js ويمكنك استخدام الأكواد التالية بحيث ملف index.php يكون بداخله التالي <html> <head> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script> <script> function screenshot() { html2canvas(document.body, { onrendered: function(canvas) { var img = canvas.toDataURL() $.post("screenshot.php", {data: img}, function (file){ window.location.href = "screenshot.php?file="+ encodeURI(file) }); } }); } </script> <body> <div id="wrapper"> <div id="screenshot_div"> <button type="button" onclick="screenshot()">أخذ لقطة</button> </div> </div> </body> </html> وملف screenshot.php يكون بداخله الكود التالي <?php if(isset($_GET['file'])) { $file=$_GET['file']; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: image/png'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); unlink($file); exit; } } if(isset($_POST['data'])) { $data = $_POST['data']; $file = md5(uniqid()) . '.png'; $uri = substr($data,strpos($data,",")+1); file_put_contents('./'.$file, base64_decode($uri)); echo $file; exit(); } ?> ويمكنك التجربة على المتصفحة سترى أنه يقوم بإلتقاط الصورة للصفحة.
  23. السؤال الأول: بشكل افتراضي , سيقوم Eloquent بتحويل الأعمدة التي تم إنشاؤها و تحديثها و حذفها إلى مثيلات من Carbon. لذلك ، يجب أن تكون شفرتك كما يلي: $comment->created_at->diffForHumans(); السؤال الثاني يمكنك فعل التالي $latestPosts = Genre::with('latestPosts')->orderBy('name')->get(); public function latestPosts() { return $this->hasManyThrough('App\Models\Post', 'App\Models\Band') ->orderBy('id', 'desc') ->take(5) ->get(); } or public function latestPosts() { return $this->posts()->latest()->take(5)->get(); }
  24. في قيمة خاطئة داخل Model وهي map يمكنك تفادي إذا كانت null تقوم بإرجاع null أو تتركها فارغة مثل map: json['map'] == null ? null : json["map"],
  25. هناك عدة مواقع تقدم هذه الخدمة بدون تعب او تشتت . ايضا يمكن تحدث مشاكل بسبب عدم المهارة في دمج لغة بداخل لغة, يمكنك البحث في قوقل مثلا عن convert html or javascript to php online ستجد الكثير من المواقع تقدم هذه الخدمة. <?php echo '<div class="dropdown">'; echo '<button onClick="myFunction()" class="dropbtn">Dropdown</button>'; echo '<div id="myDropdown" class="dropdown-content">'; echo '<a href="#home">Home</a>'; echo '<a href="#about">About</a>'; echo '<a href="#contact">Contact</a>'; echo '</div>'; echo '</div>'; echo '<script>'; echo 'function myFunction() {'; echo 'document.getElementById("myDropdown").classList.toggle("show");'; echo '}'; echo 'window.onclick = function(event) {'; echo 'if (!event.target.matches('.dropbtn')) {'; echo 'var dropdowns = document.getElementsByClassName("dropdown-content");'; echo 'var i;'; echo 'for (i = 0; i < dropdowns.length; i++) {'; echo 'var openDropdown = dropdowns[i];'; echo 'if (openDropdown.classList.contains('show')) {'; echo 'openDropdown.classList.remove('show');'; echo '}'; echo '}'; echo '}'; echo '}'; echo '</script>'; ?>
×
×
  • أضف...