Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Считывание строк из базы MySQL

2.3K
20 января 2004 года
SystemRoot
51 / / 30.11.2003
Вопрос таков, хочу приделать к сайту такую фичу, чтоб были новости, на главной в сжатом виде, то есть из определюнного поля скажем text считывалось определённое количество строк или симвалов (незнаю как реализовать :devil: ) и выводилось начало теста, а дальше ссылка "Подробней..." где раскрывается полная версия текста новости, кто знает как это сделать дайте плиз PHP код, заранее огромное спасибо! ;)
4
21 января 2004 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by SystemRoot
Вопрос таков, хочу приделать к сайту такую фичу, чтоб были новости, на главной в сжатом виде, то есть из определюнного поля скажем text считывалось определённое количество строк или симвалов (незнаю как реализовать :devil: ) и выводилось начало теста, а дальше ссылка "Подробней..." где раскрывается полная версия текста новости, кто знает как это сделать дайте плиз PHP код, заранее огромное спасибо! ;)



[phpdoc]substr[/phpdoc]

Функции для работы со строками в MySql:
http://www.codenet.ru/db/mysql/sql.php#Sfunc
(см. LEFT и SUBSTRING)

1.8K
21 января 2004 года
2NetFly
132 / / 01.09.2003
substr редко используют. Иначе, получаются новости типа:

Никогда не испол...

Не особо красиво. Если выводишь только одну новость – можно воспользоваться регулярными выражениями и показывать первые n "слов". Если необходимо выводить список – использование РВ может снизить производительность. А вообще, идеальным решением будет добавление отдельного поля для аннотаций, либо символа-разделителя в текст новости (затем, опять же, придется пользоваться РВ).
1.9K
21 января 2004 года
HabaHaba
172 / / 24.12.2003
Цитата:
Originally posted by 2NetFly
substr редко используют. Иначе, получаются новости типа:
Никогда не испол...


Ага. Я как то на Молоток.ру видел забавное объявление: "Продается ВАЗ2106, не битая, подпроржавевшая на х..."
Оказалось "на ходу" ;)
Я такую задачку решал регами, но вот сейчас в голову пришел такой вариант:

Код:
<?
$max = 50;
$i = 0;
$string = "";
$news = "Вопрос таков, хочу приделать к сайту такую фичу, чтоб были новости, на главной в сжатом виде, то есть из определюнного...";
$words = explode(" ",$news);

while (strlen($string)<$max) {     
       if ($max >= strlen($news)) {
            break;
       }
       if (strlen($string." ".$words[$i])>30) {
            break;
       } else {
          $string = $string." ".$words[$i];
       }
       $i++;
}
print trim($string)."... >>>";
?>

Набросал "на вскидку", поэтому нужно обработать ещё наверное.
Работать будет долго, регами наверняка лучше (особенно, если строка исходная большая), но мне всё равно понравилось :)
2.1K
21 января 2004 года
lootelen
44 / / 27.11.2003
ВОт проверенный скрипт который выводит либо слова укладывающиеся в 10-0 символов.. не разрывая их..

До первого пробела после N .. символов

 
Код:
$str="your loooong string form DB";
echo substr($str,0,strpos(substr($str,100)," ")+100);
4
21 января 2004 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by lootelen
ВОт проверенный скрипт который выводит либо слова укладывающиеся в 10-0 символов.. не разрывая их..

До первого пробела после N .. символов

 
Код:
$str="your loooong string form DB";
echo substr($str,0,strpos(substr($str,100)," ")+100);



Ну вы блин химики. Документацию читать пробовали ???

Вот:

int strpos (string haystack, string needle [, int offset])

 
Код:
$str="your loooong string form DB";
echo substr($str,0,strpos($str," ",100));
2.3K
21 января 2004 года
SystemRoot
51 / / 30.11.2003
Цитата:
Originally posted by mike


Ну вы блин химики. Документацию читать пробовали ???

Вот:

