|
|
|
| Есть большой текст в базе, требуется вывести с помощью PHP только первую его часть, к примеру первые 5-6 слов.... Кто нибудь делал такое? | |
|
|
|
|
|
|
|
для: Dinya_1
(01.11.2008 в 20:57)
| | Если решите выводить именно словами - больше трудностей возникнет.
Большинство в таком случае выводят определенное количество символов и в конце ставят три точки... | |
|
|
|
|
|
|
|
для: lorenberg
(01.11.2008 в 21:42)
| | >Если решите выводить именно словами - больше трудностей возникнет.
А в чем трудность обрезать строку по символу пробела? | |
|
|
|
|
|
|
|
для: Гость
(01.11.2008 в 21:51)
| | Хм, точно, не сообразил.. но выводить символы всё равно проще))) | |
|
|
|
|
|
|
|
для: Dinya_1
(01.11.2008 в 20:57)
| | пишу подробно с комментариями, чтобы понятно было:
// запрос
$qw = mysql_query("SELECT * FROM tname WHERE id=".$id.";");
$result = mysql_fetch_array($qw);
// запускаем strtok()
$word = strtok($result['stroka']," ");
// количество слов (здесь слово - это разделенная пробелом совокупность символов)
$count = 5;
// максимальное количество символов
$max_symbols = 60;
// здесь храним укороченную строку
$str_short = "";
// запускаем поиск. $i < $count, так как одно слово уже найдено
for ($i = 1; $i < $count; $i++)
{
// если количество символов не превышет допустимого максимума, то добавляем
// новое слово. если же превышает, то выходим из цикла
if (strlen($str_short.$word." ") <= $max_symbols) $str_short = $str_short.$word." ";
else break;
// запускаем strtok() только с одним параметром, иначе ф-ия будет находить
// одну и ту же часть строки
$word = strtok(" ");
}
echo $str_short."...";
|
| |
|
|
|
|
|
|
|
для: SDL
(02.11.2008 в 05:02)
| | Спасибо! | |
|
|
|
|
|
|
|
для: Dinya_1
(02.11.2008 в 08:21)
| | А если мой запрос идет на вывод последних сообщений, как можно соединить эти два запроса?
<?php /*Вывод последних 20-ти сообщений*/
$result33 = mysql_query("SELECT id,title,gorod FROM forma ORDER BY date DESC, id DESC LIMIT 20",$db);
if (!$result33)
{
echo "<p >Запрос на выборку данных из базы не прошел. Напишите об этом администратору <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result33) > 0)
{
$myrow33 = mysql_fetch_array($result33);
do
{
printf ("<div style='margin-top:4px;margin-right:4px;margin-left:5px;'><a class='posled' href='pdr2.php?id=%s'>%s<br>%s</a></div>",$myrow33["id"],$myrow33["title"],$myrow33["gorod"]);
}
while ($myrow33 = mysql_fetch_array($result33));
}
else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?>
|
| |
|
|
|
|
|
|
|
для: Dinya_1
(02.11.2008 в 18:49)
| | последних 20 сообщений или последних 20 слов строки?
по вопросу с проблемным запросом лучше создай тему в форуме mysql. | |
|
|
|
|
|
|
|
для: Dinya_1
(02.11.2008 в 18:49)
| | кстати, если вопрос у тебя был, как вывести последние СЛОВА с сообщения, то можно сделать так: сначала инвертируй обрабатываемую строку, потом примени алгоритм (скрипт, который я написал), а потом инвертируй результат. думаю, должно получиться | |
|
|
|
|
|
|
|
для: SDL
(02.11.2008 в 05:02)
| | У меня пример предложенный SDL, не работает.
Прледложение хранится в таблице forma в графе title, подганяю под свои данные - выдает ошибку при запросе в базу... | |
|
|
|
|
|
|
|
для: Dinya_1
(02.11.2008 в 19:13)
| | ну блин! так сделай запрос правильным, я написал, так для эстетики стериотипный запрос. какая у тебя таблица и поля - тебе же лучше знать.
а вот остальной код - рабочий. сам проверял.
<?php
// строка, полученная из базы данных
$result = "";
for ($i = 1; $i <= 100; $i++)
$result = $result."eshkin kot ";
// запускаем strtok()
$word = strtok($result," ");
// количество слов (здесь слово - это разделенная пробелом совокупность символов)
$count = 5;
// максимальное количество символов
$max_symbols = 60;
// здесь храним укороченную строку
$str_short = "";
// запускаем поиск
for ($i = 1; $i <= $count; $i++)
{
// если количество символов не превышет допустимого максимума, то добавляем
// новое слово. если же превышает, то выходим из цикла
if (strlen($str_short.$word." ") <= $max_symbols) $str_short = $str_short.$word." ";
else break;
// запускаем strtok() только с одним параметром, иначе ф-ия будет находить
// одну и ту же часть строки
$word = strtok(" ");
}
echo $str_short."...";
?>
|
ТОЛЬКО ЧТО запустил - код рабочий. ошибка в запросе | |
|
|
|
|
|
|
|
для: SDL
(03.11.2008 в 01:29)
| | SDL - извени, просто у меня очень мало практики в этом деле... | |
|
|
|
|
|
|
|
для: Dinya_1
(03.11.2008 в 20:38)
| | хорошо. просто следи за тем, какие ошибки происходят.
если происходит фатальная ошибка, то дальше выполнение кода не идет. | |
|
|
|
|
|
|
|
для: SDL
(03.11.2008 в 21:05)
| | А как сюдаеще приделать вывод в цикле с помощью - do wile
do
{
echo $str_short."....";
}
while ( );
|
Только не подумайте, что я типа "халявщик"..., просто элементарно неполучается... | |
|
|
|
|
|
|
|
для: Dinya_1
(27.11.2008 в 19:41)
| | так надо сделать (я код проверил, работает):
<?php
// строка, полученная из базы данных
$result = "";
for ($i = 1; $i <= 10; $i++)
$result = $result.$i."eshkin kot ";
// запускаем strtok()
$word = strtok($result," ");
// количество слов (здесь слово - это разделенная пробелом совокупность символов)
$count = 5;
// максимальное количество символов
$max_symbols = 60;
do
{
// здесь храним укороченную строку
$str_short = "";
// запускаем поиск
for ($i = 1; $i <= $count; $i++)
{
// если количество символов не превышет допустимого максимума, то добавляем
// новое слово. если же превышает, то выходим из цикла
if (strlen($str_short.$word." ") <= $max_symbols) $str_short = $str_short.$word." ";
else break;
// запускаем strtok() только с одним параметром, иначе ф-ия будет находить
// одну и ту же часть строки
$word = strtok(" ");
}
echo $str_short."...<br>";
}
while ($word != "")
?>
|
| |
|
|
|
|
|
|
|
для: Dinya_1
(01.11.2008 в 20:57)
| | SUBSTRING() при выборке из базы | |
|
|
|
|
|
|
|
для: mihdan
(29.11.2008 в 14:33)
| | можно и по пробел отрезать, посложнее только запрос получится
<?
$zapros = 'SELECT x_tab.id,
INSERT( x_tab.mesg, (155 + LOCATE(\' \', x_tab.mesg, 155)), -1,
CONCAT(\'<a href="?x=', x_tab.id, \'"> ... Дальше</a>\'))
FROM x_tab ..............................................................
|
| |
|
|
|