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

Hafsa Aly

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

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

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

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

    4

أجوبة بواسطة Hafsa Aly

  1. بتاريخ 1 دقيقة مضت قال سامح أشرف:

    إن كانت هذه الدالة homepage بداخل class فلا توجد في الكود مشكلة.

    إن الكود يعمل ولا يظهر مشكلة أو خطأ فهو كود سليم وليس بحاجة إلى تعديل، لكن يفضل أن يكون الكود منظم ومرتب ويحتوي على تعليقات لشرح كل الخطوات.

     

    مثال لنفس الكود بداخل class:

    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Slide;
    use App\About;
    
    
    class HomeController extends Controller {
    
      public function homepage(){
          $slides = Slide::all();
          $about = About::whereIn('id', [1,2])->get();
          return view ('front.homepage', compact('slides','about'));
    	}
    }

     

    نعم هي بداخل class بالفعل

    بتاريخ 18 دقائق مضت قال Hafsa Aly:

    نعم هي بداخل class بالفعل

     

    بتاريخ 25 دقائق مضت قال Hafsa Aly:
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Slide;
    use App\About;
    
    
    
    public function homepage(){
                $slides = Slide::all();
                $about = About::whereIn('id', [1,2])->get();
                return view ('front.homepage', compact('slides','about'));
            }
    هل هذا الكود صحيح

     

    اذا اردت ان اعرض من اخر السجلات الى اولها  فكيف؟

    • أعجبني 1
  2. بتاريخ 29 دقائق مضت قال بلال زيادة:

    هل هكذا 

    
    $aboutus = About::all();
    
    $about =About::whereIn('id', [1,2])->get();

    يمكنك استخدام كل استعلام بشكل منفصل.

    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Slide;
    use App\About;
    
    
    
    public function homepage(){
                $slides = Slide::all();
                $about = About::whereIn('id', [1,2])->get();
                return view ('front.homepage', compact('slides','about'));
            }
    هل هذا الكود صحيح

     

    • أعجبني 1
  3. بتاريخ 2 دقائق مضت قال بلال زيادة:

    لا داعي للكود التالي 

    
    $aboutus = About::all();

    الثاني يعمل بشكل صحيح مع تغيير $aboutus إلى اسم المودل هكذا 

    
    $about =About::whereIn('id', [1,2])->get();

     

    ولكن انا اريد كل السجلات الموجوده في الموديل في مرة  وفي مرة اخرى اريد سجلين فقط

  4. بتاريخ 15 دقائق مضت قال بلال زيادة:
    
    $users = User::select('name', 'image', 'age')->where('age', '>=', 18)->limit(100)->get();

    يمكنك جلب عدة حقول باستخدام دالة select كما في المثال إعلاه. 

    $aboutus = About::all();
    $about = $aboutus::whereIn('id', [1,2])->get();
      هل هذه الطريقه صحيحه انني اخذ القيمه من ال instance 

     

  5. بتاريخ 9 دقائق مضت قال سامح أشرف:

    يمكن إستخدام التابع whereIn والذي يقبل اسم عمود ومصفوفة من القيم

    
    $users = User::whereIn('id', [6, 7, 9])->get();

    في الكود أعلاه سيتم جلب السجلات التي تحمل معرف 6 و 7 و 9 فقط.

    هنا مثال آخر لجلب كل السجلات الخاصة بالمستخدمين الذين لديهم عمر أكبر من 18 ووضع حد لعدد السجلات التي يتم جلبها وهو 100 سجل فقط

    
    $users = User::where('age', '>=', 18)->limit(100)->get();

     

    واذا اردت مثلا صورته وعمره لنفس السجلات

  6. بتاريخ 10 دقائق مضت قال سامح أشرف:
    • التابع first() يقوم بجلب أول سجل يجده فقط، بينما التابع get() يجلب صنف collection، ويمكن تخيل هذا الصنف على أنه مصفوفة array من السجلات يمكن إستخدامها في حلقات التكرار مثل for loop أو while loop.
    • بالنسبة لجلب عدد محدد من السجلات فيمكن إستخدام التابع limit(num) والذي يقبل عدد يتم تمريره إليه يعبر عن عدد السجلات المراد جلبها.
    
    $user = User::limit(2)->get();
    • بالنسبة لجلب السجلات بطريقة عشوائية in random order فيمكن إستخدام التابع ()inRandomOrder ليجلب كل السجلات في ترتيب عشوائي.
    
    $users = User::inRandomOrder()->get();

     

    ولكن  التابع limit سيجلب لي او سجلين  يراهم  اما اذا اردي سجلين مثلا السادس والسابع فماذا استخدم

    • أعجبني 1
  7. بتاريخ On 2/10/2021 at 01:29 قال عبود سمير:

    هناك عدة طرق لعمل ذلك في لارافيل بإستخدام eloquent مثلاً فكما قلت أنت لا يوجد تابع last يُمكنك إستخدام التابع latest مع التابع first لتحقيق ذلك بهذه الطريقة:

    إذا أردنا جلب آخر مستخدم:

    
    <?php
    
    User::latest()->first();

    أو يُمكنك إستعمال التابع orderByDesc مع التابع first:

    
    User::orderByDesc('created_at')->first();

    أما بخصوص هذا السؤال:

    يُمكنك ذلك عن طريق إستخدام التابع inRandomOrder و التابع first كما يلي:

    
    User::inRandomOrder()->first();

    و سيتم جلب مُستخدم عشوائي في كل مرة.

    هل التابع first()  نفس دور  get()   ام انه لجلب المستخدم الاول

    واذا كان لدي مثلا في جدول البيانات ثلاثة مواضيع واريد عرض اول وثاني موضوع فقط 

    ومرة اخرى عرض موضوعين فقط  ولكن بطريقه عشوائيه

     

    بتاريخ On 2/12/2021 at 01:49 قال عبود سمير:

    يُمكن جلب المُستخدم عن طريق تحديد مُعرف المُستخدم بهذا الشكل مثلاً:

    
    <?php
    
    $user = User::find(1); // جلب المُستخدم عن طريق تحديد المُعرف 1
    
    // او يُمكننا إستخدام التابع where
    $user = User::where('id', 1)->get();

    لكن السؤال المطروح عن جلب آخر مُستخدم مُسجل في التطبيق في هذه الحالة لا ندري ماهي قيمة مُعرف هذا المُستخدم لذلك نلجأ لتلك الطريقة أننا نرتب المُستخدمين حسب وقت إنشائهم من الأحدث إلى الأقدم ثم نجلب أول سجل عن طريق إستعلام واحد فقط ، يُمكن بنفس الطريقة ترتيبهم حسب المُعرف من الأكبر إلى الأصغر و جلب أول سجل

    أما السؤال الثاني فعن جلب سجل عشوائي من جدول ما نحن لا نعرف مُسبقاً مُعرف هذا السجل لذلك نستخدم التابع inRandomOrder ليُرتب السجلات ترتيباً عشوائياً في كل مرة يتم تنفيذه و عن طريق التابع first نجلب أول سجل بعد الترتيب العشوائي.

    هل التابع first()  نفس دور  get()   ام انه لجلب المستخدم الاول

    واذا كان لدي مثلا في جدول البيانات ثلاثة مواضيع واريد عرض اول وثاني موضوع فقط 

    ومرة اخرى عرض موضوعين فقط  ولكن بطريقه عشوائيه

  8. بتاريخ On 10‏/2‏/2021 at 01:29 قال عبود سمير:

    هناك عدة طرق لعمل ذلك في لارافيل بإستخدام eloquent مثلاً فكما قلت أنت لا يوجد تابع last يُمكنك إستخدام التابع latest مع التابع first لتحقيق ذلك بهذه الطريقة:

    إذا أردنا جلب آخر مستخدم:

    
    <?php
    
    User::latest()->first();

    أو يُمكنك إستعمال التابع orderByDesc مع التابع first:

    
    User::orderByDesc('created_at')->first();

    أما بخصوص هذا السؤال:

    يُمكنك ذلك عن طريق إستخدام التابع inRandomOrder و التابع first كما يلي:

    
    User::inRandomOrder()->first();

    و سيتم جلب مُستخدم عشوائي في كل مرة.

    لماذا لا نجلب البيانات باستخدام id 

    اقصد لماذا نحتاج إلى هذه الطريقه إذا كان لكل مستخدم ،id

  9. السلام عليكم ورحمه الله

    ماافرق بين تعريف خصائص الكائن في props او في data:function(){} ومتى تكون هنا والعكس

    ,لماذا يتم تعريف المكون خارج الinstance of vue وخصائصه لوحدها

  10. بتاريخ 4 ساعات قال عبد الله محمد5:

    السلام عليكم 

    الخطأ عندك هو انك قمت بعمل comment للروابط الخاصة بالبوتستراب جافا سكربت بالاضافة إلى الرابط الخاص بالjquery .

    قمت بتعديله وهو يعمل بصورة جيدة الان .

    admin-area.rar

    شكرا كثيرا لك هذه النقطه كانت هاتوقف المشروع كله معي شكرا لكم فريق عمل رائع

  11. بتاريخ 12 ساعات قال عبد الله محمد5:
    
    if(isset($_POST["submit"]) && !empty($_FILES["file"]["name"])){

    هنا يتم التأكد من أن الملف موجود وأن الform تم ارسال بياناته 

     

    
        // Allow certain file formats
        $allowTypes = array('jpg','png','jpeg','gif','pdf');
        if(in_array($fileType, $allowTypes)){
            // Upload file to server

    هنا يتم التأكد من نوع الملف انه ملف صورة بالامتدادات الموضحة فإذا كان امتداد الملف واحداً من هذه الامتدادات فإن الملف يعتبر مقبولاً .

    فقط هنالك تعديل بسيط الرجاء إضافة السطر التالي:

    
    $fileName = $_FILES['image']['name'];
    $fileType = pathinfo($fileName, PATHINFO_EXTENSION);
    
            // Upload file to server
            if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
                // Insert image file name into database
                $insert = $db->query("INSERT into images (file_name, uploaded_on) VALUES ('".$fileName."', NOW())");

     الدالة move_uploaded_file تقوم بنقل الملف الى المكان المخصص وهو الtargetFilePath$ ويجب عليك تعريف مسار خاص بالمكان الذي تريد تحميل الملف عليه.

    إذا تم نقل الملف بنجاح تقوم الدالة بارجاع true فبالتالي يتم تنفيذ السطر القادم وهو ادخال اسم الملف ووقت رفعه على السيرفر

    هل كتابة الكود بهذه الطريقه لايتضمن حفظ الصورة ع السيرفر وحفظها مباشرة في قاعدة البيانات

    $folder = "../../site/images/";
    
         $image = $_FILES['image']['name'];
    
         $target = $folder.basename($image);
    
         move_uploaded_file($_FILES["image"]["tmp_name"], "$folder".$_FILES["image"]["name"]);
    
         $images = $_FILES['images']['name'];
    
         $target = "$folder".basename($images);
    
         move_uploaded_file($_FILES["images"]["tmp_name"], "$folder".$_FILES["images"]["name"]);

     

  12. بتاريخ 13 دقائق مضت قال عبد الله محمد5:

    السلام عليكم أخي 

    هناك طريقتان :

    الاولى ان تقوم بتحميل الصورة على قاعدة البيانات وهذه غير محبذه لأنها تثقل من قاعدة البيانات وتجعل الضغط عليها كبيراً.

    الثانية أن تقوم بتحميل الصورة على السيرفر و من ثم تقوم بتخزين المسار المؤدي الى الصورة في قاعدة البيانات.

    مثال:

    
    if(isset($_POST["submit"]) && !empty($_FILES["file"]["name"])){
        // Allow certain file formats
        $allowTypes = array('jpg','png','jpeg','gif','pdf');
        if(in_array($fileType, $allowTypes)){
            // Upload file to server
            if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
                // Insert image file name into database
                $insert = $db->query("INSERT into images (file_name, uploaded_on) VALUES ('".$fileName."', NOW())");
                if($insert){
                    $statusMsg = "The file ".$fileName. " has been uploaded successfully.";
                }else{
                    $statusMsg = "File upload failed, please try again.";
                } 
            }else{
                $statusMsg = "Sorry, there was an error uploading your file.";
            }
        }else{
            $statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';
        }
    }else{
        $statusMsg = 'Please select a file to upload.';
    }

    بالنسبة للpassword hashing فإنك تقوم بتشفير كلمة المرور حتى لايتمكن احد من الاطلاع عليها

    بمعنى أنك لاتخزن كلمة المرور فعلياً

    لم افهم شيئ من الكود ممكن التوضيح

  13. السلام عليكم
     methods:{
       fetchWeather(e){
         if(e.key== "Enter") {
          //  let xhr = new XMLHttpRequest();
          //  xhr.open('GET'.this. url_base + this.query)
    اولا هنا اردت استعمال ajax بدلا من fetch ولم اعرف 
    
            fetch('${this.url_base}weather?q=${this.query}&units=metric&APPID={this.api_key}')
    ثانيا هنا مافائدة العلامه ${}
    
            .then(res=>{
              return res.json();
            }).then(this.setResult)     
         } 
       }, 
       setResult(results){
         this.weather = results;
       }
     }

     

    • أعجبني 1
  14. بتاريخ On 1/12/2021 at 15:54 قال أحمد حبنكة:

    وعليكم السلام ورحمة الله وبركاته

    الكود مؤلف من ثلاثة أقسام، اﻷول هو:

    
    fetch(url)

    تابع fetch هو طريقة لعمل HTTP Requests من خلال الـjavascript ويعتبر بديلاً عن XMLHttpRequest أي بديلاً عن الـAjax.

    هذا التابع يرد ما يسمى بـPromise، الـPromise هو تمثيل ﻷي عملية asynchronous حيث ينفذ بالخلفية وعندما ينتهي تنفيذه ينفذ التابع الذي تمرره كمعامل إلى تابع then، في حالة الـfetch ينفذ تابع الـthen عندما ينتهي الـrequest من السيرفر، القسم الثاني هو تابع then التالي:

    
    .then(response => {return response.text()})

    المعامل response هو نتيجة Promise وأي Promise أي أيُ عملية asynchronous قد تأتي بنتيجة وقد لا تأتي بنتيجة، المعامل response هو Response object عنده الكثير من التوابع لجلب معلومات عن الجواب الذي أرسله السيرفر، اﻵن نريد أن نجلب response body ونحن نتوقع أن يكون response body هو نصي مثل html response مثلاً لكن قد يكون أيضاً text/plain.

    لجلب response body نستخدم تابع text، تابع text أيضاً يرد promise أي أنه عملية asynchronous ، قد تقول اﻵن لماذا وضعنا قبل response.text() تعليمة return ؟ ألا تستخدم هذه التعليمة لرد قيمة ؟

    إن Promise يعتبر object له تعامل خاص من المتصفح ولكنه كأي object يمكن رده كقيمة وهذا يجعل كتابة تابعك الخاص الذي يرد Promise ممكناً والـPromise لديه constructor مثله مثل أي object.

    عندما نرد promise كقيمة داخل تابع then لـPromise آخر فإن نتيجة تابع then تكون أيضاً Promise.

    سأعيد الشرح ﻷنني أعلم أن اﻷفكار أصبحت متشابكة، أولاً لدينا:

    
    fetch(url)

    يرد Promise لذلك نستدعي then ونجلب response body باستخدام تابع text، الـthen يرد promise إذاً التعبير التالي:

    
    fetch(url).then(response => {return response.text()})

    عبارة عن Promise كبير ينتهي عندما ينتهي الـrequest من السيرفر وتنتهي عملية response.text أيضاً، بما أنه Promise كبير يمكننا كتابة .then وهذا هو القسم الثالث من الكود وهو كالتالي:

    
    .then(data => {})

    الـdata هنا هي نتيجة response.text وﻷن response.text يرد Promise<string> إذاً فالـdata عبارة عن string هو response body as text، قد يكون نص html يمكننا إضافته إلى DOM وبهذا يصير الكود AJAX نظامي، قد يكون أيضاً text/plain، الكود السابق لا يفعل شيئاً بالـresponse body ﻷنه مجرد مثالٍ لا أكثر.

    كمعلومة إضافية الـResponse object لديه تابع هو json يرد response body as JSON Object.

    لفهم المزيد من اﻷكواد مثل كودك أنصح بالقراءة بشكل أكبر عن موضوع Promises وستختمه بإذن الله تعالى.

    بالتوفيق وشكراً لك

    تقصد اننا نستطيع جلب بيابنات الapi  باستخدام ال ajax وهي طريقه افضل

×
×
  • أضف...