PDA

Просмотр полной версии : Вывести список файлов и выбрать один


Gray_f0x
14.12.2008, 02:53
Задача :

Вывести список файлов директории, возле имени каждого файла в списке радио-кнопка, передать имя выбранного файла в обработчик.

Вот то, что вышло у меня... :

<?php
/* файлменеджер */
$dir = opendir("./");

chdir("./");
echo "<html><head><title>Файлменеджер</title></head><body>";
echo "<h1>Оглавление каталога</h1><p>";
echo "<table width= 100%>";

while ($d=readdir($dir))
{
$file = basename($d);
echo $file;
//$file = is_file($d);
echo $file;
echo "<tr><td>";

if (is_dir($d)) echo "$d</td><td>Каталог</td>";
if (is_file($d)) echo "<form action='edit.php' method='post'><input type=radio name=".$file." value=file>$d</td><td>".filesize($d)."</td>";

echo "<tr>";

}

echo "<input type=submit name=Edit value=Edit></form></table></body></html>" ;

closedir($dir);
?>

В чем проблема :

список файлов скрипт выводит, но при выборе файла, значения радио-кнопок совпадают и радио-кнопки не уникальны! И при передаче в обработчик, тот получает пустое значение, а принимает через $HTTP_POST_VARS

scrat
14.12.2008, 03:10
получается ты форму выводишь по N раз(N-число файлов). Выведи в начале <form ...> а потом твои файлы и радиобоксы

Gray_f0x
14.12.2008, 04:07
echo "<table width= 100%><form action='edit.php' method='post'>";

while ($d=readdir($dir))
{
$file = basename($d);
echo $file;
//$file = is_file($d);
echo $file;
echo "<tr><td>";

if (is_dir($d)) echo "$d</td><td>Каталог</td>";
if (is_file($d)) echo "<input type=radio name=".$file." value=file>$d</td><td>".filesize($d)."</td>";

echo "<tr>";

}

echo "<input type=submit name=Edit value=Edit></form></table></body></html>" ;


Сделал вот так... Все равно не работает.. И радио-кнопки глючат... Возможно, нужно использовать другую функцию ?

preda1or
14.12.2008, 04:08
deleted

Gray_f0x
14.12.2008, 04:10
По прежнему глючат кнопки.

Сделал так :

<?php
/* файлменеджер */
$dir = opendir("./");

chdir("./");
echo "<html><head><title>Файлменеджер</title></head><body>";
echo "<h1>Оглавление каталога</h1><p>";
echo "<table width= 100%><form action='edit.php' method='post'>";

while ($d=readdir($dir))
{
$file = basename($d);
echo $file;
//$file = is_file($d);
echo $file;
echo "<tr><td>";

if (is_dir($d)) echo "$d</td><td>Каталог</td>";
if (is_file($d)) echo "<input type=radio name=".$file." value=".$file.">$d</td><td>".filesize($d)."</td>";

echo "<tr>";

}

echo "<input type=submit name=Edit value=Edit></form></table></body></html>" ;

closedir($dir);
?>

Вывод хтмл кода кнопок и он правильный, но все еще глючат ..

<input type=radio name=config.php value=config.php>config.php</td><td>0</td><tr>edit.phpedit.php<tr><td><input type=radio name=edit.php value=edit.php>

preda1or
14.12.2008, 04:13
<?php

echo "<html><head><title>Файлменеджер</title></head><body>";
echo "<h1>Оглавление каталога</h1><p>";
echo "<table width= 100%><form action='edit.php' method='post'>";

if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($file)) echo $file."</td><td>Каталог</td>";
if (is_file($file)) echo "<input type=radio name=".$file." value=file>".$file." (Размер:".filesize($file).")</td>\n<br>";
}
}
closedir($handle);
}

echo "<input type=submit name=Edit value=Edit></form></table></body></html>" ;

?>

Gray_f0x
14.12.2008, 04:15
В твоем варианте список файлов не показывается

preda1or
14.12.2008, 04:16
ща сек, я подправил скрипт. посмотри
ВОТ
<?php

echo "<html>
<head><title>Файлменеджер</title></head>
<body>
<h1>Оглавление каталога</h1><p>
<form action='edit.php' method='post'>\n";

if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($file)) echo $file." (каталог)<br>\n";
if (is_file($file)) echo "<input type=radio name=".$file." value=file>".$file." (файл,размер: ".filesize($file).")<br>\n";
}
}
closedir($handle);
}

echo "<input type=submit name=edit value=edit>
</form>
</body>
</html>";

?>

Gray_f0x
14.12.2008, 04:19
Глючат кнопки... =\\

Может скрипт полностью переписать? Идея с циклом может и решит проблему.

preda1or
14.12.2008, 04:23
Последняя версия моя (в последнем посте), у меня ничего не глючит

preda1or
14.12.2008, 04:26
я понял в чем проблема. щас


if (is_file($file)) echo "<input type=radio name=file value=".$file.">".$file." (файл,размер: ".filesize($file).")<br>\n";

<?php

echo "<html>
<head><title>Файлменеджер</title></head>
<body>
<h1>Оглавление каталога</h1><p>
<form action='edit.php' method='post'>\n";

if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($file)) echo $file." (каталог)<br>\n";
if (is_file($file)) echo "<input type=radio name=file value=".$file.">".$file." (файл,размер: ".filesize($file).")<br>\n";
}
}
closedir($handle);
}

echo "<input type=submit name=edit value=edit>
</form>
</body>
</html>";

?>

Gray_f0x
14.12.2008, 04:29
проверил в Fifefox 3, Ie7, в обоих браузерах, если выбрать одну кнопку, а потом еще одну, то можно нажать все, а нужно чтобы выбирался один! Это радио-кнопка!

preda1or
14.12.2008, 04:31
мой пост выше посмотри)
p.s. ты просто перепутал вывод в поля name и value

Gray_f0x
14.12.2008, 04:33
ооо супер) спасибо большое)