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

السؤال

نشر

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

فخطر ببالي فكرتين ولكن لا اعرف  تنفيذهم  100% فهي مجرد pseudo code 

الاولى  عبر ادخال حقل جديد في قاعدة البيانات ('confirm') من النوع Boolean و اعطائه قيمة افتراضية  و هي 0 (اي لم يشترك)

و من ثم عند الاشتراك نقوم بعمل update في قاعدة البيانات للتحول القيمة من 0 الى 1 عبر الدالة update في ال UserConroller

ثم نقوم بجلب بيانات المستخدم الذي اشترك عبر الدالة index() في ال UserController  مع الشرط ان ال confirm =1 

$user=User::all() where confirm=1

ولكنني لا اريد ان اخسر البيانات التي ادخلتها لانه يتوجب علي ان انفذ الامر php artisan migrate:fresh

الثانية عبر ال request

public function postUsers(Request $request){ return 'users' . $request->input('email'); }

ولكنني فقط بحاجة الى ثلاث معلومات من المستخدم و هي ال id , name ,email فقط

هل هنالك طرق اخرى؟

هذا حقل الادخال

 <form method="POST" action="">

        @csrf

        <input type="hidden" name="user_id" value="{{ Auth()->user()->id }}">

        <h1 class=" text-center text-4xl font-bold p-4 text-gray-400">{{('Subscribe for latest news')}} </h1>

        <div class=" flex flex-wrap -mx-3 mb-6 justify-center">

            <div class="w-3/4 px-3 mt-10">

                <label class="block uppercase tracking-wide text-gray-700 text-xs font-bold mb-2" for="grid-password">

                    {{__(' E-mail')}}

                </label>

                <input name="email" class="  appearance-none block w-full bg-gray-200 text-gray-700 border border-gray-200 rounded py-3 px-4 mb-3 leading-tight focus:outline-none focus:bg-white focus:border-gray-500" id="email" type="email">

            </div>

        </div>

        <div class="md:flex md:items-center ">

            <div class="md:w-1/3 text-center ">

                <button class="  shadow bg-blue-400 hover:bg-blue-200 focus:shadow-outline focus:outline-none text-white font-bold py-2 px-4 rounded" type="submit">

                    {{__('Subscribe')}}

                </button>

            </div>

    </form>

 

وهذا الصفحة التي اريد ان اعرض بها البيانات

@extends('layouts.app')

@section('content')

<div class="container text-center flex justify-center ">

    <table class="table-fixed border-separate border-4 p-5 m-10 w-full ">

        <thead>

            <tr>

                <th class=" ">Id</th>

                <th class="">Name</th>

                <th class=" ">Email</th>

            </tr>

        </thead>

        <tbody>

            @foreach($users as $user)

            <tr>

                <td class="p-10">{{$user->id}}</td>

                <td class="p-10">{{$user->name}}</td>

                <td class="p-10">{{$user->email}}</td>

            </tr>

            @endforeach

        </tbody>

    </table>

</div>

@endsection

 

Recommended Posts

  • 0
نشر
بتاريخ 20 دقائق مضت قال Mohammad Kiblawi:

ولكنني لا اريد ان اخسر البيانات التي ادخلتها لانه يتوجب علي ان انفذ الامر php artisan migrate:fresh

لماذا عليك تنفيذ هذه التعليمة؟ عملية التهجير قائمة على عدم العبث بالبيانات أثناء تغيير هيكلية الجداول، قم بإنشاء ملف تهجير جديد وأضف له الشيفرة المسؤولة عن إضافة الحقل الجديد ثم نفذ الأمر php artisan migrate فقط حيث أنه يقوم بتهجير الملفات التي لم تهجر..

أما الفكرة الأولى صحيحة، وهذا هو المطلوب، قم بتنفيذها.

حاول تنفيذ أفكارك، والخطأ هو الجزء المفيد بعملية التعلم، اخسر البيانات اليوم أثناء التجريب وتعرف على سبب المشكلة لكي تتفاداها في المستقبل

دوماً، افتح التوثيق واقرأ التعليمات:

Laravel migration updating tables

 

 

 

  • 0
نشر

أعتقد أنه يُمكن لأي شخص الإشتراك بالنشرة البريدية بغض النظر عن ما إذا كان مشترك في الموقع او لا فيُمكن للزوار أيضاً الإشتراك في النشرة البريدية لذلك من الأفضل إنشاء جدول جديد تضع به الأشخاص الذين إشتركو في النشرة البريدية يحتوي الجدول على حقل email كحقل مبدئي.

في إستمارة تسجيل عضوية جديدة تضيف حقل checkbox يكون إختياري إذا أراد المستخدم الإشتراك بالنشرة البريدية يُحدد ذلك الحقل و على أساسه تُسجل إيميل ذلك الشخص في جدول newsletters.

