PHP文件名编号

时间:2015-10-08 10:16:38

标签: php numbers phpword

我认为这个问题真的很愚蠢,但我无法找到答案,另外我还是PHP的新手。

问题在于我使用的是PHPWord,我试图仅使用PHP和PHPWord跳过MySQL来执行传递[ID] .docx 文件,该文件包含ID,正在添加+1,每个文件都是创建的;

  • delivery11.docx
  • delivery12.docx
  • delivery13.docx

我当前的代码加载/保存如下所示:

require_once 'PHPWord.php';
$PHPWord = new PHPWord();
$document = $PHPWord->loadTemplate('./dfiles/delivery_template.docx');

     $nm = $_POST['NAME_' . 1];
     $qt = $_POST['QUANTITY_' . 1];
     $iid = $_POST['ID_' . 1];
     $t = 1000;
     $wg = $qt * $t;
     $document->setValue('pn1', $nm);
     $document->setValue('kg1', $wg);

$numid = 1;
$document->save('Delivery G'.$numid++.'-'.date(m).'-'.date(Y).'.docx', './dfiles/');

而且我知道 $ numid 会将值设置为1,当代码再次触发此函数时,请帮助,如何在没有MySQL的情况下执行此操作?

另外信息:此代码将由 HTML提交功能触发。

2 个答案:

答案 0 :(得分:1)

你可以做差异:

  1. 生成一些随机数并附加到文件,如果文件存在,则重新生成随机数并附加到文件,继续执行此过程直到找不到重复文件。

  2. 您可以添加日期和时间,以便它也是唯一且可读的。(例如:交付G 10-8-2015 [15.12.99] .doc)

  3. 生成哈希码,然后追加。

答案 1 :(得分:1)

PHP变量仅在PHP运行时才持续 - 即生成对请求的响应所花费的时间。如果要引用先前执行中创建或修改的值,则需要将其存储在某处。你可以使用一个文件:

function getNextNumber() 
{
   $number=file_get_contents("/tmp/counter");
   file_put_contents("/tmp/counter", ++$number);
   return $number;
}

大多数情况下,在非常低容量的服务器上应该可以。 但它不会扩展!迟早会遇到争用。

这是为什么我们使用数据库。

它不一定是MySQL(你没有提供任何理由为什么你不能使用可能有用的MySQL)还有很多其他适合的数据库(包括不需要的SQLite)要运行的数据库服务器。)