PHP търсене във база данни

Pupe64etoo_92

Registered
Мислих доста и нищо не измислих.

Да предложим че си направя inputi със сектори, ето един пример:
PHP:
<div style="width:350px;height:140px;border:solid 1px #CCCCCC;font-size:15px;padding:4px;overflow:auto;">
<?
if($aviaciq!=""){
echo"<input type='checkbox' name='form_aviaciq' checked='checked' value='aviaciq'/>$lang[edit_cv_umeniq_naimenovanie_aviaciq]";}else{echo"<input type='checkbox' name='form_aviaciq' value='aviaciq'/>$lang[edit_cv_umeniq_naimenovanie_aviaciq]";}
echo"<br />";
if($avtomoto!=""){
echo"<input type='checkbox' name='form_avtomoto' checked='checked' value='avtomoto'/>$lang[edit_cv_umeniq_naimenovanie_avtomoto]";}else{echo"<input type='checkbox' name='form_avtomoto' value='avtomoto'/>$lang[edit_cv_umeniq_naimenovanie_avtomoto]";}
echo"<br />";
if($administraciq!=""){
echo"<input type='checkbox' name='form_administraciq' checked='checked' value='administraciq'/>$lang[edit_cv_umeniq_naimenovanie_administraciq]";}else{echo"<input type='checkbox' name='form_administraciq' value='administraciq'/>$lang[edit_cv_umeniq_naimenovanie_administraciq]";}
</div>
И тези сектори нали ако са маркиране ги събирам във една колона във база данни, да речем че съм я кръстил Sectors,

или правя отделна база данни news_sectors и за всеки сектор си има отделна колона във която да се записва плюс това си има поле и за записване на id-то на новината.
Предпочитам първия вариант!!!

До тук добре но изкарвам търсачка която да търси във база данни със същия див със секторите както при побликуването.

Е как да го направя да търси със първия вариант когато секторите се съхраняват във една колона във таблицата със новините, когато за дадена новина ще има един или повече сектори.

Трябва да търси във целия масив на таблицата във която се съхраняват секторите които са избрани при публикацията на новината, зададения сектор за търсене от потребителя дали го има като дума във база данни , във някоя от новините във колоната sectors и съответно да вади резултати тоест новините които съдържат тази дума.

Дано сте ме разбрали ако не сте само кажете.
 
Вероятно използваш MySQL или нещо подобно. Това е сървър за релационни бази от данни, т.е. създаден е така, че оптималния режим на работа се базира на релациите (връзките) между данните (таблиците). Ако искаш приложението ти да работи бързо, трябва да е написано качествено и според правилата. Ти си открил правилния начин, използвай го, вместо да търсиш как да го заобиколиш.

Има възможности, против правилата, да използваш и първия вариант (всички категории в една колона), правил съм го доста отдавна, виждаш че работи и си казваш "о, супер, няма защо да уча другите неща, и така си работи". Да обаче след време получаваш реален проект, мислейки че имаш опит и знаеш как, правиш го по същия начин, показваш на клиента че работи, и след няколко дни получаваш обаждане - абе ние тука в карахме няколко милиона статии (откраднати от уикипедия, естествено) и сайта увисна, или пък търсенето отнема няколко минути, вместо няколко секунди.

Две таблици, релация между тях, джойнове. Това е начина.
 
Мерси че ме светна и си много прав системата ще се скапа а този сайт които правя сега е за една агенция като джобс-агента е сайта и ще се скапа от много данни. Реших може да са 60 сектора ще направя за всеки сектор отделна таблица(отделна колона във таблицата със новините) и със иф конструкция ще проверявам кои(кой) сектор е избран и ще търся. Измислих го може да са повече колони но да е споучливо и да няма негативи.
 
И най-добре си направи отделна таблица за секторите - sector_id, sector_name, така че в тези чекбоксове да записваш sector_id и после това номерче да го записваш и като релация в съответната таблица, а не както е сега value="administraciq", защото хем търсенето ще е по-бавно, хем обема на самата база данни ще нарастне страховито.
 

Back
Горе