2015-10-08 30 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)。這將是簡單和容易創建。我比任何其他方法快得多,我想 –