int strpos (string haystack, string needle [, int offset])

 
Код:
$str="your loooong string form DB";
echo substr($str,0,strpos($str," ",100));


Да, это конечно всё круто, но как это применить?Код такой:

Код:
<?
ConnectDB();
$result = mysql_query("SELECT * FROM news ORDER by id DESC LIMIT 0,5");
print "<table width=\"100%\">";
while($row = mysql_fetch_array($result)){
$title = $row['title'];
$date = $row['date'];
$text = $row['text'];
$author_mail = $row['author_mail'];
$author = "".$row['author']."";
print "<tr><td>&nbsp$title</td></tr>\n
<tr><td>&nbsp$text</td></tr>\n
<tr><td>Добавлено: $date - Автор $author</td></tr>"
;
}
print "</table>";
mysql_close();
?>

Так вот, помогите это тут сотворить...
4
21 января 2004 года
mike
3.7K / / 01.10.2002
Код:
<?
ConnectDB();
$result = mysql_query("SELECT * FROM news ORDER by id DESC LIMIT 0,5");
print "<table width=\"100%\">";
while($row = mysql_fetch_array($result)){
$title = $row['title'];
$date = $row['date'];
$text = $row['text'];
$author_mail = $row['author_mail'];
$author = "".$row['author']."";
print "<tr><td>&nbsp".$title."</td></tr>\n
<tr><td>&nbsp"
.substr($text,0,strpos($text," ",50))."</td></tr>\n
<tr><td>Добавлено: "
.$date." - Автор ".$author."</td></tr>";
}
print "</table>";
mysql_close();
?>
2.3K
22 января 2004 года
SystemRoot
51 / / 30.11.2003
Огромное спасибо! Всё работает поставил 150 символов, на моём сайта - это 3 строчки :P
Ещё вопрос схожий, как сделать, чтобы такое же начало считывалось из HTML файла :devil: :???:
Код:
<?
$base = $_SERVER['DOCUMENT_ROOT'].'/docs/';
ConnectDB();
$result = mysql_query("SELECT * FROM site_documents WHERE id='$page'");
print "<table width=\"100%\">";
$row = mysql_fetch_array($result);
$path = $row['path'];
$main_path = $base$path.'document.htm';
$main = readcontent($main_path);
print "<tr><td>$main</td></tr></table>";
mysql_close();
?>

Помогите написать код...
437
23 января 2004 года
Lsd[52r]
106 / / 20.12.1999
Цитата:
Originally posted by SystemRoot
Огромное спасибо! Всё работает поставил 150 символов, на моём сайта - это 3 строчки :P
Ещё вопрос схожий, как сделать, чтобы такое же начало считывалось из HTML файла :devil: :???:


-рег. выражения+мозги

А по поводу твоего первого вопроса почитай: http://www.artlebedev.ru/kovodstvo2/sections/98/

2.3K
23 января 2004 года
SystemRoot
51 / / 30.11.2003
Цитата:
Originally posted by Lsd[52r]

-рег. выражения+мозги

А по поводу твоего первого вопроса почитай: http://www.artlebedev.ru/kovodstvo2/sections/98/


Это не ответ, и твой линк ничего не демонстрирует, если нечего сказать лучше промолчи, вундеркинд блин :!!!: :roll:

4
23 января 2004 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by SystemRoot

Это не ответ, и твой линк ничего не демонстрирует, если нечего сказать лучше промолчи, вундеркинд блин :!!!: :roll:



Нет, это ответ. Тебе уже все разжевали и в рот положили. Глотать уж самому придется.

437
23 января 2004 года
Lsd[52r]
106 / / 20.12.1999
Цитата:
Originally posted by mike


Нет, это ответ. Тебе уже все разжевали и в рот положили. Глотать уж самому придется.



Спасибо, Майк!

2.3K
24 января 2004 года
SystemRoot
51 / / 30.11.2003
Цитата:
Originally posted by Lsd[52r]


Спасибо, Майк!


Я уже и сам понял

