ボタンをクリックするだけで、ディレクトリ内のすべてのファイルの名前を変更したいと思います。$handle は既にディレクトリへのハンドルであり、$file_path にはディレクトリのパスが含まれています。また、新しいファイル名フィールドのすべての入力フィールドの名前が new_name[] であると仮定します。ディレクトリ内の各ファイルを繰り返し処理し、以下のように名前を変更する必要があります。
if (isset($_POST['submit'])) {
$i = 0;
while($file = readdir($handle)) {
rename ($file_path.$file, $file_path.$_POST['new_name'][$i]);
$i++;
}
header("Location: /php rename/");
exit();
echo "name changed";
}
else {
echo "name was not changed";
}
Javascript による Ajax ソリューション
test.php
<html>
<head>
<script>
function changename(id,dirpath){
new_name = document.getElementById(id + "_new_name").value;
old_name = document.getElementById(id + "_old_name").value;
old_file_path= dirpath + old_name;
new_file_path = dirpath + new_name;
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("response").innerHTML=xmlhttp.responseText;
document.getElementById(id + "_old_name").value=new_name;
}
}
xmlhttp.open("GET","change_name.php?old_name="+old_file_path+"&new_name="+new_file_path,true);
xmlhttp.send();
}
</script>
</head>
<body>
<?php
$dirpath="testdir/";
$handle = opendir($dirpath);
print '<div id="response"></div>';
print "<table>";
$i=0;
while($file = readdir($handle)) {
if($file!="." && $file!="..") {
$parameters = $i . ",'" . $dirpath . "'";
print "<tr><td><input type='text' id='{$i}_new_name' value='{$file}' /></td><input type='hidden' id='{$i}_old_name' value='{$file}' /></td><td><input type='button' name='change' value='Change Name' onclick=\"changename({$parameters});\" /></td></tr>";
$i++;
}
}
print "</table>";
?>
</body>
</html>
change_name.php
<?php
if(isset($_GET['old_name']) && isset($_GET['new_name'])) {
$old_name = $_GET['old_name'];
$new_name = $_GET['new_name'];
if(file_exists($old_name)) {
rename($old_name,$new_name);
echo "file renamed from ($old_name) to ($new_name)";
}
else {
echo "file does not exist";
}
}
?>
Jquery による Ajax ソリューション
test.php
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
$(".change_class").click(function() {
dirpath = "testdir/";
id = $(this).attr('id');
console.log(id);
new_name = $("#"+id+"_new_name").val();
old_name = $("#"+id+"_old_name").val();
console.log(new_name + " " + old_name);
old_file_path= dirpath + old_name;
new_file_path = dirpath + new_name;
$.ajax(
{
url:"change_name.php?old_name="+old_file_path+"&new_name="+new_file_path,
success:function(data) {
$("#response").text(data);
$("#"+id+"_old_name").val(new_name);
}
}
);
});
});
</script>
</head>
<body>
<?php
$dirpath="testdir/";
$handle = opendir($dirpath);
print '<div id="response"></div>';
print "<table>";
$i=0;
while($file = readdir($handle)) {
if($file!="." && $file!="..") {
print "<tr><td><input type='text' id='{$i}_new_name' value='{$file}' /></td><input type='hidden' id='{$i}_old_name' value='{$file}' /></td><td><input type='button' name='change' class='change_class' value='Change Name' id='{$i}' /></td></tr>";
$i++;
}
}
print "</table>";
?>
</body>
</html>
change_name.php
<?php
if(isset($_GET['old_name']) && isset($_GET['new_name'])) {
$old_name = $_GET['old_name'];
$new_name = $_GET['new_name'];
if(file_exists($old_name)) {
rename($old_name,$new_name);
echo "file renamed from ($old_name) to ($new_name)";
}
else {
echo "file does not exist";
}
}
?>