Здравствуйте!
Работаю с сайтом, доставшимся по наследству.
На главной странице новости размещаются короткой строкой, друг за другом, их текст содержится в xml-файле в виде:
<news>
- <division name="Новости">
- <line title="Новость короткой строкой">
- <text>Полный текст новости</text> </line>
- line title="Еще одна Новость короткой строкой">
- <text>Полный текст еще одной новости</text> </line>
- </division>
- </news>
Короткая строка на главной завершается ссылкой "Подробнее...", эта ссылка ведет пользователя на news.php, в коде которой прописано:
- <!-- Новости -->
- <h1>Новости</h1>
- <? include("get_data.php");
- $xmlfile = "news.xml";
- get_data($xmlfile);
- ?>
- <!-- /Новости -->
Суть вопроса:объясните, пожалуйста, как при нажатии на ссылку "Подробнее..." попасть именно на ту новость, которая интересует? [IMG]http://forum.php.su/im/emoticons/trouble.gif[/IMG] Они все в одном файле и если их много, приходится прокручивать все новости, а хотелось бы оказаться на нужной строке. То есть ссылка "Подробнее1..." должна вести к тексту новости 1, ссылка "Подробнее2..."- цепляться к новости 2 и т.д. Помогите!
get_lines. php:
- <?
- function get_lines($xmlfile) {
- // создаем парсер
- $parser = xml_parser_create();
- // назначаем обработчики начальных и конечных тэгов
- xml_set_element_handler($parser, "startElement", "endElement");
- // обработчик символьных данных
- xml_set_character_data_handler($parser, "characterData");
- // открываем файл с новостями только для чтения
- $file = fopen($xmlfile, "r");
- // запуск парсера и проверка на ошибки при разборе
- while ($data = fread($file, 4096)) { // записываем содержимое файла в строку
- if (!xml_parse($parser, $data, feof($file))) {
- die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code
- ($parser)), xml_get_current_line_number($parser)));
- }
- }
- xml_parser_free($parser);
- }
- // обработка начального тэга
- function startElement($parser, $name, $attrs) {
- switch($name) {
- case "LINE":
- while (list($k, $v) = each($attrs)) {
- if ($k == "DATE") {
- $v = iconv("UTF-8","windows-1251",$v);
- print('<div><b> '.$v.'</b></div>'); } // отображаем значение
- атрибута date
- if ($k == "TITLE") {
- $v = iconv("UTF-8","windows-1251",$v);
- print('<p class="news">- '.$v.' <br>(<a
- href="news.php">Подробнее >></a>)<P>'); } // отображаем значение атрибута title
- }
- break;
- default:
- print "";
- }
- }
- // обработка конечного тега
- function endElement($parser, $name) {
- print "";
- }
- // обработка символьных данных
- function characterData($parser, $data) {
- print ""; //$data;
- }
- ?>
Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
|