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

cold_zero

Registered
Искам, ако имам запис в базата данни "cska veliki machove" да взима всяка дума поотделно. Тоест изписва ми първо "cska" малко по нататък в текста ми изписва "veliki" и т.н., има ли начин да стане това?
 
ще ти дам пример дано ме разбереш
Код:
<?php
$dumi = "cska veliki machove";
$explode = explode(" ", $dumi);
echo "$explode[0]"; // cska
echo "$explode[1]"; // veliki
echo "$explode[2]"; // machove
?>

няма нищо сложно
 
За да не пускам нова тема да попитам как може да стане селектирането при търсене примерно на "cska machove", ако в базата данни е записано "cska veliki machove"
 
нямам време сега да пише цяла търсачка но ще стане с горният пример който додох
самоче разделяш думите който трябва да се търсят
но след explode трябва да вмекнеш още един ред
$count = count($explode) - 1;
това ще ти преброй колко думиса
при търсенето ще сложиш един цикал да търси думите и си ок
 
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";
 
Ето кода от търсачката

Код:
$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))
{

Има и за странициране, но много дълго става.
 
cold_zero каза:
Ето кода от търсачката

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</TEXTAREA>


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

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

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

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

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


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

Успех!

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

Back
Горе