Код:
<?
$base = $_SERVER['DOCUMENT_ROOT'].'/docs/';
ConnectDB();
$result = mysql_query("SELECT * FROM site_documents WHERE id='$page'");
print "<table width=\"100%\">";
$row = mysql_fetch_array($result);
$path = $row['path'];
$main_path = $base$path.'document.htm';
$main = readcontent($main_path); //readcontent читает файл
print "<tr><td>".substr($main,0,strpos($main," ",150))."</td></tr></table>";
mysql_close();
?>
4.5K
24 января 2004 года
noah
20 / / 14.01.2004
//Makes a chop of whole text
function text_chop($text_to_chop, $chp){
if ($chp){
$chop = $chp;
}
else{
$chop = '300';
}
$cnt = strlen($text_to_chop);
$chopped_text = substr($text_to_chop, 0, $chop);
$chopped_text = explode(" ", $chopped_text);
$element = count($chopped_text);
if ($cnt < $chop){
return $text_to_chop;
}
else{
$element = $element-1;
$chopped_text = array_slice($chopped_text, 0, $element);
foreach($chopped_text as $k=>$v){
$fuck .= " $v";
$fuck .='... More';
}
return $fuck;
}
}
//Makes a chop of whole text END

может это слегка геморно, но работает
537
25 января 2004 года
Cover
87 / / 14.11.2002
Цитата:

Ну вы блин химики. Документацию читать пробовали ???

Вот:

int strpos (string haystack, string needle [, int offset])


PHP:--------------------------------------------------------------------------------
$str="your loooong string form DB";
echo substr($str,0,strpos($str," ",100));



В документации есть int strrpos ( string haystack, char needle)
Returns the numeric position of the last occurrence of needle in the haystack string.

Тобишь возвращает позицию последнего встретившегося символа (в нашем случае, пробела).
Так вот, сначала читаем с базы столько символов, сколько хотим (ни в коем случае не всю новость - нормальная новость может и на несколько kb выйдти, а нам нужно то всего 100-200 символов):
$q = mysql_query("SELECT LEFT(newstext,150) AS _txt")or die(mysql_error());
Затем, обрезаем полученный заголовок до последнего пробела:
list($title) = mysql_fetch_array($q);
$title = substr($title,0,strrpos($title,' '))."...more.";

С этим проще уже наверное некуда.



Теперь с хтмл-файлике - также не получится, т.к. в начале в хтмл-файлике - тэги. По-хорошему тебе нужно либо полностью игнорировать все тэги, либо начинать считывать после тэга <BODY> . В обоих случаях есть проблемы: в первом - первое, что ты считаешь, скорее всего будут скрипты, стили и прочая шняга в head-ере хтлмки. Во втором случае - могут попасться всякие скрытые слои, опять же, скрипты и т.п.
В общем, гиблое это дело.

2.3K
26 января 2004 года
SystemRoot
51 / / 30.11.2003
Цитата:
Originally posted by Cover

Теперь с хтмл-файлике - также не получится, т.к. в начале в хтмл-файлике - тэги. По-хорошему тебе нужно либо полностью игнорировать все тэги, либо начинать считывать после тэга <BODY> . В обоих случаях есть проблемы: в первом - первое, что ты считаешь, скорее всего будут скрипты, стили и прочая шняга в head-ере хтлмки. Во втором случае - могут попасться всякие скрытые слои, опять же, скрипты и т.п.
В общем, гиблое это дело.


Так значит посоветуешь вообще этой ерундой не страдать?! Может есть какой нить другой способ более реальный?

537
28 января 2004 года
Cover
87 / / 14.11.2002
Цитата:
Originally posted by SystemRoot

Так значит посоветуешь вообще этой ерундой не страдать?! Может есть какой нить другой способ более реальный?



Есть!
Содержимое тэга <TITLE></TITLE>
В нём как раз содержится краткое описание сайта. Ещё можно проверить META-тэги.
Собственно, поисковики так и делают.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог