Разделяне на запис от БД

cold_zero

Registered
Искам, ако имам запис в базата данни "cska veliki machove" да взима всяка дума поотделно. Тоест изписва ми първо "cska" малко по нататък в текста ми изписва "veliki" и т.н., има ли начин да стане това?
 

mizarck

Registered
ще ти дам пример дано ме разбереш
Код:
<?php
$dumi = "cska veliki machove";
$explode = explode(" ", $dumi);
echo "$explode[0]"; // cska
echo "$explode[1]"; // veliki
echo "$explode[2]"; // machove
?>

няма нищо сложно
 

cold_zero

Registered
За да не пускам нова тема да попитам как може да стане селектирането при търсене примерно на "cska machove", ако в базата данни е записано "cska veliki machove"
 

mizarck

Registered
нямам време сега да пише цяла търсачка но ще стане с горният пример който додох
самоче разделяш думите който трябва да се търсят
но след explode трябва да вмекнеш още един ред
$count = count($explode) - 1;
това ще ти преброй колко думиса
при търсенето ще сложиш един цикал да търси думите и си ок
 

jooorooo

Registered
http://web-tourist.net/login/login/view.php?st=1106

$tarsene = $_GET[Search];


mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($db_name) or die("Грешна база данни");

//следните функции са за разделяне на стринга,
//за да не търси последователност
$trimmed = trim($tarsene); //премахваме ненужните полета
$var = explode(" ",$trimmed); //разделяме стринга думи
$count = count($var); //преброяваме думите в стринга

//следва един цикъл с които избягваме дублиращите се резултати
for($i = $count-1;$i < sizeof($var); $i++) {

$abc = $var[$i];

//правиме заявка към базата данни ползваме $abc което е всяка отделна дума от стринга,
//а '% %' го ползваме за да може примерно ако търсиме "кон" да покаже и резултати като "конски"
$querys = " SELECT * FROM news WHERE `newstext` LIKE '%$abc%' ORDER BY id_news DESC";
 

cold_zero

Registered
Ето кода от търсачката

Код:
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = " SELECT* FROM clips where name like '%$search%' or description like '%$search%' or tag like '%$search%' and category like '%$category%' and status='1' ORDER BY id DESC " .
" LIMIT $redove, $broinastranica";
$result = mysql_query($query) or die('Error, query failed');

while($row = mysql_fetch_array($result))
{

Има и за странициране, но много дълго става.
 

jooorooo

Registered
cold_zero каза:
Ето кода от търсачката

Има и за странициране, но много дълго става.

Виж тази от линка където съм дал. там съм обяснил кое за какво е.
 

fireman

Registered
Имам записани 3 абзаца в 1 поле в БД желая като ги извличам да мога да ги покажа като 3 отделни абзаца.Възможно ли е това без да правя поле за всеки абзаца в БД, защото някой път абзаците могат и да са пет и повече.
Благодаря предварително
 

Admin

Registered
fireman каза:
Имам записани 3 абзаца в 1 поле в БД желая като ги извличам да мога да ги покажа като 3 отделни абзаца.Възможно ли е това без да правя поле за всеки абзаца в БД, защото някой път абзаците могат и да са пет и повече.
Благодаря предварително

Не разбрах добре но ако искаш да записваш:

"Казвам се Пешо"
"Лора пее в хор"
"Престанете да викате".

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

Примерно записваш в полето "abzaci" ...

Казвам се Пешо&Лора пее в хор&Престанете да викате

и после след като ги извлечеш от базата данни ще ги обработваш като масив с explode като ползваш за разделител & .

Разгледай функцията explode или виж този урок (там се използва explode но не за база данни):
http://web-tourist.net/login/login/view.php?st=304

Все пак да добавя, че това е много лоша идея и съм сигурен, че може да се направи "Като хората" без да се налага да ги записваш в едно поле.

Защо трябва всички абзаци да са в едно поленце?
 

sizif

Registered
Здравей!

Не разбирам много въпроса ти: дали искаш да делиш някакъв низ по новия ред и да листваш всеки абзац отделно или в момента текста ти излиза като един парагарф и искаш да изкараш абзаците?

Ако е второто, може да стане така:

във формата трябва да имаш отбелязано това:

<TEXTAREA ROWS="5" COLS="30" NAME="text2" WRAP>

</TEXTAREA>


WRAP - означава, че при приемането на низа от формата параграфите ще се пренасят. Възможните стойности са physical и virtual. В първия случай редовете завършват със знак за нов ред и се изпращат така, във втория пренасянето е виртуално. По подразбиране пренасянето е изключено. Ако се зададе само WRAP без стойност се активира виртуалното пренасяне.

За да превърнеш \n в <БР /> се използва функцията nl2br();

Можеш да го направиш преди записа (т.е. <БР>-тата ще присъстват в записания низ), което не е много удобно, но става ето така:

$tekst=nl2br($tekst);
После записваш променливата текст...

Или да слагаш новия ред при листването (което ти препоръчвам):
echo nl2br($tekst);


Това е от мен. Дано съм помогнал :)

Успех!

ПП: Админ ме е изпреварил за експлоуд, запазвам само първата част :)
Моя съвет е като неговия - защо ползваш БД, ако ще си решаваш проблема така, сякаш обработваш съдържание на файл?!
 

fireman

Registered
Благодаря за бързите отговори!!
Става въпрос за дневен бюлетин за пожарната, в които по дати ще се вкарват всичките произшествия по видове т.е пожари, катастрофи, отводняване и т.н. като бройка само.По този начин формата ми съдържа 30 полета за попълване и това последното 30 поле съм го направил като кратко описание на пожарите,което е единствено текстово и накратко описва пожарите т.е. в колко часа е станало, къде ,как и т.н. Затова не исках във формата за попълване да правя отделно поле за описание на всеки отделен пожар и да ги пращам в отделни полета в БД, защото както писах по-горе днес може да има два пожара , а утре да има 15 . Затова реших че не е удачно да правя 15 полета във формата и съответно 15 полета в таблицата ,защото винаги ще ги извличам заедно просто когато ги извличам от БД да имат по прегледен вид ,а не като един безкраен параграф. Мисля да използвам решението на сизиф. Между другото ще пусна това кето съм направил като урок,защото е максимално опростено и все пак съм си го правил самия аз а както знаете "наше лошо няма".
Благодаря за помощта
 

Горе