Нумерация имен файлов PHP

1

Я думаю, этот вопрос будет действительно глупым, но я не смог найти ответ, и, кроме того, я новичок в PHP.

Проблема в том, что я использую PHPWord, и я пытался пропустить MySQL, используя только PHP и PHPWord, чтобы сделать файл доставки [ID].docx, содержащий ID, который добавляет +1, каждый файл создается ex;

  • 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.

  • 0
    Вы можете использовать file_exists чтобы проверить, готов ли файл там (то есть имя взято), затем использовать цикл и, если логика, продолжать добавлять +1, пока вы не получите свободное имя.
  • 0
    Работает. Спасибо за ответ.
Теги:
numbers
phpword

2 ответа

1
Лучший ответ

PHP-переменные сохраняются только до тех пор, пока работает PHP, т.е. на время, необходимое для генерации ответа на запрос. Если вы хотите ссылаться на значение, созданное или измененное в предыдущем исполнении, вам нужно его где-то сохранить. Вы можете просто использовать файл:

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

В большинстве случаев на сервере с очень низким уровнем громкости должно быть хорошо. Но он не масштабируется! Рано или поздно вы столкнетесь с раздором.

Вот почему мы используем базы данных.

Он не должен быть MySQL (вы не указали причин, по которым вы не могли использовать MySQL, который мог бы быть полезен) есть много других баз данных, которые были бы подходящими (в том числе SQLite, для которого не требуется сервер базы данных для работы).

  • 0
    Я не хотел использовать MySQL, потому что я не знаком с ним, поэтому я искал временную опцию. Я думаю, что он может работать около месяца без проблем. Спасибо за ответ.
1

Вы можете сделать это разными способами:

  1. Сгенерируйте случайное число и добавьте в файл, если файл существует, затем восстановите случайное число и добавьте в файл. Храните этот процесс до тех пор, пока не будут найдены дубликаты файлов.

  2. Вы можете добавить дату и время, чтобы оно было уникальным и читаемым (например, для доставки G 10-8-2015 [15.12.99].doc)

  3. Создайте хэш-код и добавьте.

  • 0
    Да, попробовал первый вариант, и он работает. Второй вариант - не для меня, потому что в любом случае мне нужно знать, сколько доставок в месяц. Спасибо за ответ.
  • 0
    Во 2-м способе доставки G 10-8-2015 [HH.MM.SS.miliSec] .doc). Это будет просто и легко создать. И я гораздо быстрее, чем любой другой метод, я думаю,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню