Нужен скрипт выбора нужной строки из TXT по параметру заданному в URL

  • Автор темы
  • Модер.
  • #11
Странно! У тебя внутри body такой код?:
Код:
<?php
            foreach ($lines as $value) {
            $str_num = explode('|', $value);
            if($str_num[0] == $num){
               // echo '<img src="'.trim($str_num[1]).'"alt="">';
                include 'include.php';
            }
        }
    ?>
Именно обрамлен <?php ?>
да, всё ставил как было написано:
PHP:
<?php
    $num = '';
    if($_GET)
        $num = trim(strip_tags($_GET['num']));
    if($myFile = fopen("text.txt", "r")){
        $lines = array();

        while(!feof($myFile)){
            $myLine = fgets($myFile);
            $lines[] = $myLine;
        }

        fclose($myFile);
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php
            foreach ($lines as $value) {
            $str_num = explode('|', $value);
            if($str_num[0] == $num){
                //echo '<img src="'.trim($str_num[1]).'"alt="">';
                include 'include.php';
            }
        }
    ?>
</body>
</html>
 
У меня все работает. Значит проблема того что у тебя внутри include.php. Если б скрипт не мог найти файл, вылезла ошибка.
Код:
<?php echo '<img src="'.trim($str_num[1]).'"alt="">'; ?>
 
  • Автор темы
  • Модер.
  • #13
У меня все работает. Значит проблема того что у тебя внутри include.php. Если б скрипт не мог найти файл, вылезла ошибка.
Код:
<?php echo '<img src="'.trim($str_num[1]).'"alt="">'; ?>
Для просмотра ссылки Войди или Зарегистрируйся :conf: вроди бы все верно установлено...
для проверки ставил инклуд в шаблон DLE, может он там не сработать а если ставить это все уже инклудом через PHP в код движка? или DLE что то где-то может блокировать?:confused:
 
Конечно dle блокирует простую вставку php кода.
Нужно тогда вставлять в шаблон tpl.
Код:
{include file="engine/modules/include.php"}
Соответственно путь относительно корня.
 
  • Автор темы
  • Модер.
  • #15
Конечно dle блокирует простую вставку php кода.
Нужно тогда вставлять в шаблон tpl.
Код:
{include file="engine/modules/include.php"}
Соответственно путь относительно корня.
а куда тогда ставить параметр num=* ? :confused:
я вставлял
Код:
{include file="/engine/modules/mymod/mymod.php?num=дерево береза"}
и в папке с mymod.php лежит файл include.php
 
Если ты составляешь страницу в шаблоне tpl. Тогда попробуй сделать два инклуда.
include1.php:
Код:
<?php
    $num = '';
    if($_GET)
        $num = trim(strip_tags($_GET['num']));
    if($myFile = fopen("text.txt", "r")){
        $lines = array();

        while(!feof($myFile)){
            $myLine = fgets($myFile);
            $lines[] = $myLine;
        }

        fclose($myFile);
    }
?>
include2.php:
Код:
    <?php
            foreach ($lines as $value) {
            $str_num = explode('|', $value);
            if($str_num[0] == $num){
                //echo '<img src="'.trim($str_num[1]).'"alt="">';
                include 'include.php';
            }
        }
    ?>

И вставляй куда хочешь. Главное последовательно.
Код:
{include file="engine/modules/include1.php"}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
{include file="engine/modules/include2.php"}
</body>
 
  • Автор темы
  • Модер.
  • #17
И вставляй куда хочешь. Главное последовательно.
Что-то с этими инклудами мороки больше(((. проще наверно в самом php файле прописать...

Есть например значение $value2, которое равно значению num, т.е. ?num=$value2
Как без GET запроса прочитать файл, найти соответствующую строку и вывести из нее параметр второй после |? Так же уже нормально можно будет получить данные из массива?
Так же проще будет чем делать инклуды?

Собственно код в который надо это пропихать, картинка в коде где должна быть - img src я прописал.
PHP:
        if( strpos( $tpl->copy_template, "[xfvalue_" ) !== false OR strpos( $tpl->copy_template, "[xfgiven_" ) !== false ) {
          
            $xfieldsdata = xfieldsdataload( $row['xfields'] );

            foreach ( $xfields as $value ) {
                $preg_safe_name = preg_quote( $value[0], "'" );

                if ( $value[6] AND !empty( $xfieldsdata[$value[0]] ) ) {
                    $temp_array = explode( ",", $xfieldsdata[$value[0]] );
                    $value3 = array();

                    foreach ($temp_array as $value2) {

                        $value2 = trim($value2);
                        $value2 = str_replace("&#039;", "'", $value2);

                        if( $config['allow_alt_url'] )   $value3[] = "<a class=\"thumbnail\" href=\"" . $config['http_home_url'] . "".$preg_safe_name."/" . urlencode( $value2 ) . "/\">" . $value2 . "<span>" . $value2 . "<img src=\"\" width=\"100\"/></span></a>";
                        else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&amp;xf=" . urlencode( $value2 ) . "\">" . $value2 . "</a>";
                    }

                    $xfieldsdata[$value[0]] = implode(" / ", $value3);

                    unset($temp_array);
                    unset($value2);
                    unset($value3);

                }
              
                if( empty( $xfieldsdata[$value[0]] ) ) {
                    $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[xfnotgiven_{$value[0]}]", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[/xfnotgiven_{$value[0]}]", "", $tpl->copy_template );
                } else {
                    $tpl->copy_template = preg_replace( "'\\[xfnotgiven_{$preg_safe_name}\\](.*?)\\[/xfnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[xfgiven_{$value[0]}]", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[/xfgiven_{$value[0]}]", "", $tpl->copy_template );
                }

                $xfieldsdata[$value[0]] = stripslashes( $xfieldsdata[$value[0]] );

                if ($config['allow_links'] AND $value[3] == "textarea" AND function_exists('replace_links')) $xfieldsdata[$value[0]] = replace_links ( $xfieldsdata[$value[0]], $replace_links['news'] );

                $tpl->copy_template = str_replace( "[xfvalue_{$value[0]}]", $xfieldsdata[$value[0]], $tpl->copy_template );

                if ( preg_match( "#\\[xfvalue_{$preg_safe_name} limit=['\"](.+?)['\"]\\]#i", $tpl->copy_template, $matches ) ) {
                    $count= intval($matches[1]);
      
                    $xfieldsdata[$value[0]] = str_replace( "</p><p>", " ", $xfieldsdata[$value[0]] );
                    $xfieldsdata[$value[0]] = strip_tags( $xfieldsdata[$value[0]], "<br>" );
                    $xfieldsdata[$value[0]] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $xfieldsdata[$value[0]] ) ) ) ));
      
                    if( $count AND dle_strlen( $xfieldsdata[$value[0]], $config['charset'] ) > $count ) {
                          
                        $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $count, $config['charset'] );
                          
                        if( ($temp_dmax = dle_strrpos( $xfieldsdata[$value[0]], ' ', $config['charset'] )) ) $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $temp_dmax, $config['charset'] );
                      
                    }
      
                    $tpl->set( $matches[0], $xfieldsdata[$value[0]] );
      
                }
            }
        }
 
