PDA

View Full Version : خروجی گرفتن به شرط مطابقت 5 کاراکتر اول



Yashar1989
یک شنبه 24 شهریور 1392, 18:37 عصر
سلام
یه دیتابیس یوزر دارم دارای یک ردیف که شماره هایی برای قرعه کشی توش هست
این شماره 10 رقمی هست مثل: 6523541872

حالا من میخوام یوزرهایی که مثلاً 5 رقم کد اول قرعه کشیشون 65235 هست رو خروجی بگیرم
چطوری میتونم فقط تعیین کنم 5 رقم اول رو خروجی بگیره؟


ممنون

Javidhb
یک شنبه 24 شهریور 1392, 20:20 عصر
$$var = 6523541872;
$var2 = 65235;

if(mb_substr($var, 0, 5) == $var2){....})

Reza1607
یک شنبه 24 شهریور 1392, 20:36 عصر
از اين كوئري بايد استفاده كنيد

Select cart_number from tbl where cart_number like '65235_____'

Yashar1989
یک شنبه 24 شهریور 1392, 21:30 عصر
توی دیتابیس تاریخ به صورت 2013-08-24 14:36:25 ذخیره میشه
اول تاریخ بعد ساعت
حالا چطوری از دیتابیس فقط از روی تاریخ SELECT کنم؟

Javidhb
یک شنبه 24 شهریور 1392, 22:47 عصر
http://stackoverflow.com/questions/5229063/mysql-date-comparison-issue

Yashar1989
یک شنبه 24 شهریور 1392, 23:14 عصر
الان من از کدهای زیر استفاده میکنم:

function getTopViewed()
{
connectToDB();
$yday = date("Y-m-d", time()-86400);
return mysql_query("SELECT * FROM visit_logs where date >= '$yday'");
}

$topuser = getTopViewed();
echo $topuser;

خروجی فقط اینو میده:
Resource id #4

Yashar1989
یک شنبه 24 شهریور 1392, 23:22 عصر
این کد رو استفاده کردم:

function getTopViewed()
{
connectToDB();
$yday = date("Y-m-d", time()-86400);
return mysql_query("SELECT * FROM visit_logs where date(datetime_column) = '$yday'");
}

$topuser = getTopViewed();
while($top= mysql_fetch_assoc($topuser))
{
$topDate = date('Y-m-d', $top['date']);
echo $topDate;
}
ارور زیر رو میده:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\index.php on line 18

Javidhb
یک شنبه 24 شهریور 1392, 23:46 عصر
ببینید این کار میکنه:



function getTopViewed()
{
$results = array();
connectToDB();
$yday = date("Y-m-d", time()-86400);
$rows = mysql_query("SELECT * FROM visit_logs where date >= '$yday'");
while($row = mysql_fetch_assoc($rows)){
$results[] = $row;
}
return $results;
}

$topuser = getTopViewed();
var_dump($topuser);

MMSHFE
دوشنبه 25 شهریور 1392, 00:52 صبح
هرموقع خطايي شبيه اين دريافت كردين:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\index.php on line 18
يعني كوئري خطا داشته و اجرا نشده و بجاي نتيجه resource مقدار false برگردونده. با mysql_error خطا رو بدست بيارين و echo كنيد تا ببينيد مشكل از كجا بوده.

حالا من میخوام یوزرهایی که مثلاً 5 رقم کد اول قرعه کشیشون 65235 هست رو خروجی بگیرم
از SubString توي كوئري استفاده كنيد.

Yashar1989
دوشنبه 25 شهریور 1392, 13:50 عصر
ببینید این کار میکنه:



function getTopViewed()
{
$results = array();
connectToDB();
$yday = date("Y-m-d", time()-86400);
$rows = mysql_query("SELECT * FROM visit_logs where date >= '$yday'");
while($row = mysql_fetch_assoc($rows)){
$results[] = $row;
}
return $results;
}

$topuser = getTopViewed();
var_dump($topuser);

کدی که دادی به صورت آرایه تمام ردیف ها رو برمیگردونه

Javidhb
دوشنبه 25 شهریور 1392, 17:09 عصر
در اون صورت باید کوئری رو بررسی کنید.... دقیقا چی رو میخاید SELECT کنید؟!

