sos 50 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 (ویرایش شده) سلامیه دیتابیس دارم که یه ستونش محتواش مثل اینه (1 2 3 , 4 5 6 , 7 8 9) و من نمیتونم اعداد داخلشون رو به صورت تک تک فرابخونمش و بعد آپدیتش کنم مثال : نام دیتابیس mydbتیبل : mytableتوی این تیبل رکورد های زیادی داریم که با ای دی میخونیمش مثلا از رکوردی با id =20 هر آی دی هم ستون های زیادی داره و اینجا ستون مثلا mycol رو میخوایم اما مشکل اصلیم این جاست داده های ستون "mycol" مثلا به صورت زیر هست :1 2 3 , 4 5 6 , 7 8 9یعنی اعداد فوق به صورت یکجا ( با فاصله و کاما) توی فقط ستون mycol از رکوردی با آی دی 20 که در تیبل mytable و در دیتابیس mydb قرار گرفتند.به طور خلاصه : من چطور میتونم مثلا عدد های 5 یا 4 رو فرابخونم که بعد آپدیتشون کنم به یه عدد دیگه ای مثلا 5 رو بگیرم و به 0 آپدیت کنمیعنی خروجی بشه این :1 2 3 , 4 0 6 , 7 8 9 ویرایش شده مرداد 93 توسط sos نقل قول لینک به ارسال
Mobin 1669 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 خب شما اول مقدار ستون mycol رو میگیریدselect mycol from mydb where id=20بعد مقادیری رو که نیاز دارید تغییر میدی مثلا$mycol = str_replace('5','3',$mycol);و در نهایت اون سطر رو بروز میکنیدupdate mydb set mycol='$mycol' where id=20 2 نقل قول لینک به ارسال
sos 50 ارسال شده در مرداد 93 مالک گزارش بازنشر ارسال شده در مرداد 93 خب شما اول مقدار ستون mycol رو میگیریدselect mycol from mydb where id=20بعد مقادیری رو که نیاز دارید تغییر میدی مثلا$mycol = str_replace('5','3',$mycol);و در نهایت اون سطر رو بروز میکنیدupdate mydb set mycol='$mycol' where id=20واقعا ممنونم اما یه سوال اگر مثلا چندتا 5 توی این ستون داشته باشیم اون وقت همه رو تغییر میده ؟ اگر این طوری باشه مشکل سازه و به نظرم اگر یه شرط دیگه اضاف بشه که معین کنه کدوم جایگاه تغییر کنه ممنون میشم . مثلا این باشه : 1 0 5,2 5 25, 8 5 5عددا 3 تا 3 تا با کاما جدا شدن و هر سه عدد هم مستقل هستند . نقل قول لینک به ارسال
Mobin 1669 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 برای این کار اگه مکان اون عددی که باید عوض بشه رو میدونید ،میتونین با استفاده از تابع substr_replace این کارو انجام بدینمقدار پارامتر length میگه چه تعداد کاراکتر رو جابجا کنه که شما میتونین 1 قرار بدیدsubstr_replace([i]string,replacement,start,length[/i])http://www.w3schools.com/php/func_string_substr_replace.asp 2 نقل قول لینک به ارسال
sos 50 ارسال شده در مرداد 93 مالک گزارش بازنشر ارسال شده در مرداد 93 برای این کار اگه مکان اون عددی که باید عوض بشه رو میدونید ،میتونین با استفاده از تابع substr_replace این کارو انجام بدینمقدار پارامتر length میگه چه تعداد کاراکتر رو جابجا کنه که شما میتونین 1 قرار بدیدsubstr_replace([i]string,replacement,start,length[/i])http://www.w3schools.com/php/func_string_substr_replace.aspآیا راه دیگه ای نیست که بشه جایگاه هر یک از این اعداد رو تعیین کنیم چون شمارش کاراکتر و جایگزینی وقتی اعداد دورقمی میشن دردسر سازه. آیا تابعی نیست که بتونه مثل ماتریس درآیه ها رو فرابخونه چون فاصله و کاما مشخصه .اصلا یه سوال دیگه به این نوع ورودی چی میگن یعنی این ورودی های یک ماتریس 3در3 هستند یا اصلا چی هستند آخه من نفهمیدم چی هستند 3 تا عدد که با فاصله از هم جدا و هر سه تایی با کاما جدا میشن .1 0 5,2 5 25, 8 5 5 نقل قول لینک به ارسال
sos 50 ارسال شده در مرداد 93 مالک گزارش بازنشر ارسال شده در مرداد 93 (ویرایش شده) اصلا یه راه حل دیگه به ذهنم رسید ببنید آیا با منطق php جور درمیاد و میشه نوشتش یا نه ؟ما بیام این داده های رو به ماتریس تبدیل کنیم اون وقت دیگه راحت میشه تک تک فراخوندشون .من به توابع php آشنایی ندارم شاید الگوریتمم نشدنی باشه اما گفتم بگم نظر دوستان رو هم بدونم .یه تابع بیاد کل "1 0 5,2 5 25, 8 5 5 " رو بخونه و بعد یه حلقه ی تکرار به اندازه ی تعداد کاراکتر های این عبارت تعیین کنیم وتوش یه شرط و یک ماتریس 3*3 بزاریم که از کاراکتر اول شروع کنه به خوندن اگر کاراکتر اول عدد بود بزاره توی درایه ی اول ماتریس بعد کاراکتر دوم روبخونه اگر باز عدد بود عدد قبلی رو در 10 ضرب کنه و با این عدد کاراکتر دوم جمع کنه و توی درایه ی اول ماتریس قرار بده اما اگر عدد نبود و فاصله بود بره کاراکتر سوم رو چک کنه و عددش رو برداره بیاره بزاره توی درآیه ی دوم وقتی به کاما رسید بره سطر بعدی .خداییش خودمم موندم چیکار کنم تا بتونم اعداد این ستون رو تک تک صدا کنم . ویرایش شده مرداد 93 توسط sos نقل قول لینک به ارسال
sos 50 ارسال شده در مرداد 93 مالک گزارش بازنشر ارسال شده در مرداد 93 (ویرایش شده) با کد زیر من تونستم کاما ها رو جدا کنم اما هنوز نتونستم بقیش رو بنویسممحتوای ستون از نوع string هست<?php$ingredientsStr = "1 0 5,2 5 25, 8 5 5";$ingredientsArr = explode(",", $ingredientsStr);foreach ($ingredientsArr as $i) {print $i . "<br>";}?>خروجی :1 0 52 5 258 5 5اما بقیش رو هنوز نمیدونم که چطور خروجی فوق رو تبدیل به یک ماتریس 3*3 کنم ویرایش شده مرداد 93 توسط sos نقل قول لینک به ارسال
Mobin 1669 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 با کد زیر تبدیل میشه به ماتریس$ingredientsStr = "1 0 5,2 5 25, 8 5 5";$ingredientsArr = explode(",", $ingredientsStr);$ret = array();foreach ($ingredientsArr as $i) {$ret[] = explode(' ',$i);}var_dump($ret); 3 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .