自动增加文件名PHP / MySQL

时间:2014-09-24 16:07:25

标签: php mysql inventory

我对php世界还很陌生,并且一直在为我的一家公司创建一个库存跟踪系统。大多数基础工作都有效,但我的“上传pdf”功能出现问题。即使它工作并将pdf文件上传到其目标位置,我也无法将文件名($ docid)作为一个整数,每次提交时自动递增,以便文件永远不会具有相同的名称。以下是我工作的代码:

$pdfPath = "/Documents/TEST/";

$maxSize = 102400000000;

$docid = TEST;

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['upload_pdf'])) { 
        if (is_uploaded_file($_FILES['filepdf']['tmp_name'])) {
            if ($_FILES['filepdf']['type'] != "application/pdf") {
                echo '<p>The file is not in PDF</p>';
            } else if ($_FILES['filepdf']['size'] > $maxSize) {
                echo '<p class="error">File is too big! Max size is =' . $maxSize . 'KB</p>';
            } else {
                $menuName = "Order_Receipt_".$docid.".pdf";
                $result = move_uploaded_file($_FILES['filepdf']['tmp_name'], $pdfPath . $menuName);
                if ($result == 1) {                 
                    echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=http://localhost/website/enter_new_order_success.html">';

                } else {
                    echo '<p class="error">Error</p>';
                }
            }
        }

我知道我需要某种循环来自动增加$ docid变量,但我似乎无法弄明白。我已经阅读了这个主题,但if语句的自动增量让我失望了。任何帮助将不胜感激。

干杯

1 个答案:

答案 0 :(得分:1)

好吧,除非您存储条目以便在数据库或类似数据库中进行跟踪,否则您可以检查上传文件夹中的条目并将其增加一个。

glob函数对此有用: http://php.net/manual/en/function.glob.php

$myFiles = sort(glob('/Documents/TEST/*.pdf')); // returns an array of pdf files in the target folder. Using sort to sort the array e.g. file_1_.pdf,file_2_.pdf,file_3_.pdf, etc

//last element
$lastFile = end($myFiles);  //returns the last file in the array

//get the number and increment it by one
$number = explode('_',$lastFile);
$newNumber = $number[1] + 1; //add this to the name of your uploaded php file.

$pdfUploadedFile= "Order_Receipt_".$newNumber."_.pdf";

正如评论中所指出的......我发现用时间戳生成的字符串命名它更好。而且不要忘记字符串周围的引号。

$docid = TEST;

should be:

$docid = 'TEST';

修改

更好的是我会在格式化的日期命名它。

$pdfUploadedFile= "Order_Receipt_".date("Y-m-d-H-i-s").".pdf"; // will output something like Order_receipt_2014-09-24-11-14-44.pdf