Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Нужно из базы извлечь текст, но только первые 10 слов или текст до первой точки.

Сообщения:  [1-10]   [11-14] 

 
 автор: Ильдар   (10.07.2007 в 14:20)   письмо автору
 
   для: Trianon   (09.07.2007 в 21:24)
 

Спасибо всем!!!
Я нашел выход с помощью функции sustr!
И сделал все таки посимвольно
$viv_news  = mysql_query("SELECT * FROM `news` ORDER BY `id_news` DESC LIMIT 0 , 3;") 
        or die(mysql_error());
while(list($id_news, $date, $zag, $low_full) = mysql_fetch_row($viv_news))
            {      
                $date2 = month($date);
                $text=strip_tags($low_full);
                   $text=substr($text,0,100);

   
 
 автор: Trianon   (09.07.2007 в 21:24)   письмо автору
 
   для: oradev   (09.07.2007 в 20:47)
 

>To Trianon а кто мешает приведенный выше запрос реализовать в MySQL. Думаю с этим уж точно не будет проблем.

С моей точки зрения, имеет смысл придерживаться компромисса между удобством и затребованными средствами.

Я не помню, в какой версии появились определяемые пользователем функции , но всяко львиная доля хостеров на них отпадет.

   
 
 автор: oradev   (09.07.2007 в 20:47)   письмо автору
 
   для: Trianon   (09.07.2007 в 17:47)
 

>Это .. первые 10 записей. А не первые десять слов.
>Причем в оракловом стиле, что, судя по нику, неудивительно. :)

Ну можно и так:

CREATE OR REPLACE FUNCTION get_val (str_in IN VARCHAR2, word_count_in NUMBER)
   RETURN VARCHAR2
IS
   len       NUMBER        := NVL (LENGTH (str_in), 0);
   words     NUMBER        := 0;
   end_str   NUMBER        := 0;
   RESULT    VARCHAR2 (40);
BEGIN
   FOR i IN 1 .. len
   LOOP
      IF ASCII (SUBSTR (str_in, i, 1)) = 32 OR i = len
      THEN
         words := words + 1;

         IF words = word_count_in
         THEN
            end_str := i;
            EXIT;
         END IF;
      END IF;
   END LOOP;

   RESULT := SUBSTR (str_in, 1, end_str);
   RETURN RESULT;
END;


Старайтесь подобные простые ф-ции оформлять на сервере, задачи адмимнистрирования подобных фуекций, пакетов и пр в этом случаи выполняется на много легче и быстрее.
Конечно, не во всех случаях но все же, в КИС используют именно такую модель.

To Trianon а кто мешает приведенный выше запрос реализовать в MySQL. Думаю с этим уж точно не будет проблем.

   
 
 автор: Trianon   (09.07.2007 в 17:47)   письмо автору
 
   для: oradev   (09.07.2007 в 16:40)
 

Это .. первые 10 записей. А не первые десять слов.
Причем в оракловом стиле, что, судя по нику, неудивительно. :)

   
 
 автор: oradev   (09.07.2007 в 16:40)   письмо автору
 
   для: Ильдар   (05.07.2007 в 19:41)
 

Легко


SELECT *
  FROM (SELECT   *
            FROM emp
        ORDER BY job)
 WHERE ROWNUM <= 10;

   
 
 автор: Trianon   (06.07.2007 в 09:49)   письмо автору
 
   для: Ильдар   (05.07.2007 в 19:41)
 

Если очень грубо - то как-то так.

SELECT LEFT(data,
        MIN(
         LOCATE('.', CONCAT(data, '.')),
         LENGTH(DATA)-COALESCE(LENGTH(SUBSTRING_INDEX(data, ' ', 10),0))
        )
       ) AS shortdata
FROM tbl

Тут стоит причесать точное количество символов...

   
 
 автор: Unkind   (06.07.2007 в 09:38)   письмо автору
 
   для: Faraon   (06.07.2007 в 09:32)
 

Ааа. 10 слов. Извиняюсь. Я думал символов.

   
 
 автор: Faraon   (06.07.2007 в 09:32)   письмо автору
 
   для: Ильдар   (06.07.2007 в 09:20)
 

Первое что в голову прищло, кащунский вариант :)))

<?php

$text
="Нужно из базы извлечь текст, но только первые 10 слов или текст до первой точки.";
$d=explode(" ",$text);
for(
$i=0;$i<10;$i++){
$t .= $d[$i]." ";
}

print 
$t;

?>

первые 10 слов

   
 
 автор: Unkind   (06.07.2007 в 09:28)   письмо автору
 
   для: Ильдар   (06.07.2007 в 09:20)
 

<?php
$string 
"123456789.1234567890";

    if((
$pos strpos($string".")) !== false && $pos 10)
    {
        
$string substr($string0$pos 1);
    }
    else
    {
        
$string substr($string010);
    }
?>

   
 
 автор: Ильдар   (06.07.2007 в 09:20)   письмо автору
 
   для: Unkind   (06.07.2007 в 05:29)
 

поможешь?
мне просто в голову ничего хорошего не приходит!

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования