Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Есть проблема с массивом и meta-тегами (PHP)

Ответить
Настройки темы
Есть проблема с массивом и meta-тегами (PHP)

Аватара для yager

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем привет.

Очень нужна помощь.
Сам в PHP не очень силен, недавно стал его использовать, а времени искать дополнительную инфу нет.
Поэтому, если вопрос тупой, не обессутьте.

Задача такая.

Сайт - on-line версия печатного издания (газета)
Требуется сформировать рубрики, такие как политика, экономика, и т.д.
На сервере все разделено по каталогам, имена которых соответствуют номерам газеты, например (1,2,3 и т.д.)
В каждом из этих номеров есть каталоги "stats" и "block", соответствующие статьям и блоку новостей.
В этих каталогах находятся файлы со статьями и новостями, в мета-тэгах которых указывается рубрика, заголовок, автор и т.д.

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


Есть такой кусок кода

PHP код: Выделить весь код

1.                       for($i=0$i<=sizeof($dir)-1$i++){  // $dir - это массив содержащий в своих элементах все номера издания

2.            
3.            $hdl_st
=opendir("nums"."/"."$dir[$i]"."/stats");
4.            while ($stat_dir=readdir($hdl_st)){
5.                if (($stat_dir!=".") && ($stat_dir!="..")) $stat_arr[]=$stat_dir// получили массив, в элементах которого статьи
6.            }
7.            closedir($hdl_st);
8.            rsort($stat_arr);
9.            foreach($stat_arr as $val_st){ // ...а теперь у каждой статьи 
10.                $meta_st=get_meta_tags("nums/"."$dir[$i]"."/stats/"."$val_st"); // берем мета-тэги
11.                $rubr=$meta_st[rubr_id];
12.                if ($rubr==$rubrika){ // сравниваем мета-тэг в статье с рубрикой, полученной при попадании на страницу из главной
13.                    echo "Номер газеты - $dir[$i]; Рубрика - $meta_st[rubr_name]; Тип - статья; Заголовок - $meta_st[zagol];<br>";
14.                    echo "<a href=st.php?paper_num=$dir[$i]&stat_num=$val_st>Перейти</a><br><br>";
15.                }
16.            }
17.            
18.            $hdl_bl
=opendir("nums/"."$dir[$i]"."/block");
19.
20.
21.            
while ($block_dir=readdir($hdl_bl)){
22.                if (($block_dir!=".") && ($block_dir!="..")) $block_arr[]=$block_dir// получили массив, 
// в элементах которого файлы с новостями, далее по аналогии со статьями
23.            }
24.            closedir($hdl_bl);
25.            rsort($block_arr);
26.            foreach($block_arr as $val_bl){
27.                $meta_bl=get_meta_tags("nums/"."$dir[$i]"."/block/"."$val_bl");
28.                if ($meta_bl[rubr_id]==$rubrika){
29.                    echo "Номер газеты - $dir[$i]; Рубрика - $meta_bl[rubr_name]; Тип - Блок новостей; Заголовок - $meta_bl[zagol];<br>";
30.                    echo "<a href=bl.php?paper_num=$dir[$i]&block_num=$val_bl>Перейти</a><br><br>";
31.                }
32.            }
33.        

В принципе это работает, что странно, так как вместе с результатами выдается куча ошибок, вернее одна, но по циклу..., и еще одна - по результату.

Во-первых, при запуске скрипта выдается такая ошибка
<b>Notice: Use of undefined constant rubr_id - assumed 'rubr_id' in s:\home\server\www\rubr.php on line 24</b>
имеются ввиду строки 11 и 28 вышеприведенного скрипта <b>(if ($meta_bl[rubr_id]==$rubrika){)</b>

Во-вторых, вывод на страницу происходит таким макаром


Цитата:
Номер газеты - 58; Рубрика - Семья и дети; Тип - статья; Заголовок - Семья бывает разная; Перейти
Номер газеты - 58; Рубрика - Семья и дети; Тип - статья; Заголовок - Напиши мне, мама!; Перейти

Номер газеты - 57; Рубрика - Семья и дети; Тип - статья; Заголовок - Детские сердца; Перейти
Номер газеты - 57; Рубрика - Семья и дети; Тип - статья; Заголовок - Детские сердца; Перейти
Номер газеты - 57; Рубрика - Семья и дети; Тип - статья; Заголовок - Обреченные!; Перейти
Номер газеты - 57; Рубрика - Семья и дети; Тип - статья; Заголовок - Обреченные!; Перейти
То есть, я так понимаю, мне нужно обнулить массивы $stat_arr и $block_arr, к примеру во второй строчке, но, честно говоря, я не знаю, как это сделать.

PS. Простите за такой развернутый эпос...

Отправлено: 12:33, 12-07-2006

 

Старожил


Сообщения: 156
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


1)
Цитата:
Во-первых, при запуске скрипта выдается такая ошибка <b>Notice: Use of undefined constant rubr_id - assumed 'rubr_id' in s:\home\server\www\rubr.php on line 24</b> имеются ввиду строки 11 и 28 вышеприведенного скрипта <b>(if ($meta_bl[rubr_id]==$rubrika){)</b>
$rubr_id

2) unset($stat_arr); unset($block_arr);



Если я Вас правильно понял.

З.Ы. Сорри, на код не смотрел

-------
Now it burns his hand he's turning to laugh
Smiles as the flame sears his flesh
Melting his face screaming in pain
Peeling the skin from his eyes
Watch him die according to plan
He's dust on the ground what did we learn


Отправлено: 14:14, 12-07-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для yager

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата:
$rubr_id

2) unset($stat_arr); unset($block_arr);
Не-а, к сожалению. Эти переменные всегда определены.

Отправлено: 14:24, 12-07-2006 | #3


Старожил


Сообщения: 156
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Notice: Use of undefined constant rubr_id - assumed 'rubr_id' in s:\home\server\www\rubr.php on line 24

Если перевести ЭТО, что получим? Возможно стоит добавить перед именем переменной знак "$" ?

if ($meta_bl[rubr_id]==$rubrika){

P.S. Может я все же чего то не понимаю

Отправлено: 22:03, 12-07-2006 | #4


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
Не-а, к сожалению. Эти переменные всегда определены.
Какие переменные?
В данном случае ты их просто обнуляешь, а спустя строчку уже присваиваешь ей значение.
http://php.rinet.ru/manual/ru/language.constants.php

Цитата:
Различия между константами и переменными:
У констант нет приставки в виде знака доллара ($);
$rubr=$meta_st[rubr_id];
Так оно и есть у тебя, но саму константу ты же не определил.

Отправлено: 22:32, 12-07-2006 | #5


Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


ребят, кавычки одинарные в квадратных скобках поставте и не будет предупреждений..

-------
Основы HTML | Конференции


Отправлено: 23:24, 12-07-2006 | #6


Старожил


Сообщения: 156
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать



E-mail
Не наш метод


yager
Может стоило еще немного кода дописать.. мало ли. может "выше" еще какие нибудь чудеса творятся?

-------
Now it burns his hand he's turning to laugh
Smiles as the flame sears his flesh
Melting his face screaming in pain
Peeling the skin from his eyes
Watch him die according to plan
He's dust on the ground what did we learn


Отправлено: 00:29, 13-07-2006 | #7


Аватара для yager

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


E-mail
Ты был прав. Я вера дома добил этот код. Точнее - во второй строчке ОПРЕДЕЛИЛ массив, а не "обнулил", как я говорил в первом посте, а в строчках 11 и 28 поставил кавычки. Все!

ЗЫ Привык, однако, я к типизированным языкам.

ЗЗЫ. Всем спасибо, "проблема" решена!

ЗЗЫЫ.
Igor_I. "rubr_id" - это не переменная и не константа, это тэг в файле со статьей, а по этому - всегда определен.

Отправлено: 09:51, 13-07-2006 | #8


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


yager
Цитата:
Igor_I. "rubr_id" - это не переменная и не константа, это тэг в файле со статьей, а по этому - всегда определен.
Ну ты знаешь, это тебе решать что это - константа, переменная или элемент массива. Я показал, что у тебя получилось ...
А каким языком ты владеешь?
И в чем же разница, между обнулением и определением массива?

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 19:43, 13-07-2006 | #9


Старожил


Сообщения: 156
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Igor_I
об этом история умалчивает...


yager
приходите еще

-------
Now it burns his hand he's turning to laugh
Smiles as the flame sears his flesh
Melting his face screaming in pain
Peeling the skin from his eyes
Watch him die according to plan
He's dust on the ground what did we learn


Отправлено: 21:24, 13-07-2006 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Есть проблема с массивом и meta-тегами (PHP)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Медиа - Проблема с русскими тегами в Aimp... kiripanda Microsoft Windows 2000/XP 3 29-03-2017 12:37
Проблема с PHP(не передаются переменные из формы в PHP- скрипт) Kirander Вебмастеру 21 03-08-2009 01:11
meta теги dima1981 Вебмастеру 4 23-05-2009 00:44
Проблема с райд массивом labile Хочу все знать 10 22-07-2008 22:09
Проблема с HTML тегами - вставка изображений. Docent-7610 Вебмастеру 2 23-01-2006 16:42




 
Переход