@veshinak

Как получить содержание пункта listbox?

Добрый день!

Есть следующий скрипт, читающий при загрузке имена файлов в заданной директории и группирующий их в выпадающий список. (Файлы - текстовые, количество непостоянное)

<?
// open the docs directory
$dhandle = opendir('documents');
// define an array to hold the files
$files = array();

if ($dhandle) {
   // loop through all of the files
   while (false !== ($fname = readdir($dhandle))) {
      // if the file is not this file, and does not start with a '.' or '..',
      // then store it for later display
      if (($fname != '.') && ($fname != '..') &&
          ($fname != basename($_SERVER['PHP_SELF']))) {
          // store the filename
          $files[] = (is_dir( "./$fname" )) ? "(Dir) {$fname}" : $fname;
      }
   }
   // close the directory
   closedir($dhandle);
}

echo "<select name=\"file\">\n";
echo "<option selected>Select file</option>";
// Now loop through the files, echoing out a new select option for each one
foreach( $files as $fname )
{  
   echo "<option>{$fname}</option>\n";
}
echo "</select>\n";
?>


Необходимо, чтобы по клику на имени файла выводилось его содержание под списком. Средствами PHP, если я правильно понимаю, этого сделать нельзя, поэтому прошу ткнуть носом в решение с javascript, чтобы чтобы работало независимо от конкретного количества файлов, "for each", как говорится.
  • Вопрос задан
  • 2398 просмотров
Решения вопроса 1
jakulov
@jakulov
для простоты с использованием jquery

<script>
            $(function(){
               $('select').change(function(){
                   var file = $(this).find('option:selected').text();
                   if(file != 'Select file') {
                       $(this).next('div').load('/getfile.php?file=' + encodeURIComponent(file));
                   }
                   else {
                       $(this).next('div').html('');
                   }
               });
            });
        </script>


и добавляем новый скрипт на сервере getfile.php:
$filename = 'documents/' . basename($_GET['file']);
if(is_file($filename)) {
    echo '<pre>' . file_get_contents($filename) .'</pre>'; exit;
}
echo 'file not found'; exit;


нужно для вывода файла после тега select добавить пустой div и подрубить jQuery
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы