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

السؤال

نشر

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

ارغب ان اضع لكل منتج رقم عشوائي مختلفة بحيث ان ارقام المنتجات لن تتشابه ابدا

اعلم ان طريقة عمل رقم من خلال دالة random numbers في فلاتر وسوف اقوم بتخزين هذا الرقم بجانب كل طلب في جدول البيانات في قاعدة البيانات 

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

 

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

Recommended Posts

  • 1
نشر

يمكنك توليد رمز uuid (Universally unique identifier) وهو عبارة عن رمز مكون من 128 بيت , مما يعني أنه إن قمنا بتوليد 10تريليون رمز سيكون إحتمالية وجود رمزين متشابهين هي 0.00006 

ولتوليد رموز uuid في flutter يمكننا إتباع الخطوات التالية

  1. تثبيت مكتبة uuid 
    flutter pub add uuid

     

  2. عمل import للمكتبة 

    import 'package:uuid/uuid.dart';

     

  3. نقوم بإنشاء كائن من الصنف  uuid 

    var uuid = Uuid();

     

  4. نقوم بعد ذلك بتوليد الرمز عبر مناداة الدالة v4 والتي تقوم بتوليد رمز من الإصدار الرابع وهو أخر إصدار موجود حاليًا للuuid ويعتبر أكثرهم أمانًا وأقلهم عرضةً للتكرار 

    uuid.v4()

     

  • 1
نشر

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

لو كنت تستخدم لارافل كباك أند فيمكن استخدام التابع inRandomOrder لفرز نتائج الاستعلام عشوائيًا. على سبيل المثال ، يمكنك استخدام هذا التابع لجلب مستخدم عشوائي:

$randomProducts = DB::table('products')->inRandomOrder()->get();

و يمكنك إرجاع البيانات كjson 

return response()->json($randomProducts);

 

  • 1
نشر
بتاريخ 12 دقائق مضت قال مروان مروان3:

اهلا اخي الكريم

شاكر لك شرحك الغالي بنسبة لماذا احتاجه الفكره كالتالي انا عامل كل منتج يمتكل id مختلف في قاعدة البيانات ولا يتكرر ولكني لا ارغب باستعماله امام المستخدم نوعا من السكيورتي يعنيولكن ارغب بعمل حقل ثاني يحمل نفس الفكره فقط هذا سيكون مثل الالة الحاسبة لعدد المنتجات او ك رقم تسلسل لها بالاضافة الى امكانية استعماله في البحث واظهاره للمستخدم وعمليات الخصومات ايضا وما شابه هل يمكن عمل هذا الخطوه من خلال mysql فقط؟ عمود اضافي يولد الارقام بشكل متسلسل لكل منتج جديد بدون ان يتكرر

هذا خطأ ، يمكنك الاعتماد على id الخاص بكل منتج بشكل طبيعي ، عن أي حماية تقصد ، و ماذا سيستفيد من يعرض رقم المنتج , لا داعي لأمور تعقيدية تعقد عمل البرنامج معك , أهتم بحماية الباك أند و حماية المدفوعات هذا سيفي بالغرض و بالإجابة عن سؤال صحيح يمكنك توليد code معين لكل منتج باستخدام mt_rand بهذا الشكل 

mt_rand(1, 9999);

 

  • 1
نشر
بتاريخ On 2/20/2022 at 14:11 قال مروان مروان3:

هل بيكون مختلف عن ID? primary key; 

بنسبة الى قاعدة البيانات؟

يمكنك استخدام معرف المنتج ID نفسه الموجود في حقل قاعدة البيانات الذي  يتم توليده تلقائياً auto increment عند تحديد حقل ID ك primary key بالضبط، وهكذا لن تكون مسؤول عن إدارة عملية توليد الأرقام العشوائية للمنتجات لأنها طريقة خطأ، الأرقام التسلسلية لا تتكرر وهي المناسبة في حالتك.

  • 0
نشر
بتاريخ 29 دقائق مضت قال Wael Aljamal:

لماذا تقوم بتوليد أرقام المنتجات ضمن التطبيق وليس ضمن BackEnd? ولماذا رقم عشوائي بدل رقم تسلسلي في قاعدة البيانات..

اهلا اخي ياليت تشرح الفكرتين لو تكرمت 

بنسبة الى ملفات php كيف بتكون الطريقه ؟

بتاريخ 3 ساعات قال شرف الدين2:

يمكنك توليد رمز uuid (Universally unique identifier) وهو عبارة عن رمز مكون من 128 بيت , مما يعني أنه إن قمنا بتوليد 10تريليون رمز سيكون إحتمالية وجود رمزين متشابهين هي 0.00006 

ولتوليد رموز uuid في flutter يمكننا إتباع الخطوات التالية

  1. تثبيت مكتبة uuid 
    
    flutter pub add uuid

     

  2. عمل import للمكتبة 

    
    import 'package:uuid/uuid.dart';

     

  3. نقوم بإنشاء كائن من الصنف  uuid 

    
    var uuid = Uuid();

     

  4. نقوم بعد ذلك بتوليد الرمز عبر مناداة الدالة v4 والتي تقوم بتوليد رمز من الإصدار الرابع وهو أخر إصدار موجود حاليًا للuuid ويعتبر أكثرهم أمانًا وأقلهم عرضةً للتكرار 

    
    uuid.v4()

     

اهلا بك اخي الكريم

شاكر لك مساعدتك سوف اقوم بتجربتها

بتاريخ 36 دقائق مضت قال Wael Aljamal:

لماذا تقوم بتوليد أرقام المنتجات ضمن التطبيق وليس ضمن BackEnd? ولماذا رقم عشوائي بدل رقم تسلسلي في قاعدة البيانات..

هل بيكون مختلف عن ID? primary key; 

بنسبة الى قاعدة البيانات؟

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

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

لو كنت تستخدم لارافل كباك أند فيمكن استخدام التابع inRandomOrder لفرز نتائج الاستعلام عشوائيًا. على سبيل المثال ، يمكنك استخدام هذا التابع لجلب مستخدم عشوائي:


$randomProducts = DB::table('products')->inRandomOrder()->get();

و يمكنك إرجاع البيانات كjson 


return response()->json($randomProducts);

 

اهلا اخي الكريم

شاكر لك شرحك الغالي بنسبة لماذا احتاجه الفكره كالتالي انا عامل كل منتج يمتكل id مختلف في قاعدة البيانات ولا يتكرر ولكني لا ارغب باستعماله امام المستخدم نوعا من السكيورتي يعنيولكن ارغب بعمل حقل ثاني يحمل نفس الفكره فقط هذا سيكون مثل الالة الحاسبة لعدد المنتجات او ك رقم تسلسل لها بالاضافة الى امكانية استعماله في البحث واظهاره للمستخدم وعمليات الخصومات ايضا وما شابه هل يمكن عمل هذا الخطوه من خلال mysql فقط؟ عمود اضافي يولد الارقام بشكل متسلسل لكل منتج جديد بدون ان يتكرر

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...