Ну так-то да проще. Так бы сразу сказал. Только txt файл в коде указан, как в одной директории с этим файлом.
Код:
//Первое добавление
        if($myFile = fopen("text.txt", "r")){
            $lines = array();

            while(!feof($myFile)){
                $myLine = fgets($myFile);
                $lines[] = $myLine;
            }

            fclose($myFile);
        }
        //Конец
   
        if( strpos( $tpl->copy_template, "[xfvalue_" ) !== false OR strpos( $tpl->copy_template, "[xfgiven_" ) !== false ) {
     
            $xfieldsdata = xfieldsdataload( $row['xfields'] );

            foreach ( $xfields as $value ) {
                $preg_safe_name = preg_quote( $value[0], "'" );

                if ( $value[6] AND !empty( $xfieldsdata[$value[0]] ) ) {
                    $temp_array = explode( ",", $xfieldsdata[$value[0]] );
                    $value3 = array();

                    foreach ($temp_array as $value2) {

                        $value2 = trim($value2);
                        $value2 = str_replace("&#039;", "'", $value2);
                   
                        //Второе добавление
                        foreach ($lines as $value) {
                            $str_num = explode('|', $value);
                            if($str_num[0] == $value2){
                                $url_form_file = $str_num[1];
                            }
                        }
                        //Конец            
                        if( $config['allow_alt_url'] )   $value3[] = "<a class=\"thumbnail\" href=\"" . $config['http_home_url'] . "".$preg_safe_name."/" . urlencode( $value2 ) . "/\">" . $value2 . "<span>" . $value2 . "<img src=\" . $url_form_file . \" width=\"100\"/></span></a>";
                        else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&amp;xf=" . urlencode( $value2 ) . "\">" . $value2 . "</a>";
                    }

                    $xfieldsdata[$value[0]] = implode(" / ", $value3);

                    unset($temp_array);
                    unset($value2);
                    unset($value3);

                }
         
                if( empty( $xfieldsdata[$value[0]] ) ) {
                    $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[xfnotgiven_{$value[0]}]", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[/xfnotgiven_{$value[0]}]", "", $tpl->copy_template );
                } else {
                    $tpl->copy_template = preg_replace( "'\\[xfnotgiven_{$preg_safe_name}\\](.*?)\\[/xfnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[xfgiven_{$value[0]}]", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[/xfgiven_{$value[0]}]", "", $tpl->copy_template );
                }

                $xfieldsdata[$value[0]] = stripslashes( $xfieldsdata[$value[0]] );

                if ($config['allow_links'] AND $value[3] == "textarea" AND function_exists('replace_links')) $xfieldsdata[$value[0]] = replace_links ( $xfieldsdata[$value[0]], $replace_links['news'] );

                $tpl->copy_template = str_replace( "[xfvalue_{$value[0]}]", $xfieldsdata[$value[0]], $tpl->copy_template );

                if ( preg_match( "#\\[xfvalue_{$preg_safe_name} limit=['\"](.+?)['\"]\\]#i", $tpl->copy_template, $matches ) ) {
                    $count= intval($matches[1]);
 
                    $xfieldsdata[$value[0]] = str_replace( "</p><p>", " ", $xfieldsdata[$value[0]] );
                    $xfieldsdata[$value[0]] = strip_tags( $xfieldsdata[$value[0]], "<br>" );
                    $xfieldsdata[$value[0]] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $xfieldsdata[$value[0]] ) ) ) ));
 
                    if( $count AND dle_strlen( $xfieldsdata[$value[0]], $config['charset'] ) > $count ) {
                     
                        $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $count, $config['charset'] );
                     
                        if( ($temp_dmax = dle_strrpos( $xfieldsdata[$value[0]], ' ', $config['charset'] )) ) $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $temp_dmax, $config['charset'] );
                 
                    }
 
                    $tpl->set( $matches[0], $xfieldsdata[$value[0]] );
 
                }
            }
        }
 
Последнее редактирование:
  • Автор темы
  • Модер.
  • #19
Ну так-то да проще.
:confused: в таком виде все [xfvalue_* которые должны выводится ссылкой - просто выводятся как [xfvalue_* ... т.е. этот тег с правленным кодом почему то перестает обрабатываться((((
 
Да там пересечение переменных. Тогда нужно заменить:
Код:
          //Второе добавление
                        foreach ($lines as $value) {
                            $str_num = explode('|', $value);
                            if($str_num[0] == $value2){
                                $url_form_file = $str_num[1];
                            }
                        }
        //Конец
На:
Код:
                        //Второе добавление
                        foreach ($lines as $value_num) {
                            $str_num = explode('|', $value_num);
                            if($str_num[0] == $value2){
                                $url_form_file = $str_num[1];
                            }
                        }
                        //Конец
 
Назад
Сверху