الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ترتيب الحقل الفريد Primarykey بتسلسل بعد الحذف

بدأه هالي الدهوكي في 21 يوليو 2012 · 10 رد · 900 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا يا شباب كيف حالكم إن شاء الله بخير ^_^

انا عملت سكربت اخبار

في php و sql

لكن واجهتني مشكلة في PHP ..... السوال هو ...

انا عملت يمكن للزائر يضيف تعليق و عملت لوحة ادارة لكل تعليق يحتوي على رابط التعديل و رابط المسح وبدون مشكلة

لكن المشكلة هي

مثلا عندي 3 خبر

و انا مسحت خبر الثاني بقى هناك خبر الاول و خبر الثالث و خبر الثاني يمسح حلووو لكن المشكلة وين هي هذا يأثر على التسلسل الرقمي

مثلا عندي ثلاثة خبر

1

2

3

انا مسحت الثاني

يضهر بهل شكل

1

3

فأنا اريد طريقة لتجنب هذه المشكلة

و شكرا

Professional Technology Information

HTML , CSS , PHP , JQuery , Action Script

Photographic Designer & websites Designer : Dinamic Sites & photographic Sites & Flash Sites

IF YOU WANT SEE MY WORKS

VISIT THIS LINK

Prince Designs

#2

اول شي ماهو مصدر التسلسل الرقمي هل هو من الجدول الموجود في قاعدة البيانات ؟

#3

نعم اخي هو

id - INT - auto_increment - primary

Professional Technology Information

HTML , CSS , PHP , JQuery , Action Script

Photographic Designer & websites Designer : Dinamic Sites & photographic Sites & Flash Sites

IF YOU WANT SEE MY WORKS

VISIT THIS LINK

Prince Designs

#4

اين انتم ؟ محتاج هل شئ كثير

Professional Technology Information

HTML , CSS , PHP , JQuery , Action Script

Photographic Designer & websites Designer : Dinamic Sites & photographic Sites & Flash Sites

IF YOU WANT SEE MY WORKS

VISIT THIS LINK

Prince Designs

#5

شئ طبيعي

فذلك لتجنب المشاكل أخي

auto increment

شئ عادي و طبيعي و ينصح بتركه

1 −1
#6

الـ ID المستخدم كـ auto increment لن يسبب لك مشاكل برمجية فعلية والله أعلم.

لكن ربما أنت تقوم بعرض "رقم" الخبر لمدير اللوحة (مثلاً) فهنا يظهر لديه 1 .. 3

في هذه الحالة يمكنك ببساطة اعتماد عداد بسيط لإظهار الترقيم بشكل صحيح، بغض النظر عن الترقيم الموجود في القاعدة والذي لا يهم مدير اللوحة فعلياً، وإن كان يهمّه (اديه بالجزمة على دماغه لأنه يتدخل فيما لا يعنيه :P)

إن أبقيت على auto increment فلا يوجد وسيلة حقيقية لإعادة الترقيم بالترتيب

بدون نقل البيانات بدون ترقيم إلى جدول آخر مؤقت

حذف الجدول الأصلي وإعادة إنشاؤه أو TRUNCATE البيانات بداخله ومن ثم OPTIMIZE ـه.

لكن هذه الطريقة مكلفة إن تم استخدامها بشكل متكرر وكانت البيانات ضخمة.

الطريقة الثانية أن تقوم بإلغاء AUTO_INCREMENT

وتقوم بالترقيم بشكل يدوي عند كل إدراج INSERT.

وعند حذف سجل ما، تقوم بتحديث UPDATE قيمة ID في حلقة.

مرة أخرى فإن هذا الطريقة مكلفة للبيانات الضخمة.

على الرغم من أن الكلفة قد لا تضيع زمن طويل يشعر به المستخدم،

لكن أحبّذ أن تقوم بإصلاح الكود حتى لا يكون لـ ID تأثير سلبي على النتائج،

ومسألة الإظهار للمستخدم يمكن معالجتها بسهولة.

1

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7

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

#8

شكرا للرد اخي العزيز قرأت الكثير عن auto incroment و مشاكلها ..... تسلم يا غالي للشرح المميز

Professional Technology Information

HTML , CSS , PHP , JQuery , Action Script

Photographic Designer & websites Designer : Dinamic Sites & photographic Sites & Flash Sites

IF YOU WANT SEE MY WORKS

VISIT THIS LINK

Prince Designs

#9
ekoo كتب:

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

وإن كنت لا أرى السبب الذي قد يجعلكم مضطرين لإعادة الترقيم, فقد أوضح الاستاذ Xacker بأن الحلول البديلة دائما موجودة سواء كانت المشكلة في العرض أم في غير ذلك! وإلا فإن استخدامك للـ auto_increment في غير محله!

على كل حال إن كنت فعلاً مضطر لإعادة الترتيب تلك في حقل من الحقول, فلا بد لك أولاً من التأكد من عدم استخدامك لقيم هذا الحقل في جداول أخرى على سبيل الربط ﻷن ذلك سيجعل من بياناتك مغلوطة وغير دقيقة نهائياً و هذه كارثة, في حال كنت متأكداً من عدم وجود أي reference لهذا الحقل ضمن الجداول الأخرى, فيمكنك ببساطة حذف الحقل الـ auto_increment "انتبه احذف الحقل التلقائي فقط" و إعادة انشاءه و ستقوم mysql بإعادة ترتيب قيم الحقل بشكل تسلسلي مجدداً!

بتوفيق الله...

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 8 أغسطس 2012 في 10:33

Everything will be fine when we TALK LESS, DO MORE


#10

هذه اول مشاركة ليه معاكم فى المنتدى

بالنسبة للمشكلة ديه هو انى التسلسل ميتمش عن طريق id

لان ال id auto increment

فمكن تعمل متغير i عبارة عن عداد وتعملو echo للمسلسل

مثال فى الصورة

post-266036-028906300 1345175596_thumb.j

المرفقات
counter.JPG
1
#11

شكرا لك اخي العزيز ...

Professional Technology Information

HTML , CSS , PHP , JQuery , Action Script

Photographic Designer & websites Designer : Dinamic Sites & photographic Sites & Flash Sites

IF YOU WANT SEE MY WORKS

VISIT THIS LINK

Prince Designs

مواضيع مشابهة