PDA

View Full Version : سوال: روش SORT (دسته بندی ) با نام



<body>
پنج شنبه 24 اردیبهشت 1388, 19:34 عصر
سلام
دوستان عزیز لطفا در مورد sort کردن فایلهایی که در دیتا بیس ثبت شده مطلبی و یا کد مشابه داریند ؟

مثلا من فایلهایی دارم که میخوام یوزر وفتی لیست درهم انها رو میبینه برای دست رسی بهتر به فایل مورد نظر از کارکتر اول فایل مربوته فایل ها رو دسته بندی کنه .


http://www.1001freefonts.com/

لطفا این سایت رو مشاهده بفرمایید.

با تشکر

امیـرحسین
پنج شنبه 24 اردیبهشت 1388, 21:15 عصر
روشهای زیادی وجود داره که اطلاعات دیتابیس رو Sort کنید. بهترینش برای دسته بندی الفبایی، استفاده از توابع مخصوص رشته ها در MySQL (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html) هست. یعنی وثلا وقتی حرف D کلیک شد، در دیتابیس، سطرهایی رو SELECT کنید که حرف اول یکی از سطرها، D باشه.

SELECT * FROM table WHERE LCASE(SUBSTRING(`filename`, 0 , 1)) = "d";
البته من این کد رو تست نکردم....

<body>
یک شنبه 27 اردیبهشت 1388, 01:20 صبح
روشهای زیادی وجود داره که اطلاعات دیتابیس رو Sort کنید. بهترینش برای دسته بندی الفبایی، استفاده از توابع مخصوص رشته ها در MySQL (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html) هست. یعنی وثلا وقتی حرف D کلیک شد، در دیتابیس، سطرهایی رو SELECT کنید که حرف اول یکی از سطرها، D باشه.

SELECT * FROM table WHERE LCASE(SUBSTRING(`filename`, 0 , 1)) = "d";البته من این کد رو تست نکردم....


سلام

دوست عزیز از کمکتون ممنون تست کردم ولی نتاسفانه جوابی نگرفتم .

شما این رو تست کردین ؟

yaqubian
یک شنبه 27 اردیبهشت 1388, 08:36 صبح
دوست عزیز

file:///C:/DOCUME%7E1/yaqubian/LOCALS%7E1/Temp/moz-screenshot.jpgSELECT col FROM table WHERE col LIKE 'v%'
که می تونید مثلا حرف v رو بصورت پارامتر دریافت کنید.
موفق باشید

امیـرحسین
یک شنبه 27 اردیبهشت 1388, 13:05 عصر
از تابع LEFT هم می تونید استفاده کنید:

SELECT * FROM table WHERE LEFT(filename, 1)="d" OR LEFT(filename, 1)="D";

<body>
یک شنبه 27 اردیبهشت 1388, 17:12 عصر
از تابع LEFT هم می تونید استفاده کنید:

SELECT * FROM table WHERE LEFT(filename, 1)="d" OR LEFT(filename, 1)="D";


سلام

از آقا yaqubian عزیز هم منون
آقا امیـرحسین ممنون با این روش ردیف شد فقط واشه شماره ها و علامت چی این رو چجور میشه ست کرد باید تک تک علامات را وارد کنم ؟

امیـرحسین
یک شنبه 27 اردیبهشت 1388, 20:18 عصر
اگر مشابه همون سایتی که عرض کردید میخواید، کافیه برای هر کاراکتر یک لینک درست کنید مثل این:

http://yoursite.com/fonts.php?by=w
و توی اسکریپت به کوئری حساسیت نشون بدید مثل این:

$sortby = strtolower($_GET['by']);

if(strlen($sortby) != 1 || $sortby == "'" || $sortby == '"')
return;

$sql = "SELECT * FROM table WHERE LEFT(LCASE(filename), 1)='$sortby'";
.
.
.
روش بهتر و امنتر این هست که همه کاراکترها رو مشخص کنید و دستور IF رو اینطوری قرار بدید:

$validChars = array('a', 'b', ...... , '_' , '@' , ....);
if(! in_array($sortby, $validChars) )
return;

<body>
دوشنبه 28 اردیبهشت 1388, 12:32 عصر
سلام و تشکر

دوست عزیز من هم دقیقا چنین کاری کردم ولی برای علاملت و شماره ها چی جای مثلا این W باید باشه که بر اساس آن لیست کنه ؟

اگر مشابه همون سایتی که عرض کردید میخواید، کافیه برای هر کاراکتر یک لینک درست کنید مثل این:

http://yoursite.com/fonts.php?by=w

من این روش رو هم تست کردم ولی جوابی نگرفتم میشه توضیح بیشتری بدین لطفا.


روش بهتر و امنتر این هست که همه کاراکترها رو مشخص کنید و دستور IF رو اینطوری قرار بدید:

$validChars = array('a', 'b', ...... , '_' , '@' , ....);
if(! in_array($sortby, $validChars) )
return;

امیـرحسین
دوشنبه 28 اردیبهشت 1388, 22:39 عصر
دوست عزیز من هم دقیقا چنین کاری کردم ولی برای علاملت و شماره ها چی جای مثلا این W باید باشه که بر اساس آن لیست کنه ؟همینطوره.



من این روش رو هم تست کردم ولی جوابی نگرفتم میشه توضیح بیشتری بدین لطفا.
ببینید این یعنی اگر فقط این 4 تا کاراکتر (a و b و _ و @) برای فهرستبندی درخواست شد، عملیات رو انجام بده:

$sortby = strtolower($_GET['by']);

$validChars = array('a', 'b' , '_' , '@');
if(! in_array($sortby, $validChars) )
return;

$sql = "SELECT * FROM table WHERE LEFT(LCASE(filename), 1)='$sortby'";
.
.
.
البته این کار رو با Regex هم می تونید انجام بدید ولی این روش سریعتره...

<body>
سه شنبه 29 اردیبهشت 1388, 01:16 صبح
سلام
آقا برا توضیحات ممنون ولی یه مشکل با این روش من مجبورم برای تمام علامت ها هم یک لینک قرار بده درسته ؟

مثلا [@]....[C] [b] [A] ....... [1] [2]

اگه اینجور باشه که بده

من در لیستم بجای علامات شکل مستعار [#] قرار دادم و به این صورت لینک میشه
http://yoursite.com/fonts.php?by=num (http://yoursite.com/fonts.php?by=num%D9%88%D9%84%DB%8C) ولی نمیدونم باید چجوری از جدول فایلهایی که با علامات و عدد ها هستند رو لیست کرد ؟


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

خیلی از راهنمایتون ممنونم
یا حق

امیـرحسین
سه شنبه 29 اردیبهشت 1388, 05:03 صبح
در این حالت باید کوئری رو تغییر بدید. مثلا اینجوری که اگر مقدار by برابر num بود، از Sql زیر استفاده کنه. در غیر اون صورت همون sql قبلی:

$sql = "SELECT * FROM table WHERE LEFT(LCASE(filename), 1)='0' OR LEFT(LCASE(filename), 1)='1' OR LEFT(LCASE(filename), 1)='2' ....... ORDER BY filename";

<body>
سه شنبه 29 اردیبهشت 1388, 10:01 صبح
آقا امیر حسین خیلی ممنون همه چی درست شد . :چشمک:

واقعا شرمنده کردین:خجالت:

یا حق