View Full Version : اسکریپت یاد آوری روز تولد دوستان در php
marys_farahani
جمعه 14 شهریور 1393, 12:52 عصر
سلام
برای سایتی که جداولش طراحی شده و قابل تغییر نیست
و فیلد تاریخش پر شده باشه به این شکل 13640101 => روز ماه سال به شمسی بهترین کوئری که میشه نوشت که متولید هر روز مشخص بشه چیه ؟:لبخند:
arash691
جمعه 14 شهریور 1393, 13:19 عصر
فکر کنم استخراج روز و ماه برات کافی باشه :
set @_birth_day := 13640101;
set @_month := substring(@_birth_day,5,2);
set @_day := substring(@_birth_day,7,2);
select @_month,@_day;
marys_farahani
جمعه 14 شهریور 1393, 13:40 عصر
فکر کنم استخراج روز و ماه برات کافی باشه :
set @_birth_day := 13640101;
set @_month := substring(@_birth_day,5,2);
set @_day := substring(@_birth_day,7,2);
select @_month,@_day;
مشکل اینکه فقط شما الان یه رشته تبدیل کردی اما من با یه آرایه طرفم و شما تصور کن 6 هزار تا رکورد ثبت شده هم داشته باشم
SELECT `id`, SUBSTRING(date_birth,5,4) as `birth` FROM date;
vahidqara
جمعه 14 شهریور 1393, 14:18 عصر
الان مشکل کجاست؟ مشکل اینه از قبل ثبت شده بدون قالب؟ یا یه کد بهینه برای جستجو؟:لبخندساده:
marys_farahani
جمعه 14 شهریور 1393, 14:21 عصر
الان مشکل کجاست؟ مشکل اینه از قبل ثبت شده بدون قالب؟ یا یه کد بهینه برای جستجو؟:لبخندساده:
دقیقا مشکل اینکه یه فکر اصولی نشده بوده موقع طراحی دیتابیس الان من باید هر روز بین 6 هزار تا رکورد بگردم و 4 رشته اخر جدا کنم بعد ببینم تا ماه و روز مورد نظرم یکی هست یا نع
میخوام ببینم اصولی ترین روش ممکنه برای این کار چیه
ایا میشه کل این پردازش ها رو سمت دیتابیس انجام داد [شکلک گل]
vahidqara
جمعه 14 شهریور 1393, 14:30 عصر
صد البته میشه پردازش ها رو سمت دیتابیس صورت بگیره.ولی به هر حال هر کوئری در این حد هزینه ی خودشو داره.
arash691
جمعه 14 شهریور 1393, 14:41 عصر
مشکل اینکه فقط شما الان یه رشته تبدیل کردی اما من با یه آرایه طرفم و شما تصور کن 6 هزار تا رکورد ثبت شده هم داشته باشم
SELECT `id`, SUBSTRING(date_birth,5,4) as `birth` FROM date;
من منظورم این نبود که داده ی شما فقط یک رشته هستش این فقط یک مثال بود برای بدست اوردن روز و ماه از پترن مورد نظر شما ، تازه MySQL قدرتش خیلی بیشتر از این حرفاس فکر نمی کنم واسه 6000 تا رکورد مشکلی بوجود بیاد ...
marys_farahani
جمعه 14 شهریور 1393, 14:57 عصر
صد البته میشه پردازش ها رو سمت دیتابیس صورت بگیره.ولی به هر حال هر کوئری در این حد هزینه ی خودشو داره.
هزینه اش چقدر میشه
marys_farahani
جمعه 14 شهریور 1393, 14:57 عصر
من منظورم این نبود که داده ی شما فقط یک رشته هستش این فقط یک مثال بود برای بدست اوردن روز و ماه از پترن مورد نظر شما ، تازه MySQL قدرتش خیلی بیشتر از این حرفاس فکر نمی کنم واسه 6000 تا رکورد مشکلی بوجود بیاد ...
به جواب رسیدم میزارم سایر دوستان هم استفاده کنن مرسی از شما
bagherok
جمعه 14 شهریور 1393, 15:08 عصر
تایپ فیلد تاریخ (به فرض اینکه اسمش B_Date باشه)رو به date تغییر بدید
و بعد این کوئری
$query="SELECT * FROM tabel WHERE MONTH(B_Date) = '$MONTH' AND DAY(B_Date) = '$day'";
bagherok
جمعه 14 شهریور 1393, 15:24 عصر
به جواب رسیدم میزارم سایر دوستان هم استفاده کنن مرسی از شما
مشکلتون با کد بالا حل نشد!
marys_farahani
جمعه 14 شهریور 1393, 15:52 عصر
تایپ فیلد تاریخ (به فرض اینکه اسمش B_Date باشه)رو به date تغییر بدید
و بعد این کوئری
$query="SELECT * FROM tabel WHERE MONTH(B_Date) = '$MONTH' AND DAY(B_Date) = '$day'";
ارور داشت
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
این MONTH , DAY یه تابع است ؟
arash691
جمعه 14 شهریور 1393, 16:04 عصر
$query="SELECT * FROM tabel WHERE MONTH(B_Date) = '$MONTH' AND DAY(B_Date) = '$day'";
این روش زمانی جواب میده که ساختار بصورت 01-02-1364 باشه -_-
bagherok
جمعه 14 شهریور 1393, 16:08 عصر
بله http://www.w3resource.com/mysql/date-and-time-functions/mysql-month-function.php
واس من اروری نداشت
bagherok
جمعه 14 شهریور 1393, 16:10 عصر
$query="SELECT * FROM tabel WHERE MONTH(B_Date) = '$MONTH' AND DAY(B_Date) = '$day'";
این روش زمانی جواب میده که ساختار بصورت 01-02-1364 باشه -_-
خوب منم گفته بودم که ساختار رو تغییر بدند که اگه تایپ تاریخ از نوع text باشه و مقدارش برابر با 13640101 بعد از تغییر تایپ به date به اینصورت درمیاد 01-02-1364
arash691
جمعه 14 شهریور 1393, 16:13 عصر
درسته ... پس احتیاج به انجام یک کوئری برای تبدیل 13640201 به 01-02-1364 دارن :لبخند: ...
bagherok
جمعه 14 شهریور 1393, 16:16 عصر
درسته ... پس احتیاج به انجام یک کوئری برای تبدیل 13640201 به 01-02-1364 دارن :لبخند: ...
فقط لازمه تو mysql جدول مورد نظر رو انتخاب و بعد سربرگ structure و بعد تغییر تایپ تاریخ به date
bagherok
جمعه 14 شهریور 1393, 16:23 عصر
ارور داشت
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
نوع تایپ فیلد تاریخ چی هست و
آیا به date تغیرش دادیدکه
ارور داد!!!
marys_farahani
جمعه 14 شهریور 1393, 17:04 عصر
نوع تایپ فیلد تاریخ چی هست و
آیا به date تغیرش دادیدکه
ارور داد!!!
بله نوع تایپ ستون عوض کردم خیلی ممنون کمک خوبی بود :لبخند:
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.