У меня есть форма на странице, где пользователи могут сохранять информацию, и выпадающий список, который извлекает эти сохраненные файлы из каталога, в который они их сохраняли. Я хотел бы, когда они идут на эту страницу, заключается в том, что, когда они выбирают имя файла из раскрывающегося списка, оно помещает имя файла в поле ввода «CodeDescription» и информацию о файле в текстовом поле «Код », однако я не уверен, как это сделать. Ниже мой текущий код.
<input type="hidden" name="Action" value="EDIT" /> <input type="hidden" name="Selection" id="Selection" value="-1"> <div>Below is the list of your saved codes. To edit your codes, select it from the list.</div> <select> <?php $directory = $directory = 'users/' . $_SESSION['username']; $files = scandir( $directory ) ; foreach( $files as $file ) { if ( ! is_dir( $file ) ) { echo "<option>" . $file . "</option>"; } } ?> </select> <h3>Saved Codes</h3> <form method="post" action="/evo/avsaveprocess.php"> <input type="hidden" name="Action" value="SAVE" /> <input type="hidden" name="CodeId" id="CodeId" value="0" /> <table width="100%" border="0"> <tr> <td>Description:</td> <td><input type="text" name="CodeDescription" size="40" maxlength="50" id="CodeName" value="" /></td> </tr> <tr> <td valign="top">Code:</td> <td> <textarea rows="10" style="width:99%" name="Code" id="CodeValue"></textarea> </td> </tr> </table> <input type="submit" value="Save" /> </form>
Или, наоборот, я бы не возражал, если бы при выборе нужного файла в выпадающем меню он просто отображал вывод под полями формы.
отредактирован, чтобы добавить javascript, я пытался:
<script> function CodeChange() { var filesContentJS = "$filesContents"; if (index > 0) { document.getElementById("Selection").value = filesContentJS; } else { document.getElementById("Selection").value = "-1"; document.getElementById("CodeId").value = "0"; document.getElementById("CodeName").value = ""; document.getElementById("CodeValue").value = ""; } } </script>
обновленный javascript Это не выводит никаких ошибок, однако, когда я проверяю элемент в Chrome, он возвращает:
Предупреждение: file_get_contents (users / AddictionAddiction.txt) [function.file-get-contents]: не удалось открыть поток: нет такого файла или каталога в /home/revo/public_html/evo/codesaveindex.php в строке 141
который я не уверен, где исправить, потому что должен быть / между AddictionAddiction.txt
Создайте массив содержимого файлов:
<?php $directory = $directory = 'users/' . $_SESSION['username']; $filesContents = Array(); $files = scandir( $directory ) ; foreach( $files as $file ) { if ( ! is_dir( $file ) ) { $filesContents[$file] = file_get_contents($directory . $file); echo "<option>" . $file . "</option>"; } } ?>
Затем сделайте массив Javascript или JSON
<script> var filesContentJS = <?=json_encode($filesContents) ?>; </script>
A в функции select использовать onChange = "": получить выбранный файл из выпадающего списка, прокрутить файлыContentJS, чтобы найти его содержимое и заполнить его форму
на другой заметке: имейте в виду, что если ваши файлы большие (у вас много кода / текста), вам может понадобиться сделать это с помощью AJAX … При изменении раскрывающегося списка звоните AJAX, чтобы получить его информацию.