Перейти к содержимому

Фотография

Вопросы по PHP


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 188

#121
Quessir

Quessir
  • Частый гость
  • 64 сообщений
function redirect(){
document.loginForm.action = "blablabla"+document.loginForm.domen.value+"blablabla";
document.loginForm.submit();
}

А в кнопке
сделать его button и onclick="java script:redirect;"

А если центр общий, то тупа $_POST['domen'];

Сообщение отредактировал Quessir: 18.06.2007, 02:15:12

  • 0

#122
p@R@dOx...

p@R@dOx...
  • Завсегдатай
  • 105 сообщений
Привет.
Стоит следующая задача: имеется ряд статей с тегами и прочее, на головной странице необходимо вывести лишь первые части статей с возомжностью выбора просмотра продолжения, то есть что-то типа новостной ленты.
Я сделал так:

strip_tags($text);
$final=substr($text, 0, 700);

Но так статья режется строго по длине и может быть обрублена на полуслове, что весьма непрезентабельно.
Подскажите как сделать чтобы отрезалось по пробел, точку, запятую?
  • 0

#123
T. Anre

T. Anre

    Data Miner

  • В доску свой
  • 2 327 сообщений

Привет.
Стоит следующая задача: имеется ряд статей с тегами и прочее, на головной странице необходимо вывести лишь первые части статей с возомжностью выбора просмотра продолжения, то есть что-то типа новостной ленты.
Я сделал так:

strip_tags($text);
$final=substr($text, 0, 700);

Но так статья режется строго по длине и может быть обрублена на полуслове, что весьма непрезентабельно.
Подскажите как сделать чтобы отрезалось по пробел, точку, запятую?

Можно посмотреть на пример исходной статьи?
  • 0

#124
kornel

kornel
  • В доску свой
  • 9 069 сообщений
читаешь файл с помощью fgets(), последнюю строку бъешь в массив по пробелам с помощью implode() и выводишь первые N слов из массива. Если в документе слишком длинные строки, то сразу implode() но памяти это будет требовать больше.

Да, забыл уточнить, implode() нужно делать после strp_tags()
  • 0

#125
P0is0n

P0is0n
  • Гость
  • 29 сообщений

читаешь файл с помощью fgets()


С чего взял что статьи в файлах?

p@R@dOx...,
word-wrap();
  • 0

#126
Urukhay

Urukhay
  • Свой человек
  • 548 сообщений
хм. мне всегда режет глаз, когда статья обрывается на половине фразы. когда статья вбивается сделай что-нибудь типа краткого описания, выводи только его. дальше всю статью.
или же сделай что-нибудь типа такого
начало статьи
----
продолжение статьи

скрипт парсит дефисы и выводит только начало, потом по ссылке всю статью
  • 0

#127
MadRabbit

MadRabbit
  • Постоялец
  • 325 сообщений
Присоединяюсь к Urukhay - в идеале хорошо иметь краткий самостоятельный текст - 1-2 предложения, но это требует дополнительной работы (придумывать предложения). Я недавно думал об этом и мне кажется разумным такой вариант: текст находится внутри элемента ограниченного по размеру и с overflow: hidden; поверх текста картинка с градиентом от прозрачного до цвета фона; при этом текст обрезается так, чтобы быть больше элемента в котором он находится - получается что текст "растворяется" ближе к нижнему краю элемента.
  • 0

#128
v04bvs

v04bvs
  • В доску свой
  • 2 062 сообщений

мне кажется разумным такой вариант: текст находится внутри элемента ограниченного по размеру и с overflow: hidden; поверх текста картинка с градиентом от прозрачного до цвета фона; при этом текст обрезается так, чтобы быть больше элемента в котором он находится - получается что текст "растворяется" ближе к нижнему краю элемента.

Получится ужасно в плане юзабилити. Человек будет неосознанно пытаться прочитать растворяющийся текст, вглядываться. Возможно я изменю своё мнение, если увижу это вживую.
  • 0

#129
p@R@dOx...