Yashar1989
دوشنبه 25 شهریور 1392, 19:28 عصر
میخوام 5 تا user_id که تو یه روز بیشترین status =1 رو دارن خروجی بگیرم
ردیف های داخل جدولم اینا هستن
user_id
website_id
date
status

Javidhb
دوشنبه 25 شهریور 1392, 19:44 عصر
فکر کنم این کار مد نظر شما رو انجام بده:


SELECT *, COUNT(`status`) AS `status_number`
FROM visit_logs where date >= '$yday'
GROUP BY status
ORDER BY status_number DESC
LIMIT 5

Yashar1989
دوشنبه 25 شهریور 1392, 20:30 عصر
فکر کنم این کار مد نظر شما رو انجام بده:


SELECT *, COUNT(`status`) AS `status_number`
FROM visit_logs where date >= '$yday'
GROUP BY status
ORDER BY status_number DESC
LIMIT 5

اینجوری برمیگردونه:

array(5) { [0]=> string(6) "176440" [1]=> string(6) "101097" [2]=> string(6) "126219" [3]=> string(6) "163853" [4]=> string(6) "151854" }

این عددهایی که برمیگردونه چیه؟

ردیف status مقدارهای 0-1-2-3-4-5-6 داره من فقط status هایی که 1 هست رو میخوام
باید اینجوری بشه: WHERE status = 1 ؟

Javidhb
دوشنبه 25 شهریور 1392, 22:23 عصر
اون 0-1-2-3-4-5-6 تعداد تکرارهای status هست!
شما یه عکس از جدولتون بزارید... (دوزاریم بیوفته کوئری رو درست میکنیم!)

Yashar1989
دوشنبه 25 شهریور 1392, 22:58 عصر
اون 0-1-2-3-4-5-6 تعداد تکرارهای status هست!
شما یه عکس از جدولتون بزارید... (دوزاریم بیوفته کوئری رو درست میکنیم!)
تعدادی که برمیگردونه اشتباه 1 بالای 100 هزارتاست اما بقیه زیر 40 هزار تا
عکس:http://upload7.ir/images/29301458490462078194.jpg

من میخوام 5 کاربری که بیشترین status = 1 رو تو یک روز خاص دارن خروجی بگیرم

Javidhb
سه شنبه 26 شهریور 1392, 01:11 صبح
فقط خاستم ببینم قضیه status چیه!
اینم کوئری:


SELECT user_id, COUNT(`status`) AS `status_number`
FROM testtt
where date >= '2013-09-16'
AND status = 1
GROUP BY user_id
ORDER BY status_number DESC
LIMIT 5


اسکریپت:


function getTopViewed()
{
$results = array();
connectToDB();
$yday = date("Y-m-d", time()-86400);
$rows = mysql_query("***query**");
while($row = mysql_fetch_assoc($rows)){
$results[] = $row['user_id'];
}
return $results;
}

$topuser = getTopViewed();
print_r($topuser);

Yashar1989
سه شنبه 26 شهریور 1392, 06:02 صبح
فقط خاستم ببینم قضیه status چیه!
اینم کوئری:


SELECT user_id, COUNT(`status`) AS `status_number`
FROM testtt
where date >= '2013-09-16'
AND status = 1
GROUP BY user_id
ORDER BY status_number DESC
LIMIT 5


اسکریپت:


function getTopViewed()
{
$results = array();
connectToDB();
$yday = date("Y-m-d", time()-86400);
$rows = mysql_query("***query**");
while($row = mysql_fetch_assoc($rows)){
$results[] = $row['user_id'];
}
return $results;
}

$topuser = getTopViewed();
print_r($topuser);

باز هم ارور زیر رو میده:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\index.php on line 18

کد زیر درست کار کرد:

function getTopToday() {
mysql_connect('localhost', 'root', '');
mysql_select_db('site');
mysql_query("SET NAMES UTF8");
$yday = date("Y-m-d", time()-86400);
$query = "SELECT user_id, COUNT(`status`) AS `status_number`
FROM visit_logs
where date >= '$yday'
AND status = 1
GROUP BY user_id
ORDER BY status_number DESC
LIMIT 5";


$result = mysql_query($query) or die(mysql_error());
while($rows = mysql_fetch_assoc($result)){

echo $rows['user_id'];
echo "-";
echo $rows['status_number'];
echo "<br />";
}
}
کوئری پست آخر خیلی کمکم کرد دستت درد نکنه