Я хотел сделать дерево файлов на PHP, и я могу сделать это простым простым деревом сразу:
function tree($path)
{
//scandir creates the array with all the files in the path folder
$files = scandir($path);
//going through each file or folder
foreach($files as $file) {
echo "<ul>";
//here i am checking if $file is directory, and if it is i want to open to start same function again, and if it is not i just want download link (that works)
if(is_dir($path . $file)) {
if($file != '.' && $file != '..') {
$new_path = $path . $file . "/";
echo "<li>" . $file . "_mapa" . "</li>";
tree($new_path);
}
} else {
echo '<li><a href="' . $new_path = $path . $file . '">' . $file . '</a></li>';
}
echo '</ul>';
}
}
Проблема в том, что я использую форму и кнопку отправки вместо дерева ($ new_path);
это будет работать для первого сканирования, и если я нажму на кнопку, это будет работать, но это не значит, что дальше идти не будет …
Пример:
$dir = 'dokumenti/Arduino_programi/';
scan($dir);
function scan($path)
{
//echo $path;
$files = scandir($path);
foreach($files as $items => $file) {
echo "<ul>";
if(is_dir($path . $file)) {
if($file != '.' && $file != '..') {
$new_path = $path . $file . '/';
echo '<form name="scan" method="post">';
echo '<li><button type="submit" name="scan" value="' . $new_path . '">' . $file . '</button></li>';
echo '</form>';
if($_POST['scan'] == $new_path) {
echo $new_path;
$i = $_POST['scan'];
scan($i);
unset($_POST);
}
// echo '<a href="scan('.$new_path.')">'.$file.'</a>';
}
} else {
if($file != '.' && $file != '..') {
$path_to_file = $path . $file . '/';
$path_to_read_file = $path . $file;
//open or dow...
// forma za download
echo '<form name="download i read" method="post">';
echo '<li><button type="submit" name="download" value="' . $path_to_file . '" >' . $file . ' download' . '</button></li>';
$path_parts = pathinfo($file);
if($path_parts['extension'] == 'txt') {
echo '<li><a target="_blank" href="' . $path . $file . '">' . $file . ' open</a>' . "<br/></li>";
}
echo '</form>';
}
}
echo "</ul>";
}
}
Пожалуйста, какие-либо предложения? Я знаю, что это, вероятно, какая-то несовместимость, но я новичок 🙂
И я пытался найти что-то похожее, но не смог, простите, если это дубликат.
Задача ещё не решена.
Других решений пока нет …