2016-08-11 4 views
3

이 버튼을 사용하여 "item1"디렉토리를 만들고이 버튼을 다시 클릭하면 "item2"등이 무제한으로 생성됩니다.다음 번호로 계속되는 디렉토리를 만드시겠습니까?

지금까지 내가 (기본) HTML이 있습니다

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
    </head> 
    <body> 
     <form id="create_item" action="createfile.php" method="POST" enctype="multipart/form-data"> 
     <input id="submit_button" type="submit" value="Create Item!" /> 
     </form>  
    </body> 
</html> 

그리고 내 PHP 코드 : 나는 루프에 대한 약 80 가지 조합이 문자 그대로 시도

<?php 
define("PATH", "/usr/www/tfgwebsite/public/misc/phptest"); 

$number = 1; 
$_POST["dirname"] = "item" . $number; 
$test = "set"; 

if (isset($test)) { 
    $dir = $_POST['dirname']; 
} 

$targetfilename = PATH . '/' . $dir; 

if (!is_file($dir) && !is_dir($dir)) { 
    mkdir($dir); 
    chmod($targetfilename, 0777); 
    echo "Created " . $dir . " successfully!"; 
} 
else 
{ 
    echo "File already exists!"; 
}?> 

하면서에게 문은 시도 기존 디렉토리를 찾으면 $ number를 1 씩 증가 시키려면 모두 item1을 만든 다음 나에게 무한 루프를 반복하십시오.

도움을 주시면 제가 실제로 시도한 것을 보여 주려고 시도한 모든 것을 게시 하겠지만 너무 끔찍하여 이러한 끔찍한 코드를 보여줄 수는 없습니다.

편집 :?

<?php 
define("PATH", "/usr/www/tfgwebsite/public/misc/phptest"); 

$items = fopen("items.txt", "r") or die("Unable to open file!"); 
$number = fgets($items); 
fclose($items); 

$_POST["dirname"] = "item" . $number; 
$test = "set"; 

if (isset($test)) { 
    $dir = $_POST['dirname']; 
} 

$targetfilename = PATH . '/' . $dir; 

if (!is_file($dir) && !is_dir($dir)) { 
    mkdir($dir); 
    chmod($targetfilename, 0777); 
    echo "Created " . $dir . " successfully!"; 
    $create = fopen("items.txt", "w+") or die("Unable to open file!"); 
    fwrite($create, $number + 1); 
    fclose($create); 
} 
else 
{ 
    echo "File already exists!"; 
} 

>

내가 이런 짓을, 그리고 작업을 수행합니다. 하지만 난 내 웹 서버에서이 어색한 .txt를 그냥 세고있다. 롤.

더 좋은 방법이 있다면 공유하십시오.

+0

처럼 작동합니다. –

+0

번호를 파일 또는 다른 곳에 저장하고 디렉토리를 만들 때마다 숫자를 늘리십시오. –

+0

@kamalpal 어떻게 "저장"하나요? 변수를 어딘가에 저장할 수 없습니까? 어쩐지? 내가 잃어버린 뭔가가 있어야 해. 변수를 늘릴 수 있어야합니까? – DanDaMan

답변

0

이 코드를 살펴보십시오.이 기능은 저에게 효과적입니다.

- 업데이트 된 코드 -

<?php 
if (!empty($_POST)) { //print_r($_POST);die; 
    define("PATH", $_SERVER['DOCUMENT_ROOT'] . "/create_folder/"); 

    $files2 = array_diff(scandir($_SERVER['DOCUMENT_ROOT'] . "/create_folder/"), array('..', '.', '.svn')); 
    $count = count($files2); 
    $count_plus = $count + 1; 
    if (!is_file(PATH . "item$count_plus") && !is_dir(PATH . "item$count_plus")) { 
     mkdir(PATH . "item$count_plus"); 
     chmod(PATH . "item$count_plus", 0777); 
     echo "Created item" . $count_plus . " successfully!"; 
    } else { 

     echo "File already exists!"; 
    } 
} 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
    </head> 
    <body> 
     <form id="create_item" action="" method="POST" > 
      <input id="submit_button" type="submit" name ="create_folder" value="Create Item!" /> 
     </form>  
    </body> 
</html> 

이 코드는 (은) 당신을 도움이 될 것입니다 file_exists 수 있음 this-

It will define PATH constant for location where folders are getting created. 

Then it will scan that folder 

Then it will check if next folder is present in that directory OR not. 

if not then it will create that folder otherwise will give an error. 
+0

그냥주는 것만으로 다운볼트가 가능합니다. 거대한 코드 블록은 도움이되지 않습니다. OP가 잘못한 것을 설명하거나 적어도 당신이하는 일을 설명하십시오. – xbonez

+0

@xbonez 당신은 방금 실행중인 승/강요를 downvoted했습니다 .WOW !!! ... 코드 조건을 확인한 후 조건을 확인한 다음 최종 조건을 확인하십시오. 첫 번째 조건은 wheather 폴더가 하위 폴더를 포함하는지 여부입니다. 우리는 또한 약간의 변화로 조건을 두 번째로 피할 수 있지만 downvoting은 나쁜 생각입니다. – abd

+0

저는 xbonez가 옳을 수도 있습니다. 나는 당신의 코드에서 어떤 일이 벌어지고 있는지 전혀 모른다. 나는 분명히 아마추어 다. 그리고 나에게 혼란스런 설명이 없다. – DanDaMan

관련 문제