p@R@dOx...
  • Завсегдатай
  • 105 сообщений

Можно посмотреть на пример исходной статьи?

Сколь угодно... www.kp.kz
Любая статья оформленная fckeditorom.


читаешь файл с помощью fgets(), последнюю строку бъешь в массив по пробелам с помощью implode() и выводишь первые N слов из массива. Если в документе слишком длинные строки, то сразу implode() но памяти это будет требовать больше.

В целом направление интересное... То есть статью разбивать на массив слов по признаку пробела и после выводить. Неплохо...

word-wrap();

Слушай... Какое простое решение лежавшее на поверхности. Разбить статью по нужной длине и выводить до условленного элемента.


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

скрипт парсит дефисы и выводит только начало, потом по ссылке всю статью

Вместе со статьей и без того идет куча сопроводительных полей, администратор сайта будет гибнуть от количества рутинной работы.
  • 0

#130
p@R@dOx...

p@R@dOx...
  • Завсегдатай
  • 105 сообщений
Еще один неплохой вариант:

strip_tags($text);$text1=substr($text, 0, 680);
echo substr($text1, 0, strrpos($text1, ' '))."...";

Сообщение отредактировал p@R@dOx...: 30.11.2007, 12:03:00

  • 0

#131
eroha

eroha
  • В доску свой
  • 1 762 сообщений
preg_split
  • 0

#132
Drushka

Drushka
  • В доску свой
  • 1 866 сообщений
Слегка топорный варианта.
В текст новости вносится тег (придумать можно что угодно например <endtitle>) и программный код отрезает новость до указанной Вами длинны.
Выглядить это примерно так

Новость:

Энергетики просят алматинцев потерпеть<endtitle>
Работой системы электроснабжения по подготовке Алматы к зиме городские власти в целом удовлетворены. Об этом заявил заместитель акима города Аскар Сманкулов в четверг на рабочем совещании с руководителями и техническими специалистами АПК.

Исходник для главной:

$text = substr($text, 0, strpos($text, '<endtitle>'));


Исходник для отображение самой новости:

$text = str_replace('<endtitle>', '', $text);


Мне кажется довольно просто и человек сам выбирает где ему обрезать текст.
  • 0

#133
T. Anre

T. Anre

    Data Miner

  • В доску свой
  • 2 327 сообщений

Слегка топорный варианта.
В текст новости вносится тег (придумать можно что угодно например <endtitle>) и программный код отрезает новость до указанной Вами длинны.


Почему же сразу топор, костыль и тд и тп? :)
Это разумный компромисс, который обычно юзается вместе с рекордсетами.
Шаблон тегов выглядит, примерно, так: "{tag}" или "[tag]". :)
  • 0

#134
designf

designf
  • Свой человек
  • 852 сообщений
На локальной машине все работает отлично, под денвер php 4.
На сервере версии 4 php, тоже работает все хорошо.
Поставил на пятую версию, стала появлятся ошибка, которая ругается на функицю mktime()

Warning: mktime() expects parameter 6 to be long, string given in /home/idadbs/public_html/vkaragande/demo/includes/functions.php on line 320


Кусочек кода следующий. Ругается на строку которая начинается с $first_date
function ifUpdated ($date)

{
	global $def_updated;

	$date_day = date ( "d" );

	$date_month = date ( "m" );

	$date_year = date ( "Y" );

	list ( $on_year, $on_month, $on_day ) = split ( '[/.-]', $date );

	$first_date = mktime ( 0,0,0,$on_month,$on_day,$on_year );

	$second_date = mktime ( 0,0,0,$date_month,$date_day,$date_year );

	if ( $second_date > $first_date )
	{
	   $days = $second_date - $first_date;
	}
	else
	{
		$days = $first_date - $second_date;
	}

Пример ошибки здесь _http://vkaragande.info/demo/index.php?cat=4&subcat=21

Можно скачать демоверсию _http://vkaragande.info/catalog_demo.zip

Если ошибка решится, предоставлю полную версию со всеми модификациями, шаблонами.
  • 0

#135
baur82

baur82
  • Гость
  • 24 сообщений
сделай пожалуйста перед строкой global $def_updated;
____

print_r($date);

____
Я посмотрю что там приходит ;)

