PDA

View Full Version : مشکل با دستور لایک



milad_d993
چهارشنبه 22 خرداد 1392, 00:47 صبح
سلام دوستان
من موضوعات کتب رو به صورت رشته داخل فیلد هر رکورد کتاب ذخیره میکنم

مثلا:
"21" یا "21,22" یا "21,22,23"

حالا از کد زیر برای اینکه بفهمم از هر موضوع چند بار استفاده شده استفاده میکنم ولی جوابش درست نیست.



$categoryResult = mysql_query("select * from category",$serverLink);
while ($categoryRecord = mysql_fetch_assoc($categoryResult)){
$categoryId = $categoryRecord["category_id"];
$categoryTitle = $categoryRecord["category_title"];


$cat = mysql_query("select count(*) from book where category = 'categoryId' or category LIKE '$categoryId,%' or category LIKE'%,$categoryId,%' or category LIKE '%,$categoryId' ",$serverLink);
$catNum = mysql_fetch_array($cat);
echo "<a href='index.php?cat=$categoryId'>$categoryTitle ($catNum[0])</a><br>";
}

میشه بگین مشکلش چیه؟؟؟؟
ممنون...

mostafa272
چهارشنبه 22 خرداد 1392, 09:14 صبح
اولا بعد از مساوی علامت $ رو نذاشتی بعدش هم اون علامت % هایی که گذاشتی تقریبا همه حالات رو شامل میشه و فک کنم کلا تعداد همه کتاب ها رو بر گردونه.

خودم زیاد جزئیات استفاده از like رو نمی دونم ولی به لینک زیر یه نگاه بنداز. کمکت میکنه:
http://www.techonthenet.com/sql/like.php

Unique
چهارشنبه 22 خرداد 1392, 15:30 عصر
من موضوعات کتب رو به صورت رشته داخل فیلد هر رکورد کتاب ذخیره میکنم

این کار از نظر معماری پایگاه داده کاملا غلطه ! به زبان ساده شما باید یک جدول مجزا از کتاب ها و موضوعات داشته بشین که شامل سه فیلد ID و BOOKID و SUBJID باشه ! و رابطه بین موضوعات و کتاب ها را سطر های این جدول تعیین کنند ! حالا هر عملیایت را که بخواهید با sql بدون هیچ پردازش اضافه میتویند انجام بدین. شاید الان مجبور بشین یک برنامه بنویسین که اطلاعات موجود را به فرمت مناسب تغییر بده ! این برنامه زورکی ۱۰ خط میشه و با یک select و insert قابل انجام هست ! همینطور در برنامه ورود اطلاعات و نمایش هم باید تغییراتی بدین اما عوضش درست کار کردین و وقتی تعداد کتاب ها افزایش چشمگیری کرد به مشکلات بعدی بر نمیخورین.

توجه : هیچوقت دنبال حل کردن مشکل با روشی که به ذهنتون میرسه نباشین و سعی کنین توی وب جستجو کنید و ببینید بقیه چطور عمل کردند !

milad_d993
چهارشنبه 22 خرداد 1392, 16:56 عصر
بله...
شاید شما درست بگین ولی برنامه فقط بخاطر یه $درست کار نمیکرد.


اولا بعد از مساوی علامت $ رو نذاشتی

الان درست کار میکنه :D

Unique
پنج شنبه 23 خرداد 1392, 03:20 صبح
شاید شما درست بگین
مطمئن باش که من درست میگم و خودم اشتباه شما را قبلا انجام دادم ! کافیه با یک متغیر ساده توی while بشمری چند تا query داری به پایگاه داده میفرستی در حالی که همه این کار را با ساختاری که گفتم توی یک query انجام میدی !