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

السؤال

Recommended Posts

  • 0
نشر

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

مثلا : 

| id | name | 
| -- | ---- |
| 1  | jhon |
| 2  | hsoub|
| 3  | ahmed|
| 4  | ola  |
| 5  | walid|

ثم قمت بحذف الصفين باﻷسماء jhon و hsoub تكون الصفوف مرتبة كالتالي : 

| id | name | 
| -- | ---- |
| 1  | ahmed|
| 2  | ola  |
| 3  | walid|

طبعا يمكنك إعادة الترتيب بعد كل حذف على هذا النحو : 

ALTER TABLE products AUTO_INCREMENT=1;

غير أن هذا اﻷمر أو أي تعديل ثان على صف المعرف غير مقترح عمله ﻷن أي تعديل بالمعرف الخاص بالصف سيؤدي إلى خرب علاقاته مع الجداول الأخرى ,كما أن هذا لن يقوم بترتيب الصفوف اعتبارا للصفوف التي تم حذفها , وإنما يقوم بتجنيبك مشكلة إدراج صفوف جديدة بترتيبات قد تم حذفها بالفعل (مثال : قمت بحذف الصف الأخير بالترتيب 6 , أريد من الصف التالي أن يأخذ الترتيب 6 لا 7 ) .

عوضا عن ذلك يمكنك قراءة البيانات بشكل عادي من قاعدة البيانات دون أي تعديل عليها , ثم على مستوى الـ PHP سيتم إضافة عمود ترتيبي لقراءة الصفوف مرتبة بدون المساس بالمعرف id أو أي صف ثان .

سيكون الأمر مشابها للتالي : 

نقوم بجلب كل المنتجات (مثلا) من قواعد البيانات و نضيف لكل صف رقما مميزا مرتبا على هذا النحو : 

<?php

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "db";

// إنشاء إتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// التحقق من الإتصال
if ($conn->connect_error) {
  die("فشل الإتصال :" . $conn->connect_error);
}

// إنشاء إستعلام
$sql = "SELECT * FROM products";

// تنفيذ الإستعلام
$result = $conn->query($sql);
$products = [];

if ($result->num_rows > 0) {
  // إضافة عمود مرتب لكل صف 
  $i = 1;
  
  while($row = $result->fetch_assoc()) 
  {
    $row['special_number'] = $i;
    
    array_push($products ,$row);
    
    $i++;
  }
  
} 

// => return $products

// إغلاق الإتصال 
$conn->close();
?>

لاحظ أن العملية مرنة أكثر من تعديلك لصف معين بقاعدة البيانات بعد كل تعديل على أي صف . فيمكنك تعديل بداية الترتيب و التحكم فيه , كما أنه أيضا يمكنك التحكم في ترتيب الصفوف التي جلبها من قاعدة البيانات عن طريق الإستعلام ORDER BY . 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...