PDA

View Full Version : مشکل در Replace کردن در دیتابیس



alasht
جمعه 15 مهر 1390, 19:07 عصر
با سلام خدمت دوستان
من یه مشکلی تو Replace کردن برام به وجود اومده که امیدوارم بتونید منو راهنمایی کنیم
مشکل من اینه که میخوام یکسری اعداد رو تو دیتابیسم رو عوض کنم و جاش عدد دیگه بزارم
مثلا میخوام تو تیبل news اعداد شماره 2 که درون فیلد topic ذخیره شده رو به عدد 13 تبدیل کنم
من با استفاده از این کد این کار رو انجام میدم

mysql_query("update news set topic = replace(topic, '$old_num', '$new_num')");
حالا مشکل اینجاست که شما به عنوان مثال این اعداد رو در نظر بگیرید
2,3,4,5,6,7,8,9
من میخوام به جای این اعداد به ترتیب از راست به چپ اینا رو بزارم
12,23,54,45,86,17,38,19

ابتدا عدد 12 را جایگزین عدد 2 میکنیم
که بعد از اجرای دستور و جایگزینی اعداد داخل جدول به این صورت در میاد
12,3,4,5,6,7,8,9
حالا باید عدد دوم یعنی 23 رو جایگزین 3 کنیم که به این صورت میشه
12,23,4,5,6,7,8,9
حالا نوبت عدد سوم هست یعنی 54 باید جایگزین 4 بشه که حاصل میشه
12,23,54,5,6,7,8,9

و حالا میرسیم به نقطه کور ماجرا که مشکل من اینجاست
حالا اگر بخوام عدد بعدی یعنی 45 رو جایگزین عدد 5 کنم هر چی عدد 5 باشه میگیره به 45 تبدیل میکنه یعنی به اینصورت میشه


12,23,454,45,6,7,8,9

همونطور که دیدید هر چی 5 بود به 45 تبدیل کرد یعنی عدد 54 که توش 5 داشت رو به 454 تبدیل کرد
من چیکار کنم که این مشکل پیش نیاد ؟
آیا راهی هست که عدادی رو که جایگزین کردم در جایگزینهای بعدی نباشه ؟
ممنون میشم دوستان راهنمایی کنند
با تشکر

blackmak
جمعه 15 مهر 1390, 19:25 عصر
میشه اول بگید قصدتون از این کارا چیه ؟ شاید راه حل بهتری اراده شد واسه اینکارتون :لبخندساده:

alasht
جمعه 15 مهر 1390, 19:45 عصر
خوب میخوام id موضوعات مطالب سایتم رو تغییر بدم
یعنی من موضوعات سایتم رو عوض کردم و یه چیزایی اضافه و کم کردم و باید id های جدید جایگزین id های قدیمی بشه :قلب:

blackmak
جمعه 15 مهر 1390, 20:05 عصر
پس شما فرضا دوتا لیست دارید که یکی id های جدید هستش و یکی id های قدیمی مثلا :
1,2,3,4,5 قدیمی
6,7,8,9,10 جدید

حالا میخوایین
6 بشینه جای 1
7 بشینه جای 2
و . . .
و دقیقا id جدید متناظر با هر id قدیمی رو دارید
درسته ؟

alasht
جمعه 15 مهر 1390, 20:18 عصر
بله درسته
من دو تا لیست دارم از آی دی های قدیمی و آی دی های جدید که یکسری اعداد مشابه این وسط هستند که مشابه اند با هم دیگه و کار رو خراب میکنند
مانند توضیحی که بالا دادم

blackmak
جمعه 15 مهر 1390, 20:36 عصر
شما به ازای هر id میتونی یه update بنویسی توی یه for . نظرت چیه ؟ حالا اگه id موجود بود واسه اینکه تکراری نشه یکی به id اضافه کن و اینو تو یه تابع بازگشتی بنویس که تا وقتی که id خالی پیدا نشد از تابع نیاد بیرون.