PDA

View Full Version : جابجایی رکوردها در دیتابیس



tem988
یک شنبه 29 اسفند 1389, 21:54 عصر
سلام
کدی میخوام که آیدی رکوردهای رو آپدیت کنه و جابجا کنه
مثلا برای هر آیدی چک باکس بزارم وقتی 2 تا انتخاب کردم و جابجایی کلیک کردم آیدی 4 و 5 با هم جا به جا بشن
فقط کوئزیشو میخوام ممنون میشم راهنمایی کنید

MMSHFE
یک شنبه 29 اسفند 1389, 22:23 عصر
با سلام، تابع زير اين كار رو انجام ميده، كافيه نام فيلد id و نام جدول table رو با مقادير مربوط به ديتابيس خودتون جايگزين كنيد (ضمناً فيلد بايد از نوع عددي باشه):


function swap_rows_id($first,$second)
{
$id=0;
$result=mysql_query('SELECT * FROM `table` ORDER BY `id` DESC LIMIT 1');
if(mysql_num_rows($result)>0)
{
$row=mysql_fetch_assoc($result);
$id=$row['id'];
}
$id++;
mysql_query('UPDATE `table` SET `id`=\''.$id.'\' WHERE (`id`=\''.$first.'\') LIMIT 1');
mysql_query('UPDATE `table` SET `id`=\''.$first.'\' WHERE (`id`=\''.$second.'\') LIMIT 1');
mysql_query('UPDATE `table` SET `id`=\''.$second.'\' WHERE (`id`=\''.$id.'\') LIMIT 1');
}

توضيح: first$ و second$ آيدي اول و دوم هستند.
مثالي از نحوه استفاده:

swap_rows_id(5,25);
ويرايش: روش كار بدين ترتيب هست كه ابتدا آخرين ID موجود بعنوان آيدي موقت استخراج ميشه و يك واحد بهش اضافه ميشه تا مطمئن بشيم آيدي موقتي كه درنظر گرفتيم تكراري نيست. بعد ركورد اول رو اصلاح ميكنيم و آيدي جديد (موقت) رو بهش ميديم. در مرحله بعد، ركورد دوم اصلاح ميشه و آيدي ركورد اول رو ميگيره و نهايتاً ركوردي كه داراي آيدي موقت هست رو اصلاح ميكنيم و آيدي ركورد دوم رو بهش ميديم (روش تغيير مقدار متغيرها با استفاده از متغير كمكي).
موفق باشيد.

tem988
دوشنبه 01 فروردین 1390, 01:31 صبح
سلام
ممنون از راهنماییتون