PHP include / require метод с переменным путем

Кто-то, чтобы помочь, где я ошибаюсь! Ajax возвращает правильную информацию. Он также показывает, что «успех» включает страницу со всеми данными в «alert (html)». Echo $ idName; и echo $ path; распечатать правильную информацию на странице оператора (где это код). На странице нет боковых закусок. Требовать метод не блокирует страницу. Проблема в том, что div include остается пустым! Благодарю.

<div id="include">
    <?php
        if (isset($_POST['idName1'])) {
            $idName = $_POST['idName1'];
            $query = mysqli_query($mysqli, "SELECT in_path FROM strani WHERE id_name='$idName '");
            $row_path = mysqli_fetch_array($query);
            $path = $row_path['in_path'];
            require($path); /*Also tried: require(dirname(__FILE__)."/".$path); all the same!*/
        }
    ?>
</div>

Потому что то, что я хочу объяснить дальше, оно не пройдет, как комментарий, я объявляю, что редактирую вопрос. Прикрепите структуру файла и каталоги, а также код, который изменился, чтобы сократить процедуру, чтобы выявить ошибку. Прогнозируемый сценарий выглядит следующим образом: авторизованный помощник с момента входа в систему, откроет main-page.php с дополнительным меню форм, которое разрешено редактировать. Эта страница сразу включает в себя ? € -form-carrier.php, в которой он сам включает some-data.php. После анкерного тега он выберет подходящую форму, эта форма должна быть включена в соответствующий div с «id = include».

Page structure:
    main-page.php > It includes file: require(form-carrier.php) which iclude: require(form.php); and: require(some-data.php); 
Dir structure:
    secured-dir (It contains files: login.php; error.php; error-log)
        styles-dir
        js-dir
        includes-dir (It contains files: functions.php; db-conn-conf.php; process-login-logout.php; session-class.php; error-log)
        forms-dir (It contains files: form-carrier.php; some-data-php; error_log)
            forms-byclass1-subdir (It contains files: form-some-name.php; error_log)
            forms-byclass2-subdir (It contains files: form-some-name.php; error_log)
            ..... other sub dirs....
        working-dir It contains files: (main-page.php; error_log)

Протестировано, указав путь, набрав и обнаружив, что он работает правильно, если требуется вписать («forms-byclass1-subdir / form-some-name.php»); а также «../ forms-dir / forms-byclass1-subdir / form-some-name.php». Это приводит меня к выводу, что «form-some-name.php» зарегистрирован main-page.php, который находится в рабочем каталоге, а также form-carrier.php, расположенный в forms-dir, который ребенок из main-page.php. Не должно работать так, но это работает. Чтобы избежать путаницы, я заменил два файла, включая файлы (form-carrier.php и some-data-php) в том же каталоге, что и dira? вместе с «main-page.php».

Now dir structure look like:
forms-dir (only error_log)
    forms-byclass1-subdir (It contains files: form-some-name.php; error_log)
    ..... others forms-byclass-subdirs....
working-dir It contains files: (main-page.php; form-carrier.php; some-data-php; error_log)

And the php code in form-carrier.php:
...
<div id="include">
    <?php
        if (isset($_POST['strPath1'])) {
            $strPath = $_POST['strPath1'];
            var_dump($strPath);
            require($strPath); 
        }
    ?>
</div>
...

Я сократил код и решил не проходить базу данных, но в javascript создаю переменную с полным путем и отправьте ее непосредственно AJAX в целевой файл. И снова результат тот же. Если вы вписываете путь путем ввода, код выполняется правильно, если я использую переменную в javascript, отправленную Ajax, я получаю правильные данные, в alert (html) может читать все данные из формы-some-name. php, а также form-carrier.php; и some-data.php, var_dump ($ strPath); дает мне правильный путь, но включить div по-прежнему пуст! Я буду очень признателен, если кто-то все еще заинтересован в этом, чтобы решить эту проблему, для меня неизвестная и странная проблема.

javascript,php,html,

0

Ответов: 1


0 принят

Поскольку никто не имеет достаточных знаний, хочет потратить время на решение этой проблемы, и я уверен, что это легко разрешимо, я решил пока и пост, надеясь найти полезную для других новичков в этой области как меня! Я вернулся к первому подходу. Этот способ намного проще и предоставляет несколько следующих шагов: page1 achor click> page1 js var для пути и asign для промежуточного файла, указанного на странице 1> js load page3 на стр. 2 с помощью filePath. Проблема с преждевременным обновлением фиксируется следующим образом: сначала с разбиением JS-файла, где были все коды для этих трех файлов, по три на каждую страницу отдельно, а также добавление функции setTimeout к другим процедурам для выполнения с правильным порядком. Теперь он работает гладко!

main-page.php
<nav class=a€?side-menua€?>
a€¦
    <?php ... Creating a side-menu from database MySQL ... ?>
// echo resault:
<ul>
    <li class=a€?sub-menua€?><a id=a€?forms-byclass1-subdira€? href=a€?#a€?></a> 
        <ul>
            <li class=a€?anchora€?>
                <a href=a€?# form-some-namea€?>
                    <span id=a€?form-headera€?>form-label</span></a>
</li></ul></li></ul></nav>
a€¦
</nav>
a€¦
<div id="fc">
    <?php require("form-carrier.php"); ?>
</div>
<div id=a€?hiddena€?
    <input type="text" id="path" name="path" value=a€?a€? />
</div>
a€¦
form-carrier.php
a€¦
<div id="include"></div> 
a€¦
Main-page.js
a€¦
$(".sub-menu > a").click(function(e){
    e.preventDefault();
    a€¦ variables to get a desired path a€¦
    $("#include").load(path);
    setTimeout(function() {
        a€¦ other procedures a€¦
    }, 60);
});

Это не значит, что я отказался от подхода, используя Ajax, PHP и db, но пока не найду способ его исправить, это, безусловно, хорошее решение. Поэтому остается призыв к вкладу от гуру веб-дизайна.

Обратите внимание, что для правильного функционирования различных событий: поскольку файл динамически включен, будет проблематичным использование JQuery .click (), а также JavaScript HTML DOM EventListener, если он не используется в html inline. Самый надежный способ, по крайней мере, в моем случае - использование JQuery a € ?.on (события [, селектор] [, данные], обработчик).

JavaScript, PHP, HTML,
Похожие вопросы