IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Выделение цветом текущей новости на РНР (https://www.imho.ws/showthread.php?t=104420)

Стефания 02.06.2006 21:17

Выделение цветом текущей новости на РНР
 
В общем что-то типа ленты новостей, автоматом прставляются ссылки, которые берутся из текстовых файлов. Как сделать так, чтоб переходя на новость, ссылка на которую перешли выделялась другим цветом? :молись:
Скрипт считки такой.
<?php
if (!isset($k))
{
$k=1;
}
if (!isset($kkk))
{
$kkk='new.txt';
}
switch($k)
{
case '1':
$ap=fopen('poz/'.$kkk,'r');
while($d=fgets($ap))
{
$d=trim($d);
$ap1=fopen('poz/'.$d,'r');
$p1=fgets($ap1);
$p1=trim($p1);
echo $p1;
echo (fgets($ap1)."\r\n");
fclose($ap1);
}
fclose($ap);
break;
case '2':
$ap1=fopen('poz/'.$fn1,'r');
$p1=fgets($ap1);
$p1=trim($p1);

echo $p1;
$cc1=fgetss($ap1);
}
?>
poz-каталог
new.txt - текстовый файл, в котором лежат номера других файлов (например:
1.txt
2.txt, А в них уже конкретные ссылки, которые и выводятся на экран.

rontommy 03.06.2006 12:31

В таблицу стилей вписать что-то типа этого, с желаемым кодом цвета :
a:visited {
color: #E34000;
}

Стефания 03.06.2006 14:08

Не, не то. Видимо, не так объяснила.
Есть три новости: (вход - это а хреф)
Новость один "вход" (переход на страницу 1.php)
Новость два "вход" (переход на страницу 2.php)
Новость три "вход" (переход на страницу 3.php)

На странице 1.рнр вот эта чать:
Новость один "вход"
Новость два "вход"
Новость три "вход"
сохраняется:
так вот........
мне нужно, чтоб "Новость один "вход" " на странице 1.рнр выделялась другим цветом, т.е. чтобы людизнали, что они читают новость один. На странице 2.рнр новость два должна быть другим цветом ну и ты.ды.
Так понятнее?
Вверху я написала код, который считывает эти новости из текстовых файлов. Как мне задать коду, что страница, на которую перешли, является текущей и новость, дающая ссылку на эту страницу должна выделяться другим цветом?
Хелп, плиз......ну я же знаю, что тут ничего сложного нет :молись:

Naked 03.06.2006 15:19

Цитата:

Стефания:
Не, не то. Видимо, не так объяснила.
ну да, понятно что тебе нужно, но для начала, почти такая же тема была: __http://www.imho.ws/showthread.php?t=103985 :contract:
Вот а так в целом, нужно реализовывать так: у тебя есть адрес той новости, которую ты сейчас выводишь, или на которой странице ты находишься (это либо адресная строка браузера, либо то, что ты читаешь из файла), и у тебя есть список ссылок, которые отображаются в меню, просто тебе нужно сравнить ссылку в меню со своей текущей ссылкой и если они совпадают, то выделяешь эту ссылку как-нибудь (это и есть текущая новость) :)

Стефания 03.06.2006 15:35

Так я это все понимаю.....я не понимаю как это на рнр написать. Как вот это написать: "сравнить ссылку в меню со своей текущей ссылкой"? Как можно ссылку в меню сравнить с текущей ссылкой?

Цитата:

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

Hubbitus 04.06.2006 00:53

Цитата:

Стефания:
Как можно ссылку в меню сравнить с текущей ссылкой?
Ну как, если не знаете - сравнивайте на равенство подстроки например.

Цитата:

Стефания:
Почти.....там нужно было ссылку изменить, а мне нужно текст изменить......кажися две разные вещи.
А какая разница что менять?

Стефания 04.06.2006 18:59

Ыыыы...или я вас не понимаю или вы меня.
Есть такая фича "$_SERVER["PHP_SELF"]"

И вот что я сделала:
<?php
if (!isset($k))
{
$k=1;
}
if (!isset($kkk))
{
$kkk='new.txt';
}
switch($k)
{
case '1':
$ap=fopen('poz/'.$kkk,'r');
while($d=fgets($ap))
{
$d=trim($d);
$ap1=fopen('poz/'.$d,'r');
$p1=fgets($ap1);
$p1=trim($p1);
// это мои коррективы !!! ------------
ereg("[A-Za-z0-9]{1,}\.php",$p1,$name);
if ($name[0]==str_replace("/","",$_SERVER["PHP_SELF"]))
{
$begin='<font color=red>';
$end='</font>';
}
else
{
$begin='';
$end='';
}
echo $begin.$p1.$end;

// это конец моим коррективам !!! --------------

echo (fgets($ap1)."\r\n");
fclose($ap1);
}
fclose($ap);
break;
case '2':
$ap1=fopen('poz/'.$fn1,'r');
$p1=fgets($ap1);
$p1=trim($p1);
echo $p1;
$cc1=fgetss($ap1);
fclose($ap1);
}
?>

Но оно все-равно не работает :(

GoodS 04.06.2006 21:07

А можно поподробнее, а лучше скинь на мейл файлики, посмотрим. Такое непонимание может возникнуть только из-за недостатка инфы.
Да и еще ты там строки вроде сравниваешь, == не катит насколько я знаю используй лучше strcmp. B gjxtve e nt,z 1.php, 2.php, 3.php ....
Зачем столько файлов???
Лично я не разобрался)))

