Файл и строки

Sachek

Умелый
Регистрация
23 Мар 2009
Сообщения
398
Реакции
120
Подскажите пожалуйста, как реализовать следующее...
Имеется файл с множеством строк...
Необходимо, что бы при определенном запросе - копировалось определенное количество строк (и скажем отправлялось на мыло), а после отправки (скажем на мыло) - эти строки удалялись...
Поясню зачем мне это...
Необходимо создать простенькую страничку, по продаже пин-кодов, каждая строка в файле - это отдельный пинкод, вот мне и надо, что бы какая либо функция сначала вытащила строчку, а после этого удалила...
Вроде ни чего сложного, а как реализовать - не могу сообразить...
Заранее спасибо...
 
заносишь в массив потом вытаскиваешь из массива сколько тебе надо строк при этом делаешь удаление этого элемента из массива и потом опять все скидываешь в файл
попробуй так
PHP:
<?php
$array = file('pincodes.txt');
for($i=0;$i<$c;$i++){        // где $c число строк(пинкодов) которые надо вытащить
$pincode = $array[$i];
echo $pincode."<br>";flush();flush();
unset ($array[$i]);}
$handler = fopen("pincodes.txt", "w");
foreach($array as $value){
fwrite($handler,trim($value)."\n");
}
fclose($handler);
 
Я как понял, то необходимо сделать некоторый запрос (к примеру пост) с параметром $c, который и будет доставаться из файла?
Только не понял, где часть кода, который удаляет строку из файла?
Сорри за тупость, в пхп не оч силен :)
 
строку из массива удаляет
PHP:
unset ($array[$i]);
а потом содержимое массива опять сохраняется в файл
 
Ой, файлы, массивы, unset, присмотритесь пож-ста в сторону любой БД, так вы сэкономите своё время и нервы.
ПС:
представьте что ваш скрипт обрабатывает за 0.1 секунды.
а теперь представьте что 2 пользователя одновременно (менее 0.1 сек) нажали - "купить" пин-код.
1. первый скрипт прочитает весь файл в массив.
в это время
2. скрипт второго пользователя прочитает весь файл в массив.
3. первый удалит одну строку из файла и запишет его обратно/
4. потом второй скрипт удалит одну строку в заранее считаном файле и запишет файл обратно.

На выходе имеем +1 уже проданый пинкод в списке новых.
 
Орет вот на эту строчку
$pinCodes = preg_grep('#^\S#', file(PIN_FILE));

Ошибка
Warning: file(pincodes.txt) [function.file]: failed to open stream: No such file or directory in /home/xxxxx/domains/xxxxxx/public_html/pin.php on line 102

Warning: preg_grep() expects parameter 2 to be array, boolean given in /home/xxxxx/domains/xxxxxxx/public_html/pin.php on line 102
invalid_pin_num
 
Ошибка
Warning: file(pincodes.txt) [function.file]: failed to open stream: No such file or directory in /home/xxxxx/domains/xxxxxx/public_html/pin.php on line 102

Warning: preg_grep() expects parameter 2 to be array, boolean given in /home/xxxxx/domains/xxxxxxx/public_html/pin.php on line 102
invalid_pin_num
файл pincodes.txt не найден проверь все ли там находится где должно быть
 
Вроде сработало. Вопросик еще...
Что означает invalid_pin_num
И еще... Где переменная, отвечающая за количество пинов?
 
Вроде сработало. Вопросик еще...
Что означает invalid_pin_num
И еще... Где переменная, отвечающая за количество пинов?
здесь 5 пинкодов
PHP:
/**
 * Количество "вынимаемых" пинкодов
 */
define('NUM_PINS', 5);
если количество пинкодов в файле меньше чем заказано в переменной выдаст эту ошибку
PHP:
/* Проверяем кол-во пинкодов */
if (count($pinCodes) < NUM_PINS) {
    sendOutput('invalid_pin_num');
}
 
Назад
Сверху