-
المساهمات
8752 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
117
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد_عاطف
-
الخطأ يخبرك ان طول الكود هو 266 والمسموح لك هو 25 حرف فقط . لذلك من فضلك قم بكتابة هذا السطر فقط فى الموقع والضغط على test STRANGE_STRING = 'ßú' ولا تقوم بكتابة اى شئ اخر سوى هذا السطر
- 18 اجابة
-
- 1
-
-
بدلا من كلمة foo قم بكتابة اى حرفين فقط بيديك من الاحرف اللاتينيه فقط ولو كتبت اكثر من ذلك سيظهر لك خطا. يمكنك كتابة هذه كما وضحت لك سابقا. حيث ان السؤال لايتطلب اى برمجة نهائيا
- 18 اجابة
-
- 1
-
-
لاحظ ان الحل يطلب منك فقط وضع الاحرف فى المتغير STRANGE_STRING ولا يطلب منك اى كود . حيث اذا اصبحت عدد حروف الكود الخاص بك اكثر من 25 بايت اى 25 حرف سيظهر لك هذا الخطأ Solution too large . كل ما عليك هو وضع فقط قيمة ال STRANGE_STRING هكذا STRANGE_STRING = 'ßú' او استخدام اى احرف ولكن يجب على الجملة الا تتعدى ال 25 حرف و الاحرف اللاتينية تحسب كحرفين . حيث ان هذه المسألة لا تهدف الى تعليمك شئ فى البرمجة سوى ان تكون حذرا فى استخدام الدوال المضمنة فى لغات البرمجة فحيث من اللمكن ان يحدث خطأ غير متوقع عند استخدامها دون معرفة الحالات الخاصة .
- 18 اجابة
-
- 1
-
-
نعم صحيح استخدمت all للحصول على النتيجة كمصفوفة حتى استطيع دمجها مع المنشورات السابقة . نعم الموجه push('scripts')@ هو خاص بالاصدار 2 من مكتبة livewire وبما انك تستعمل الاصدار 3 منها فهم قد قامو بتحديث اسم الموجه ليصبح script@ . ولا شكر على واجب اخى أمير . وبالتوفيق لك ان شاء الله
- 4 اجابة
-
- 1
-
-
يوجد عدة انواع من ال joing . اولا ال inner joins ألتى كنت تستعملها مسبقا وهى فقط تقوم بارجاع نتيجة التقاطع فقط واى قيم لم يتم الربط بينهم او فارغين فلن يتم ارجاعهم . اما ال LEFT و ال RIGHT فانك تخبر mysql بان يقوم بارجع الجدول كاملا سواء الجدول الذى يسار كلمة JOIN و يمينها حسب ما سوف تستخدم وبذلك سوف يقوم بارجاع الجدول كاملا سواء كان الربط صحيحا او خاطئا . واذا كان صحيحا سيقوم بارجاع بيانات الجدول المربوط . لاحظ كما فى الصورة السابقة . ويمكنك قراءة هذا الشرح على موقع wiki hasoub. left join و inner join
-
-
اعتقد انك اخطأت فى ربط الجدولين حيث قمت بربطهم ب id_std الخاص بال students . SELECT s.Num_std ,s.Name_std ,s.Email_STD ,p.name_project,t.Name_teah,d.Name_dept FROM student s LEFT JOIN projects p ON p.Num_STD=s.id_std LEFT JOIN teachers t ON s.id_teah=t.id_teah LEFT JOIN departments d ON t.id_dept=d.id_dept; لذلك من فضلك قم بتجربة هذا الكود واخبارى بالنتيجة. وايضا هل يوجد فى جدول students فى العمود Num_std قيمة تساوى 14 و 15 ؟
-
اذا يوجد خطأ بربط جدول projects بجدول students لذلك من فضلك تاكد من ان الربط بين الجدولين صحيح .
-
لاحظ انه يوجد اخطاء فى ربط البيانات لذلك ظهرت فارغه الا اسماء المشاريع . ما هو عمود Num_STD فى جدول projects هل هو عدد الطلاب ام ماذا ؟ واذا كان هو id الطالب اذا لماذا لم يتم ربطه ب id_std ؟ من فضلك قم بتجربة هذا الكود واخبارى بالنتيجة . SELECT s.Num_std ,s.Name_std ,s.Email_STD ,p.name_project,t.Name_teah,d.Name_dept FROM student s LEFT JOIN projects p ON p.Num_STD=s.Num_std LEFT JOIN teachers t ON s.id_teah=t.id_teah LEFT JOIN departments d ON t.id_dept=d.id_dept;
-
اذا جدول projects فارغ ولا يوجد به اى بيانات . وايضا الجداول الاخرى . من فضلك قم بارسال صورة تحوى على بعض البيانات من الجداول التى لديك لنرى اين المشكلة .
-
يبدو انه يوجد اخطاء فى ربط الجداول . اولا من فضلك قم بتغير كلمة INNER JOIN الى LEFT JOIN فى اى مكان لديك فى ال query ومن ثم ارسال النتيجة لى . وايضا هل يمكنك ارسال صورة لشكل هيكل الجداول وان امكن لبعض البيانات فيه .
-
الامر بسيط ويوجد عدة طرق ولكن الافضل هو . اولا انشاء متغير يحمل المنشورات التى تم تحميلها الى الان حيث لا نريد فى كل مرة يصل المستخدم الى اخر الصفحة وناتى بالمنشروات من جديد , ونعطى قيمة افتراضية لهذا المتغير بمصفوفة فارغة . public $postCotainer = []; وايضا نقوم بانشاء متغيرين اخرين احدهما يحمل القيمة الافتراضية لعدد المنشورات التى سيتم تحميلها فى بداية الصفحة او حتى عند التمرير لاسفل الصفحة . والاخر يحمل عدد المنشورات الذى تم عرضها الى الان . public $take = 5; public $skip = 0; والان نقوم بانشاء استماع الى حدث التمرير جديد وفى الدالة نقوم بزيادة عدد المنشورات التى عرضها . protected $listeners = ['scrollPosts'=>'getMorePosts']; public function getMorePosts() { $this->skip += $this->take; } هكذا كل مرة يتم التمرير لاسفل الصفحة نقوم بزيادة العدد الذى تم عرضه . والان فى الدالة getPostsProperty نضع هذا الكود. public function getPostsProperty() { $ids = auth()->user()->following()->wherePivot('confirmed', true)->get()->pluck('id'); $this->postCotainer = array_merge($this->postCotainer,Post::whereIn('user_id', $ids)->latest()->skip($this->skip)->take($this->take)->get()->all()); return $this->postCotainer; } لاحظ هنا اننا اولا استخدمنا دالة array_merge وذلك لدمج المنشورات التى تم تحميلها سابقا الى المنشورات الجديدة الذى سوف يتم تحميلها . ولاحظ اننا فى الاستعلام الخاص بال sql اضفنا داليتن الاولى هى skip اى اننا لا نريد ان ناتى بعدد معين بالمنشورات وهى المنشورات التى تم تحميلها بالفعل ولذلك نمرر لها المتغير skip الذى يحمل عدد المنشروات الذى تم تحميلها الى الان. والدالة take التى تسمح لنا باحضار عدد معين فقط من المنشورات ولذلك ارسلنا لها المتغير take الذى يحمل عدد المنشورات التى نريد عرضها . وبهذا نكون قد انتهينا من الكود الخلفى . ولكن ستجد مشكلة سوف تحدث فى الحدث الذى لديك toggleFollow فمثلا اذا قام المستخدم بالغاء متابعه او متابعه مستخدم جديد فان منشوراته التى تم تحميلها سابقا نريد ان نحذفها او عرضها . لذلك سنجعل عند استماع الى الحدث toggleFollow هو حذف جميع المنشورات التى تم تحميلها سابقا واعادة التحميل من جديد حتى لا تحدث تلك المشكلة.وهذا هو كود المكون كاملا بعد التعديل. <?php namespace App\Livewire; use Livewire\Component; use App\Models\Post; class PostsList extends Component { protected $listeners = ['toggleFollow' => 'resetPosts','scrollPosts'=>'getMorePosts']; public $take = 5; public $skip = 0; public $postCotainer = []; public function resetPosts() { $this->postCotainer = []; $this->take = 5; $this->skip = 0; } public function getPostsProperty() { $ids = auth()->user()->following()->wherePivot('confirmed', true)->get()->pluck('id'); $this->postCotainer = array_merge($this->postCotainer,Post::whereIn('user_id', $ids)->latest()->skip($this->skip)->take($this->take)->get()->all()); return $this->postCotainer; } public function getMorePosts() { $this->skip += $this->take; } public function render() { return view('livewire.posts-list'); } } اما فى الواجهة الامامية فسوف نضيف استماع الى حدث التمرير و التحقق من ان المستخدم قد قام بالتمرير الى اخر الصفحة . واذا كان قام بالتمرير الى اخر الصفحة نقوم بارسال الحدث scrollPosts الذى سوف يقوم باحضار المزيد من المنشورات وبذلك كلما قام بالتمرير ياتى بالمنشورات الجديد . <div class="w-[30rem] mx-auto lg:w-[95rem]"> @forelse($this->posts as $post) <livewire:post :post="$post" :wire:key="'post_'.$post->id" /> @empty <div class="max-w-2xl gap-8 mx-auto dark:text-gray-100"> {{ __('Start Following Your Friends and Enjoy.') }} </div> @endforelse </div> @script <script> window.onscroll = function(ev) { if ((window.innerHeight + Math.round(window.scrollY)) >= document.body.offsetHeight) { $wire.dispatch('scrollPosts'); } }; </script> @endscript وهكذا قد انتهينا من جميع الاكود ويمكنك استعمالها وستعمل معك . ويمكنك تغير القيمة الافتراضية للمتغير take على حسب عدد المنشورات التى تريدها حيث انا اعطيته قيمة ابتدائية ب 5
- 4 اجابة
-
- 1
-
-
ويمكنك الضغط على قائمة File ثم قم بتفعيل خيار auto save لحفظ التعديلات تلقائيا دون الحاجة للضغط على CTRL + s
-
يبدو انن قد نسيت حفظت التعديلات التى على الملف . لاحظ الدائرة البيضاء المشار اليها فى الصورة التاليه . معنى هذه الدائرة هو انه تم تعديل الملف ولم يتم حفظ التعديلات . لذلك قم بالضغط على CRTL + S لحفظ التعديلات وتاكد من ان الدائرة البيضاء قد اختفت . وقم بالمحاولة مرة اخرى وسيعمل معك ان شاء الله.
-
وعليكم السلام ورحمة الله وبركاته . نظام التشغيل هو الطبقة الوسيطة بين الهاردوير والسوفتوير وهو المتحكم الاساسى والرئيسى فى الهاردوير الخاص بالجهاز . فهو من يقوم بتوصيل الاوامر من اجهزة الادخال الى اجهزة الاخراج و الى ايضا الهاردوير . فعند الضغط على زر الفأرة او حتى على زر من ازرار لوحة المفاتيح فانه يقوم بارسال هذا الامر الى البرنامج او السوفتير المطلوب ويخبره بحدث الضغط او تحريك الفأرة ثم مثلا يرسل البرنامج الامر الى نظام التشغيل مثلا بطباعة الحرف على الشاشة او تحريك الفأرة ثم ياخذ نظام التشغيل الامر ويرسله الى كارت الشاشة مثلا او اللى الهاردوير المطلوب ويظهر الحرف او يتم المهمة المطلوبة . اما عملك كمبرمج فهو يعتمد على الوظيفة التى تقوم بها . فان مهندسين نظم التشغيل والكومبايلرز هم من اقوى و اذكى المهندسين فهو من يقوم بهندسة نظام التشغيل كاملا و التحكم فى الهاردوير . اما مهندسين البرمجيات فانت فقط تقوم بكتابة البرنامج على حسب اللغه التى تعمل عليها والكومبايلر هو المسؤل عن تحويل الكود الخاص بك الى اوامر يستطيع نظام التشغيل فهمها والتعامل معها ومن ثم نظام التشغيل هو من يقوم باعطاء هذه الاوامر الى الهاردوير الصحيح . وبدون نظام التشغيل فان الهاردوير لا قيمة له فسيصبح عبارة عن قطعة لا قيمة لها فنظام التشغيل هو مثل العقل المسئول عن الجسم من تحريكه الى التحكم فيه بشكل كامل . ويمكنك قراءة هذه المقالات لتتعرف اكثر عن نظم التشغيل .
-
الخطأ الذى يظهر لك بسبب انك تحاول تثبيت اخر اصدار من لارافيل وهو يتطلب php اصدار 8.2 فما اعلى ويبدو انه لديك اصدار php 7 . ولذلك الحل هو هو تثبيت لاراجون يدعم اصدار php 8 او انشاء مشروع لارافيل دون تحديد اصدار لارافيل و هو سيتعرف تلقائيا على اصدار php لديك وانشاء مشروع متوافق معه . لذلك من فضلك استخدم الامر التالى . composer create-project laravel/laravel ex-t1
-
الخطأ الذى يظهر لديك هو انه يوجد بعض الملفات المفقودة يبدو ان التثبيت لم يكتمل لديك . اولا قم بفتح laragan as administrator ومن ثم قم بالمحاولة مرة اخرى . اذا ظلت المشكلة كما هى فيجب الغاء تثبيت laragon واعادة تثبيته مرة اخرى وذلك سيحل المشكلة ان شاء الله ولكن يجب التاكد من التثبيت قد اكتمل وتم بنجاح.
-
وعليكم السلام ورحمة الله وبركاته . خادم ال FTP هو خادم يوفر لك بروتوكول ال ftp الخاص بنقل البيانات من والى الخادم . وكل خادم منفصل عن جميع الخوادم الاخرى على الانترنت اى ان كل خادم لديه الملفات الخاصة به وليس جميع الملفات على الانترنت . لناخذ مثال مثلا الهارد الخاص بك هل يوجد فيه جميع الملفات التى توجد عند جميع الاشخاص ؟ ام الملفات الخاصة بك فقط ؟ واذا اردت مثلا نقل ملف من او الى الهارد الخاص بك ماذا تفعل ؟ الهارد الخاص بك هو مثل ال ftp server يوجد فيه بيانات خاصة بصاحب الخادم فقط . واذا اراد صاحب الخادم السماح بنقل الملفات من والى سيرفره سيسمح باستخادم بروتوكول ftp كما تقوم انت بتوصيل الهارد او الفلاشة الذى تريد نقل منها او اليها الملفات . اما بالنسبة لل ip فيجب التفرقة بين نوعين local ip و Public ip . ال local ip هو ال ip الذى يقوم الراوتر بتوفيره لجهازك وهذا ال ip لا يمكن ان يتكرر على الشبكة الخاصة بك اى لا يمكن ان يوجد جهازين على نفس الراوتر لهما نفس ال ip . لنفرض مثلا انه يوجد جهازين متصلين على الراوتر الخاص بك . وعنوان الراوتر هو 192.168.1.1 اذا سيكون اول جهاز ال ip الخاص به مثلا هو 192.168.1.10 ولا يمكن للجهاز الثانى ان يكون له نفس هذا ال ip . ولكن من الممكن ان جارك مثلا او شخص اخر لديه راوتر اخر ومتصل به ويكون عنوانه هو 192.168.1.10 حيث انهم منفصلين عن بعضهم وال local ip هو خاص بالراوتر نفسه كما وضحت لك . اما ال public ip وهذا هو ال ip الذى تقوم بتزويده لك مقدم خدمة الانترنت ISP وهذا هو ال ip الذى تراه المواقع عند الاتصال بها وهو الذى يمكنك من تصفح المواقع وهذا ال ip هو الخاص بالراوتر وهذا مستحيل ان تجد راوترين لهم نفس ال public ip . ولكن اذا اتصل جهازين بنفس الراوتر فان ال public ip الخاص بهم هو نفس ال ip الخاص بالراوتر اى اذا ذهبت الى موقع https://www.myip.com/ ودخلت من جهازين مختلفين ولكنهم متصلين بنفس الراوتر ستجد ان ال ip واحد ولكن اذا قمت بالدخول لنفس الموقع ولكن من راوتر اخر ستجد ان ال ip مختلف . وايضا هنا معلومة اخرى اذا لم تكن مشترك فى خدمة الانترنت الثابت اى static ip و هى خدمة توفرها معظم شركات الانترنت فان كل ما تقوم باطفاء وتشغيل الراوتر فان ال public ip الخاص به سيتغير تلقائيا حيث ان مزود الخدمة حين اطفاء الراوتر سيقوم باعطاء ال ip الذى كنت تاخذه لشخص اخر وحين اعادة تشغيل الراوتر فان مزود الخدمة سيبحث عن ip ليس مستخدما وسيقوم باعطاءه لك.
-
الخطأ لديك انك تقوم باستخدام foreach بداخل foreach اخرى لهذا يتم تكرار الصور وايضا المحتوى . ويوجد خطأ اخر هو انك تقوم بانشاء المحتوى بداخل ال foreach وهذا خاطئ بل يجب انشاء المحتوى قبل ال forech . لذلك الحل هو اخراج الكود من اول جزء if($check) خارج ال foreach الاولى وهذا سوف يحل المشكلة لديك. واذا كان هذا السؤال خاصا بدرس من دروس الدورات فمن فضلك مستقبلا قم بالتعليق اسفل الدرس فى التعليقات وذلك لمساعدتك بشكل افضل
- 2 اجابة
-
- 1
-
-
من الافضل نقل هذا المجلد بداخل المشروع و كتابة المسار هكذا . require 'vendor/autoload.php'; لان المجلد بداخل ملفات الويندوز واعتقد ان الخطأ يحدث لان المشروع ليس له الصلاحيات للوصول لهذا المكان. لهذا من الافضل نقله بداخل المشروع كمل وضحت لك.
-
الخطا لديك هنا يبدو ان المسار الذى قمت بادخاله خاطئ لذلك قم بتحديد مسار ملف ال autoload الصحيح ووضعه هنا فى هذا السطر
-
وعليكم السلام ورحمة الله وبركاته . هل يتم توليد صورة ال qrcode بشكل صحيح ؟ تاكد من الصورة يتم توليدها بشكل صحيح اولا وفى المسار الذى حددته انت فى الكود /img/qr يمكنك ارسال الصور عن طريق تضمين الصورة فى الايميل عن طريق الدالة AddEmbeddedImage حيث تستقبل عدة معاملات ما نريده هو اول معاملين , حيث اول هو مسار الصورة وثانى معامل هو cid اى الاسم المستعار الذى ستقوم باستعماله فى رسالة الايميل ويمكنك استعماله هكذا cid:name واستبدال name بالاسم الذى قمت بتمريرة للدالة . <?php include('header.php'); use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'PHPMailer/src/Exception.php'; require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; // require 'C:\Windows\System32\vendor/autoload.php' require 'include/phpqrcode/qrlib.php'; // ?> <!--------------------------------------------------------------------------------> <!------------------------------------header--------------------------------------> <!--------------------------------------------------------------------------------> <div class="col-md-9 pan1"> <ol class="breadcrumb" style="background-color: #fff;padding-top:8px;padding-bottom:8px;color:#000;font-size:16px;"> <li><a href="projetcs.php">المشاريع</a></li> <li class="active">القبول</li> </ol> </div> </div> <div class="row"> <div class="col-md-9 pan1"> <div class="panel" style="color:#000;"> <div class="panel-body" style="font-size:14px; padding-left:40px;padding-right:40px;padding-bottom:25px;padding-top:25px;"> <?php if(isset($_GET['id'])){ // $id_p = intval($_GET['id']); $sql = "SELECT * FROM `show_projects_adm` WHERE id_Pro=$id_p"; $query_p = mysqli_query($con,$sql); $rows_p = mysqli_fetch_array($query_p); // $id_pro = intval($_GET['id']); $querypost2="SELECT * FROM `projects` WHERE `id_Pro`=$id_pro"; $result2=mysqli_query($con,$querypost2); $rows2=@mysqli_fetch_array($result2); $id_std = $rows2['Num_STD']; // //$id_std = intval($_GET['id']); $querypost="SELECT * FROM `student` WHERE `id_std`=$id_std"; $result=mysqli_query($con,$querypost); $rows=@mysqli_fetch_array($result); $email_std = $rows['Email_STD']; // // البيانات التي تريد تضمينها في رمز الاستجابة السريعة (QR code) $data = $rows_p['desc_Project']; // اسم الملف الذي يتم حفظه (يمكنك تغييره إلى أي اسم تفضله) $filename = 'img/qr/'.$rows_p['id_Pro'].'_qrcode.png'; // إنشاء رمز QR وحفظه في الملف المحدد QRcode::png($data, $filename); // // Create a new PHPMailer instance $mail = new PHPMailer(true); try { // Server settings $mail->isSMTP(); $mail->Host = 'aaa'; // SMTP server $mail->SMTPAuth = true; $mail->Username = 'aa'; // SMTP username $mail->Password = 'aa'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to $mail->CharSet = 'UTF-8'; // Sender and recipient $mail->setFrom('info@aa.com', 'موقع koora'); $mail->addAddress($email_std, 'info'); // Email content $mail->isHTML(true); $mail->Subject = 'قبول المشروع من قبل اللجنة'; $mail->addEmbeddedImage($filename, 'qrcode'); // $mail->Body = '<h3>تم القبول المشروع الخاص بك بنجاح</h3>'; $mail->Body= 'qrcode <img src="cid:qrcode" alt="cid:qrcode">'; // Send email $mail->send(); //echo 'Email has been sent successfully'; } catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; } //$message = "لقد م قبول تم قبول المقترح بنجاح"; //$headers = "From: info@aa.com"; /// Send // mail($email_std, 'تم قبول المقترح بنجاح', $message); $sql = "UPDATE `projects` SET `Stat`=1 WHERE `id_Pro`='".intval($_GET['id'])."'"; mysqli_query($con,$sql); echo '<div class="col-md-12">'; echo '<div class="text-center alert alert-success" role="alert">تم قبول بنجاح</div>'; echo '<meta http-equiv="refresh" content="3;url=projetcs.php" />'; echo '</div>'; //$send = mysqli_real_escape_string($con,$_POST['username']); /* if(isset($_POST['submit'])){ } */ } ?> </div> </div> </div> </div> <?php include('footer.php'); ?> وهذا الكود بعد التعديل
- 6 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . نعم يمكنك استخدام الدالة gcd فى numpy التى تسمح لك بتمرير رقمين لها وتقوم بارجاع لك ناتج القسمة المشترك الاكبر "Greatest common divisor" . وهذا كود للتوضيح. import numpy as np num1 = 6 num2 = 9 x = np.gcd(num1, num2) print(x) #3 ويمكنك ايضا استخدمها على مصفوفة تحتوى على عدة ارقام و تقوم بارجاع ناتج القسمة الاكبر لجميع هذه الارقام معا . وهذا هو الكود الخاص بها . import numpy as np arr = np.array([20, 8, 32, 36, 16]) x = np.gcd.reduce(arr) print(x) #ُ4
- 3 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . المطلوب هو ان تقوم بانشاء دالة تاخذ اول معامل وهو عبارة عن dictionary اى مصفوفة تحتوى على الاسماء الخاصة بالمنتجات وعددها الموجود لديك فى المخزن . والمطلوب هو التكرار على هذا ال dictionary ورؤية اذا كان لديك مخزون كافى لتقوم بالبيع للعميل . حيث ان ثانى معامل هو اسم المنتج الذى يرد ان يقوم بشراءه والاخير هو عدد المنتجات . الخطأ لديك انك تقوم باستقبال سلسلة نصية وليس dictionary
- 13 اجابة
-
- 1
-