Hubbitus 05.06.2006 10:57

Цитата:

Стефания:
Есть такая фича "$_SERVER["PHP_SELF"]"
Это не фича, а переменная :)

Действительно очень сложно понять что подразумевается под конструкциями вида "if (!isset($k))", кто такой К, за что отвечает, откуда берется... Вобщем покажи файлик полностью, который так не дается, таогда можно будет уж смотреть...

Стефания 05.06.2006 21:29

Цитата:

GoodS:
Лично я не разобрался)))
Цитата:

Hubbitus:
Это не фича, а переменная
:p Кароче, уже разобрались......))) Всем спасибо :)
Кста, начет $k, хороший вопрос.....я вот тоже не понимаю, откуда она взялась и зачем она вообще тут нужна :biggrin: Вот как иногда полезно, что б чужими глазами взглянули на мною написанное. Видимо, я хотела что-то другое, но потом передумала :biggrin: Что бы я без вас делала! :rolleyes:

Стефания 23.06.2006 00:07

Вернусь еще раз к своим баранам :молись:
Нужно сравнить ссылку с текущей страницей....если они равны, то ссылка должна быть выделена красным цветом. Сссылка берется из файла тхт. У меня не работает, т.е. при переходе по ссылкам цвет их не меняется.

<?php
if (!isset($kkk))
{
$kkk='new.txt';
}
$ap=fopen('poz/'.$kkk,'r');
while($d=fgets($ap))
{
$d=trim($d);
$ap1=fopen('poz/'.$d,'r');
$p1=fgets($ap1);
ereg("[A-Za-z0-9]{1,}\.php",$p1,$lll);
ereg("[A-Za-z0-9]{1,}\.php",$_SERVER["PHP_SELF"],$rrr);
if ($lll[0]==$rrr[0])
{
$begin='<font color=red>';
$end='</font>';
}
else
{
$begin='';
$end='';
}
echo $begin.$p1.$end;
echo (fgets($ap1)."\r\n");
fclose($ap1);
}
fclose($ap);

?>

Что я тут не того наваяла?

BorLase 23.06.2006 14:46

вот тут
ereg("[A-Za-z0-9]{1,}\.php",$p1,$lll);

тебе случайно не так надо?
ereg("[A-Za-z0-9]{1,}\.php",$d,$lll);

вообще, лучше всего пройти это все дебаггером или, на крайний случай, поставь вывод отладочной информации - чему у тебя перед if ($lll[0]==$rrr[0]) равны $lll[0], $rrr[0] и т.д.

кроме того, неплохо было бы в вопросе привести пример содержания new.txt

Стефания 23.06.2006 18:15

BorLase
спасибочки огромное, ща попробую.
Привожу пример содеражния new.txt:
2.txt
1.txt

а в файлах этих лежат сылки вот такого вида:
<a href="7.php" target="_parent">С 8-м марта!</a> <br>

Не-а.....нешта не подходит.....$d у меня получается не ссылка, а название фалов 1.txt 2.txt :( Я просто сама в этом уже так запуталась..... :молись:

Я кажется разобралась......у меня в css файле прописан цвет ссылок.....может поэтому он не хочет их перекрывать? Так как если я делаю этот же скрипт, но ставлю допустим вместо $begin='<font color=red>' $begin='444444', то эти четверки появляются перед надписью на странице с текущей ссылкой.
Тогда вопрос.....как перекрыть цвет ссылки, заданный css файлом?

BorLase 26.06.2006 10:33

ммм... если мне не изменяет моя девичья память, проблема в следующем - несмотря на то, что ты меняешь цвет ВОКРУГ ссылки, сама ссылка определяется классом в CSS; потому-то у тебя ничего и не меняется

т.е. менять надо в этом месте: <a href="7.php" target="_parent">, а $begin-$end тебе не помогут

но если эти ссылки в файле... как вариант, могу предложить такое:
1) делаешь два класса для ссылок - common и current
2) все ссылки в файлах пишешь в виде <a %s href="7.php" target="_parent">
3) вместо $begin-$end делаешь так:
PHP код:

if ($lll[0]==$rrr[0])
{
  
$link2out sprintf(p1"class='current'");
}
else
{
  
$link2out sprintf(p1"class='common'");
}
echo 
$link2out

по идее, должно работать; если чего-то не понятно, пиши.

Стефания 26.06.2006 20:33

BorLase
спасибочки! Я поняла мысль. Попробую сделать. Только непонятно, что значит %s в ссылке <a %s href="7.php" target="_parent">. Т.е. это что делает?
А вообще, я решила эту проблему проще (иногда я все-таки не ищу трудных путей :biggrin: ), я сделала мини-гиф-картинки....типа полоски и текущую ссылку выделяю с двух сторон этими двумя картинками. Получилось даже красивше, чем цветом.

BorLase 27.06.2006 10:41

Цитата:

Стефания:
Только непонятно, что значит %s в ссылке <a %s href="7.php" target="_parent">. Т.е. это что делает?
она указывает, что в этом месте выведется строка.

в общем, man printf ;)


Часовой пояс GMT +4, время: 03:19.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.