|
|
|
| Уважаемый cheops, подскажите пожалуйста куда нужно вставить вот эту функцию автоудаления в ниже приведённом коде.
Код отвечающий за вывод объявлений из текстовой базы данных.
[поправлено модератором: листинги такого объёма разумнее прикреплять к сообщению в виде файла]
|
Код автоудаления
$lines = file("dat/$catid.php");
// Â öèêëå ðàçáèâàåì ñòðîêó è èçâëåêàåì âðåìÿ
for($i = 0; $i < count($lines); $i++)
{
// Ðàçáèâàåì ñòðîêó íà îòäåëüíûå êîìïîíåíòû
$arr = explode("::", $lines[$i]);
// Âðåìÿ â ñåêóíäàõ ñ 1 ÿíâàðÿ 1979 ãîäà
// íàõîäèòñÿ â $arr[1] - âû÷èñëèì ðàçíèöó ñ
// òåêóùèì ìîìåíòîì: åñëè îíà áîëüøå 20 äíåé
// çàïèñü óäàëÿåì
if((time() - $arr[1])/3600/24>1) unset($lines[$i]);
}
// Ôîðìèðóåì íîâîå ñîäåðæèìîå ôàéëà
$content = implode("",$lines);
// Ïåðåïèñûâàåì ñîäåðæèìîå ôàéëà
$fd = fopen("dat/$catid.php","w");
fwrite($fd,$content);
fclose($fd); */
|
| |
|
|
|
|
|
|
|
для: ded
(18.06.2005 в 21:20)
| | А какая задача? Дело в том, что по такому коду сложно определить его назначение? | |
|
|
|
|
|
|
|
для: cheops
(18.06.2005 в 23:24)
| | Почему? Если сохранить это все в html и поставить между тегами <pre> и </pre> то очень даже ничего получается. :) | |
|
|
|
|
|
|
|
для: Евгений Петров
(18.06.2005 в 23:56)
| | Это, конечно, хорошо, но хотелось бы узнать конечную цель :))). | |
|
|
|
|
|
|
|
для: cheops
(19.06.2005 в 09:19)
| | ... и ещё потом в Word вставить и восстановить текст ( :) ), вот что у меня получилось:
<?
$lines = file("dat/$catid.php");
// В цикле разбиваем строку и извлекаем время
for($i = 0; $i < count($lines); $i++)
{
// Разбиваем строку на отдельные компоненты
$arr = explode("::", $lines[$i]);
// Время в секундах с 1 января 1979 года
// находится в $arr[1] - вычислим разницу с
// текущим моментом: если она больше 20 дней
// запись удаляем
if((time() - $arr[1])/3600/24>1) unset($lines[$i]);
}
// Формируем новое содержимое файла
$content = implode("",$lines);
// Переписываем содержимое файла
$fd = fopen("dat/$catid.php","w");
fwrite($fd,$content);
fclose($fd); */
?>
|
мне кажется этот код удаляет из файла все строки, где что то происходит со временем (срок годности истек) | |
|
|
|
|
 7.6 Кб |
|
|
для: Евгений Петров
(19.06.2005 в 13:55)
| | Этот код предложили мне Вы cheops в своё время, но у меня с ним ничего не получилось, вернее просходит следующее. Я заполняю форму, инфа заноситься в базу, объявление высвечивается, после чего я пробую обновить стр с объявлением и... объява исчезает т.е. стриается из базы.
В принципе можете посмотреть недоделаную доску объявлений, чтобы иметь представление зачем это нужно. http://www.xivin.h14.ru/index.php?do=content
Ещё вопрс. В переменной arr[1], [1]-это позиция даты в базе?
Например если запись в базу у меня будет такая $uniqid::$date::и т.д. то arr будет с [2]?
Прикрепляю код куда нужно вставить автоудаление | |
|
|
|
|
|
|
|
для: ded
(19.06.2005 в 23:59)
| | Погодите ка... так ведь этот код для файлов, а не для базы - может лучше сформулировать подходящий SQL-запрос? | |
|
|
|
|
|
|
|
для: cheops
(20.06.2005 в 00:30)
| | У меня инфа хранится в php файлах, My Sql у меня нет | |
|
|
|
|
|
|
|
для: ded
(19.06.2005 в 23:59)
| | А... да куда угодно его прикрепите - поставьте в самый конец. Правда это чревато, тем, что файл будет дёргать каждый посетитель - для того чтобы снизить вероятность можно использовать выполнение этого кода по случайному числу, скажем каждое 100 обновление исходной страницы. Т.е. после последней фигрурной скобки в прикреплённом вами файле следует поместить
<?php
if(rand(1,100) == 50)
{
// Код автоудаления
}
?>
|
>Ещё вопрс. В переменной arr[1], [1]-это позиция даты в базе?
>Например если запись в базу у меня будет такая $uniqid::$date::и т.д.
>то arr будет с [2]?
1 - да это позиция элемента в массиве, в PHP они начинаются с 0, т.е. 0 - первый элемент, 1 - второй, 2 - третий и так далее до count($arr) - 1. Если запись у вас будет такая
то $arr[0] - $uniqid
$arr[1] - $date
$arr[2] - и т.д. | |
|
|
|
|
|
|
|
для: cheops
(20.06.2005 в 00:45)
| | Большое спасибо за подробное объяснение. Пошёл пробовать. | |
|
|
|
|
|
|
|
для: ded
(20.06.2005 в 17:24)
| |
<?php
if(rand(1,100) == 50)
{
// Код автоудаления
}
?>
|
if(rand(1-это позиция, 100-каждое сотое обновление) == 50-а это что?)
Так строка, что удалиться не от времени, а от сотого обновления?
Я сейчас все сделал как Вы сказали, всё вроде бы работает нормально, объявление не стирается после обновления как было прежде, но в чём была причина я так и не понял. | |
|
|
|
|
|
|
|
для: ded
(20.06.2005 в 17:56)
| | rand(a, b) - выбирает случайное число от "a" до "b" и если это число равно 50 то идет автоудаление... тоесть в данном случае шанс на удаление примерно равен 1%. | |
|
|
|
|
|
|
|
для: FoMa
(20.06.2005 в 18:02)
| | Ну что ж такое, господа программисты подскажите, что препятствует удалению. Прикрепляю файл куда я вставил код автоудаления. Может кто подскажет, что не так?
Кратко опишу схему работы скрипта. В корневом каталоге у меня php файл с названиями категорий объявлений, в нём запись такого рода 13243244535::Недвижимость
В папке dat храняться php файлы с соответстующим id т.е
13243244535.php это файл где хранятся сами объявления.
там запись такого рода $uniqid::$date::$name::$mail::$sitename::$url::$city::$msg::$ip\r\n
Теоретически код удаления должен бы работать, а пракически он не работает. | |
|
|
|
|
|
|
|
для: ded
(28.06.2005 в 18:51)
| | А он в оригинале раскомментирован - или это рабочий файл - тогда нужно убрать комментарий. | |
|
|
|
|
|
|
|
для: cheops
(28.06.2005 в 22:53)
| | Да раскоментирован, я просто пробовал его ставить в разные места, а вообще на сервере он стоит в самом конце. А это не может быть из-за того, что дата записана в id файле у меня в таком виде 12 июня 2005 13:45 может если было бы так ( 12 jun 05 13:45) сработало бы? | |
|
|
|
|
|
|
|
для: ded
(29.06.2005 в 00:06)
| | А структура файла "dat/$catid.php" какая? Смущает строка
<?php
$content = implode("",$lines);
?>
|
Может имелось в виду
<?php
$content = implode("\r\n",$lines);
?>
|
| |
|
|
|