Сообщение отредактировал baur82: 24.12.2007, 13:02:13

  • 0

#136
designf

designf
  • Свой человек
  • 852 сообщений
Сделал и так
print_r($date);
И вот так var_dump ($date);
Выдает NULL. На локалке тоже так-же NULL, но ошибки нету.

Отправляется это с шаблона, я думаю переменную он выдергивает с базы?
Кстати тоже самое происходит если фирма новая.

$template->replace("new", ifNew($f[date]));
$template->replace("updated", ifUpdated($f[update_date]));
$template->replace("hot", ifHot($f[countrating], $f[votes]));

  • 0

#137
J@mes

J@mes
  • очередь на регистрацию
  • 68 сообщений
Прошу помощи!:lol:
Скрипт выдает Warning: Invalid argument supplied for foreach() in C:\AppServ\www\old\classes\announces.php on line 15

сам файл:

<?
class announces
{
var $a_home=array();
var $a_uin=array();
var $a_group=array(); //недописано
var $a_data=array();
function announces()
{
}
function activate($uin, $lang)
{
global $db;
$a=$db->fetch_assoc ("SELECT c.header, a.id, a.uin, a.anons_text, a.HeadNews, a.SuperNews, UNIX_TIMESTAMP(a.date) as date, g.groupName FROM added_chapter c, info_content i LEFT JOIN anons a ON c.id=a.id && i.uin=a.uin LEFT JOIN anonsdata d ON a.id=d.anonsID LEFT JOIN anonsgroup g ON d.groupID=g.id WHERE i.lang='$lang' && i.activity='1' ORDER BY date DESC");
foreach ($a as $i=>$b)
{
$this->a_data["{$b['id']}"]=array('url'=>"$PHP_SELF?uin={$b['uin']}&chapter={$b['id']}", 'header'=>$this->FormatText($b['header']), 'text'=>$this->FormatText($b['anons_text']), 'date'=>$b['date']);
$this->a_group["{$b['groupName']}"][]=$b['id'];
if ($b['SuperNews']==1)
{
$this->a_home[]=$b['id'];
}
if ($b['HeadNews']==1 && $b['uin']==$uin)
{
$this->a_uin[]=$b['id'];
}
}
}
function FormatText($_text)
{
$_text = preg_replace('/[\r\f]/',"", $_text);
// Деление на абзацы
// $_text = preg_replace('/(^[^\n]+)(\n *\n)/m',"<p>\\1</p>\n", $_text);
// Вставка разрыва строки
$_text = preg_replace('"\n"',"<br>\n", $_text);
// Сохранение пробелов
// $_text = preg_replace('"((?<=\n)|(?<= )) "',"&nbsp;", $_text);
$_text = preg_replace("/(<Image=)(\d{10})(=true>)/e", "img_string('\\2', 'anons')", $_text);
// Добавление стилей к ссылкам
//$_text = preg_replace("'(<a [^>]*)(>.*</a>)'i", "\\1 class=\"{$this->art_class}\"\\2", $_text);
return $_text;
}
}
?>



#138
eroha

eroha
  • В доску свой
  • 1 762 сообщений
времени нет весь код проверять
попробуй это должно помочь
foreach (@$a as $i=>$b)

  • 0

#139
rewt

rewt
  • Завсегдатай
  • 293 сообщений

Прошу помощи!:-)
Скрипт выдает Warning: Invalid argument supplied for foreach() in C:\AppServ\www\old\classes\announces.php on line 15
....

попробуй проверить значение и тип результата:
if ($a && is_array($a)) {
   foreach ($a as $i=>$b) {
	 ...
   }
}

  • 0

#140
J@mes

J@mes
  • очередь на регистрацию
  • 68 сообщений
Мускул говорит нет колонки с.id хотя в БД она есть


Количество пользователей, читающих эту тему: 0

пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0

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

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.