Привет коллеги, подскажите чем можете. Не могу сообразить как мне удалить из директории файлы, через кнопку на веб странице. Вот код страницы:
$json = "json";
$files_dir = "./tests";
$files_list = scandir($files_dir);
$jsn_files = [];
for ($i = 0; $i < count($files_list); $i++){
$explode = explode(".", $files_list[$i]);
if ($explode[1] === $json){
array_push($jsn_files, $files_list[$i]);
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<nav>
<ul>
<li><a href="admin.php">Загрузить тест</a></li>
</ul>
</nav>
<div class="list">
<ul>
<?php
for ($i = 0; $i < count($jsn_files); $i++) {
echo "<li><a href='test.php?id=".$i."'>Тест №".$i."</a> <a href=''>Удалить тест №".$i."</a></li>";
}
?>
</ul>
</div>
</body>
</html>
Вопрос в том, как при нажатии на ссылку Удалить тест №.., удалялся тот тест, напротив которого эта ссылка? p.s не обязатаельно через ссылку, главное чтобы было куда тыкнуть и было понятно соотношение файл-удалить
Идентификация по id в данном случае не уместна, во временном промежутке между формированием html кода с числовыми идентификаторами файлов и запросом от клиента на удаление - структура файлов может поменяться, с меньшей вероятностью поменяться название файла и в вашем случае наверняка изменение названия файла это не штатная ситуация.
$validFileExtension = "json";
$filesDir = "./tests";
if (!empty($_GET['delete'])){
$wayToFile = $filesDir.'/'.$_GET['delete'];
if (file_exists($wayToFile)){
unlink($wayToFile);
}
}
$filesList = is_dir($filesDir) ? scandir($filesDir) : array();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<nav>
<ul>
<li><a href="admin.php">Загрузить тест</a></li>
</ul>
</nav>
<div class="list">
<ul>
<?php foreach ($filesList as $fileName):?>
<?php if( pathinfo($filesDir.'/'.$fileName, PATHINFO_EXTENSION) == $validFileExtension):?>
<li><a href='test.php?id=<?=$fileName?>'>Тест <?=$fileName?></a> <a href='<?=$_SERVER['SCRIPT_NAME']?>?delete=<?=$fileName?>'>Удалить тест № <?=$fileName?></a></li>
<?php endif;?>
<?php endforeach;?>
</ul>
</div>
</body>
</html>
Примерно так:
<?php
$format = 'json';
$jsons = '';
$dir = './tests';
($del = filter_input(INPUT_GET, 'delete'))
&& file_exists($fileDel = $dir . '/' . $del)
&& unlibk($fileDel);
$list = is_dir($dir) ? scandir($dir) : array();
if($list) {
foreach ($list as $file) {
if($format === substr($file,-4)) {
$jsons.='<li>
<a href="test.php?id='.$file.'">
Тест '.$file.'
</a>
<a href="test.php?delete='.$file.'">
Удалить тест № <?=$file?>
</a>
</li>';
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<nav>
<ul>
<li><a href="admin.php">Загрузить тест</a></li>
</ul>
</nav>
<div class="list">
<ul>
<?=$jsons?>
</ul>
</div>
</body>
</html>
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Имеется конструкция switch-case со множеством вариантовКаким образом создать компонентно-ориентированный и легко масштабируемый архитектурный...
В чём суть каждого из спецификаторов? И почему в данном коде я не могу получить доступ к переменной i ,так как по определению static хранит значение...