sos

چگونه به این ستون از دیتابیس دسترسی پیدا کنم

8 پست در این موضوع قرار دارد

سلام

یه دیتابیس دارم که یه ستونش محتواش مثل اینه (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

60525318616046058944.png

ویرایش شده در توسط sos

به اشتراک گذاری این پست


لینک به پست

خب شما اول مقدار ستون mycol رو میگیرید

select mycol from mydb where id=20

بعد مقادیری رو که نیاز دارید تغییر میدی مثلا

$mycol = str_replace('5','3',$mycol);

و در نهایت اون سطر رو بروز میکنید

update mydb set mycol='$mycol' where id=20

به اشتراک گذاری این پست


لینک به پست

خب شما اول مقدار ستون 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 تا با کاما جدا شدن و هر سه عدد هم مستقل هستند .

به اشتراک گذاری این پست


لینک به پست

برای این کار اگه مکان اون عددی که باید عوض بشه رو میدونید ،میتونین با استفاده از تابع substr_replace این کارو انجام بدین

مقدار پارامتر length میگه چه تعداد کاراکتر رو جابجا کنه که شما میتونین 1 قرار بدید


substr_replace([i]string,replacement,start,length[/i])
http://www.w3schools.com/php/func_string_substr_replace.asp

به اشتراک گذاری این پست


لینک به پست

برای این کار اگه مکان اون عددی که باید عوض بشه رو میدونید ،میتونین با استفاده از تابع 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

به اشتراک گذاری این پست


لینک به پست

اصلا یه راه حل دیگه به ذهنم رسید ببنید آیا با منطق php جور درمیاد و میشه نوشتش یا نه ؟

ما بیام این داده های رو به ماتریس تبدیل کنیم اون وقت دیگه راحت میشه تک تک فراخوندشون .

من به توابع php آشنایی ندارم شاید الگوریتمم نشدنی باشه اما گفتم بگم نظر دوستان رو هم بدونم .

یه تابع بیاد کل "

1 0 5,2 5 25, 8 5 5

" رو بخونه و بعد یه حلقه ی تکرار به اندازه ی تعداد کاراکتر های این عبارت تعیین کنیم وتوش یه شرط و یک ماتریس 3*3 بزاریم که از کاراکتر اول شروع کنه به خوندن اگر کاراکتر اول عدد بود بزاره توی درایه ی اول ماتریس بعد کاراکتر دوم روبخونه اگر باز عدد بود عدد قبلی رو در 10 ضرب کنه و با این عدد کاراکتر دوم جمع کنه و توی درایه ی اول ماتریس قرار بده اما اگر عدد نبود و فاصله بود بره کاراکتر سوم رو چک کنه و عددش رو برداره بیاره بزاره توی درآیه ی دوم وقتی به کاما رسید بره سطر بعدی .

خداییش خودمم موندم چیکار کنم تا بتونم اعداد این ستون رو تک تک صدا کنم .

ویرایش شده در توسط sos

به اشتراک گذاری این پست


لینک به پست

با کد زیر من تونستم کاما ها رو جدا کنم اما هنوز نتونستم بقیش رو بنویسم

محتوای ستون از نوع string هست


<?php
$ingredientsStr = "1 0 5,2 5 25, 8 5 5";
$ingredientsArr = explode(",", $ingredientsStr);
foreach ($ingredientsArr as $i) {
print $i . "<br>";
}
?>

خروجی :


1 0 5
2 5 25
8 5 5

اما بقیش رو هنوز نمیدونم که چطور خروجی فوق رو تبدیل به یک ماتریس 3*3 کنم

ویرایش شده در توسط sos

به اشتراک گذاری این پست


لینک به پست

با کد زیر تبدیل میشه به ماتریس

$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);

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط devil1367
      با سلام
      من یک فروشگاه دارم چون قالب قبلیم نیازهامو نمیتونست برطرف کنه یه قالب جدید از یکی از سایتها خریداری کردم
      سوالم اینه با نصب بسته اسان نصب اطلاعاتی یا محصولات قبلی که داشتم حذف میشن ؟
      چطوری قالب رو شبیه دمو دربیارم و صفحات و برگه ها import کنم.
       
      با تشکر
    • توسط armakcell
      با سلام بنده در سایتم میخواستم یک ابزارک قرار بدم مانند ابزارک این سایت
      http://powerturk.ir

      اگر داخل این سایت برید در یک قسمت نوشته است آرشیو فول البوم
      بنده این ابزارک را چگونه به دست بیارم؟
      بنده یک تصویر ضمیمه میکنم در صورتی که در سایت وارد نشد

    • توسط amir_hossein
      سلام دوستان من قصد دارم چندتا اسلاید کناره هم به صورت خطی (مثلا 4 تا اسلاید) اواسط صفحه اصلی یا انتهای صفحه قرار بدم.افزونه ای میتونید بهم معرفی کنید برای اینکار؟
    • توسط amir_hossein
      سلام دوستان من قصد دارم چندتا اسلاید کناره هم به صورت خطی (مثلا 4 تا اسلاید) اواسط صفحه اصلی یا انتهای صفحه قرار بدم.افزونه ای میتونید بهم معرفی کنید برای اینکار؟
    • توسط mosi1672
      سلام 
      من یه سایتی دارم که برای همایش علمی مقالات رو با فرمی که با افزونه گرویتی فرم ساخته شده دریافت میکنم.
      خواستم بدونم آیا راهی وجود داره که امار مقالات دریافتی رو به صورت داینامیک و پویا بتونم با روی سایت اصلی نشون بدم؟ البته با ظاهر زیبا
      مثل این سایت تایپ ایران که امار پروژه ها و کاربرانش رو به صورت نمودار دایره ای نشون میده..
      این ادرس سایت :
      ادرس فرم:http://ihsc.bsbmu.ir/maghaleh/
      ادرس سایت:http://ihsc.bsbmu.ir/

      میدونم خیلی ساده گفتم ولی اگر امکان داره راهنمایی بفرمایید