أما في إستمارة الإشتراك بالنشرة تضع حقل الإيميل و في المتحكم الخاص بالعملية تبحث عن الإيميل الذي أدخله الشخص في جدول newsletters إن لم يكن موجود تقوم بإضافته.

  • 0
نشر
بتاريخ 9 ساعات قال عبود سمير:

أعتقد أنه يُمكن لأي شخص الإشتراك بالنشرة البريدية بغض النظر عن ما إذا كان مشترك في الموقع او لا فيُمكن للزوار أيضاً الإشتراك في النشرة البريدية لذلك من الأفضل إنشاء جدول جديد تضع به الأشخاص الذين إشتركو في النشرة البريدية يحتوي الجدول على حقل email كحقل مبدئي.

في إستمارة تسجيل عضوية جديدة تضيف حقل checkbox يكون إختياري إذا أراد المستخدم الإشتراك بالنشرة البريدية يُحدد ذلك الحقل و على أساسه تُسجل إيميل ذلك الشخص في جدول newsletters.

أما في إستمارة الإشتراك بالنشرة تضع حقل الإيميل و في المتحكم الخاص بالعملية تبحث عن الإيميل الذي أدخله الشخص في جدول newsletters إن لم يكن موجود تقوم بإضافته.

تقصد ان اقوم بعمل جدول بينات جديد user_submit يحتوي  email و foreign key user_id و اقوم بعمل علاقة one to one بين ال user و بين هذا الجدول

  • 0
نشر
بتاريخ منذ ساعة مضت قال Mohammad Kiblawi:

تقصد ان اقوم بعمل جدول بينات جديد user_submit يحتوي  email و foreign key user_id و اقوم بعمل علاقة one to one بين ال user و بين هذا الجدول

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

أنت تٌفكر فقط في المشتركين بالموقع الخاص بك لكن الفكرة التي طرحتها تُمكن حتى الزوار الذيين لم يفتحو بعد حساب لهم في الموقع أن يشتركو في النشرة البريدية الخاصة بالموقع.

  • 0
نشر (معدل)
بتاريخ On 8/14/2021 at 23:32 قال عبود سمير:

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

أنت تٌفكر فقط في المشتركين بالموقع الخاص بك لكن الفكرة التي طرحتها تُمكن حتى الزوار الذيين لم يفتحو بعد حساب لهم في الموقع أن يشتركو في النشرة البريدية الخاصة بالموقع.

عذرا على السؤال المتأخر بسبب انقطاع التيار الكهربائي

نعم  البريد الالكتروني من اهم الاشياء , و لمن يريد الاشتراك بالنشرة فعليه ان يضع بريده الالكتروني و لكن هنالك مشكلة!

فالمستخدم المسجل ضمن الموقع عليه ان يدخل بريده الالكتروني و هو من الاساس محفظ بريده ضمن قاعدة البيانات  او يمكن ان يدخل email آخر (غير الذي قام بتسجيله لدخول الحساب) لذلك عندما اريد ان استخدم الدالة store لحفظ البيانات التي ادخلها المستخدم علي ان احفظ ال email الذي ادخله المستخدم الذي قد يكون محفظ منذ بادئ الامر في قاعدة البيانات(عند التسجيل) او غير محفظ (مثل ان يدخل المستخدم email آخر ) ولكن لا يمكن تخزين الايميل الجديد لان هنالك ايميل محفظ بالفعل!!

انا فكرتي كانت باضافة حقل boolean جديد لجدول ال users يدعى confirm و القيمة الافتراضية له هي 0

فعند الضغط على زر الاشتراك يقام بتحديث البيانات فتتعدل القيمة من 0 الى 1 و هنا اعرف من اشترك بالنشرة

و لكن المشكلة هي اني اريد استخدام دالتين واحدة لتخزين البريد الالكتروني store() و واحدة لتعديل القيمة في قاعدة البيانات update() فكيف اجمع بين الاثنين؟

و انا الفكرة لا اعرف كيف اطبقها 100%

ف انا رسمت الكود في مخيلتي pseudo code 

 

 

تم التعديل في بواسطة Mohammad Kiblawi
تعديل
  • 0
نشر

هل هنال

بتاريخ On 8/16/2021 at 19:47 قال Mohammad Kiblawi:

عذرا على السؤال المتأخر بسبب انقطاع التيار الكهربائي

نعم  البريد الالكتروني من اهم الاشياء , و لمن يريد الاشتراك بالنشرة فعليه ان يضع بريده الالكتروني و لكن هنالك مشكلة!

فالمستخدم المسجل ضمن الموقع عليه ان يدخل بريده الالكتروني و هو من الاساس محفظ بريده ضمن قاعدة البيانات  او يمكن ان يدخل email آخر (غير الذي قام بتسجيله لدخول الحساب) لذلك عندما اريد ان استخدم الدالة store لحفظ البيانات التي ادخلها المستخدم علي ان احفظ ال email الذي ادخله المستخدم الذي قد يكون محفظ منذ بادئ الامر في قاعدة البيانات(عند التسجيل) او غير محفظ (مثل ان يدخل المستخدم email آخر ) ولكن لا يمكن تخزين الايميل الجديد لان هنالك ايميل محفظ بالفعل!!

انا فكرتي كانت باضافة حقل boolean جديد لجدول ال users يدعى confirm و القيمة الافتراضية له هي 0

فعند الضغط على زر الاشتراك يقام بتحديث البيانات فتتعدل القيمة من 0 الى 1 و هنا اعرف من اشترك بالنشرة

و لكن المشكلة هي اني اريد استخدام دالتين واحدة لتخزين البريد الالكتروني store() و واحدة لتعديل القيمة في قاعدة البيانات update() فكيف اجمع بين الاثنين؟

و انا الفكرة لا اعرف كيف اطبقها 100%

ف انا رسمت الكود في مخيلتي pseudo code 

 

 

هل من احد يساعدني في هذا الجزء؟

  • 0
نشر
بتاريخ On 8/16/2021 at 19:47 قال Mohammad Kiblawi:

و لكن المشكلة هي اني اريد استخدام دالتين واحدة لتخزين البريد الالكتروني store() و واحدة لتعديل القيمة في قاعدة البيانات update() فكيف اجمع بين الاثنين؟

منذ تسجيل المستخدم في الموقع يمكن إضافة حقل آخر (اختياري) مع وضع checkBox في حال النقر عليه (هل ترغب بالاشتراك بالنشرة الربيدية؟) (يظهر حقل إدخال للإيميل الآخر)يضع فيه البريد الإلكتروني الذي يريد أن يستقبل عليه النشرة البريدية مع أن معظم المستخدمين يتم وضع نفس بريدهم للنشرة.. ويمكنك وضعه نفسه بشكل افتراضي، ثم إخبار المستخدم إن رغب في تبديله ببريد آخر..

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

إن كنت تريد إضافة خاصية confirm للمستخدمين المسجلين، يمكن عمل استعلامين واحد لجدول المستخدمين وآخر للزوار ودمج النتائج في مصفوفة و إرسال النشرة للجميع.

  • 0
نشر
بتاريخ 1 ساعة قال Wael Aljamal:

منذ تسجيل المستخدم في الموقع يمكن إضافة حقل آخر (اختياري) مع وضع checkBox في حال النقر عليه (هل ترغب بالاشتراك بالنشرة الربيدية؟) (يظهر حقل إدخال للإيميل الآخر)يضع فيه البريد الإلكتروني الذي يريد أن يستقبل عليه النشرة البريدية مع أن معظم المستخدمين يتم وضع نفس بريدهم للنشرة.. ويمكنك وضعه نفسه بشكل افتراضي، ثم إخبار المستخدم إن رغب في تبديله ببريد آخر..

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

إن كنت تريد إضافة خاصية confirm للمستخدمين المسجلين، يمكن عمل استعلامين واحد لجدول المستخدمين وآخر للزوار ودمج النتائج في مصفوفة و إرسال النشرة للجميع.

يعني عليي ان انشأ جدول بيانات جديد خاص بال email و لا داعي لانشاء model خاص به؟

  • 0
نشر
بتاريخ 9 دقائق مضت قال Mohammad Kiblawi:

يعني عليي ان انشأ جدول بيانات جديد خاص بال email و لا داعي لانشاء model خاص به؟

إن عمل Model للجدول هو أمر جيد بالفعل، مع ملفات التهجير وكل شيئ.. هذا مفيد بعد نقل المشروع و تنفيذ أوامر التهجير سيتم إنشاء الجدول مباشرة، ولا يتطلب عمله من جديد بشكل منفصل، أي بما أن هذا الجدول من صلب المشروع عليك بناءه بأفضل طريقة ممكنة وللتحديثات في المستقبل، لربما أضفت تصنيفات لمواضيع النشرة البريدية، إن عمل نموذج و ملف تهجير هو الأفضل.

بالإضافة لإمكانية استخدام  Eloquent ORM

  • 0
نشر (معدل)
بتاريخ 26 دقائق مضت قال Wael Aljamal:

أفضل استخدام كلمة subscribe لأن لها دلالة مناسبة بالضبط، أما confirm لوحدها مثلا تدل على تأكيد الإيميل..

الحمدلله نجحت عملية الاشتراك  لكن بقي ترجمة الموقع حيث لا تعمل الترجمة

شكرا لكما 

Annotation 2021-08-18 001912.png

تم التعديل في بواسطة Mohammad Kiblawi
تعديل

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...