2015-10-08 31 views
1

我认为这个问题将是非常愚蠢的,但我无法找到答案,另外我与PHP新手。PHP文件名编号

的问题是,我使用PHPWord,我试图只使用PHP和PHPWord做交运[ID]跳过MySQL的.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,当代码将再次触发此函数时,所以pl缓解帮助,我怎么能做到这一点,没有MySQL?

另外的信息:此代码将通过HTML提交功能被触发。

+0

你可以用'file_exists'来检查文件是否齐全有(即名取),然后使用一个循环,如果逻辑继续添加+1,直到你得到一个名字,是免费的。 – Epodax

+0

作品。谢谢你的回答。 – Sillentre

回答

1

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

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

哪一个应该可以在大多数情况下在很小的服务器上运行。 但它不缩放!迟早你会遇到争夺。

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

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

+0

不想使用MySQL,因为我没有任何规模熟悉它,所以我正在寻找临时选项。我认为它可以在一个月内没有任何问题地工作。谢谢你的回答。 – Sillentre

1

您可以在差异方面做:

  1. 产生一些随机数和附加到文件,如果文件存在,那么重新生成随机数,并追加到文件,请做这个过程,直到没有发现重复文件。

  2. 您可以添加日期和时间,所以,这将是独一无二的,可读也。(对于如:交货摹2015年10月8日[99年12月15日] .DOC)

  3. 生成散列码,并追加。

+0

是的,尝试了第一个选项,它的工作原理。 第二个,对我来说不是一个方法,因为无论如何我需要知道每个月有多少次交付。谢谢你的回答。 – Sillentre

+0

在第二方法交付G 10-8-2015 [HH.MM.SS.miliSec] .doc)。这将是简单和容易创建。我比任何其他方法快得多,我想 –