Биллинговая система Nodeny
02 Мая 2024, 05:59:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2
  Печать  
Автор Тема: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно  (Прочитано 9530 раз)
neta
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 13


Просмотр профиля Email
« : 08 Сентября 2012, 12:46:43 »

Добрый день.
Необходим перловый скрипт или модуль для вывода абонентов которые не платят более месяца за весь период, вывести список абонентов помесячно, правильнее сказать со статусом доступ запрещен.

Спасибо.
Записан
Belos
Постоялец
***

Карма: 0
Offline Offline

Сообщений: 128


Просмотр профиля Email
« Ответ #1 : 08 Сентября 2012, 13:33:48 »

Клиенты - фильтр - кому запрещен доступ
Записан
neta
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 13


Просмотр профиля Email
« Ответ #2 : 08 Сентября 2012, 13:49:29 »

Мне нужно вывести за весь период помесячно.

в Январе 2012 были отключены
....
....
....
....
....

в Феврале 2012 были отключены
....
....
....
....
....
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #3 : 08 Сентября 2012, 15:24:00 »

принципиально перловый скрипт?
Записан
neta
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 13


Просмотр профиля Email
« Ответ #4 : 10 Сентября 2012, 09:55:53 »

Не принципиально, на любом, даже на php будет лучше.
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #5 : 10 Сентября 2012, 10:19:01 »

фактически нужно вывести список абонентов, которым был присвоем state=off
типо в мае - state=off было сделано тем то, в июне - тем то.
а что если потом был state=on ?
тогда нужно смотреть еще были ли после этого платежи и включался ли доступ обратно.
так?
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #6 : 10 Сентября 2012, 10:40:52 »

эээммм...
Код:
SELECT u.id,u.name,u.ip FROM users u
INNER JOIN pays p ON p.mid=u.id
WHERE p.type=50 AND ((p.category=410 AND p.reason LIKE 'Включен ли доступ: да -> нет') OR
p.category=423) AND
p.time>=unix_timestamp('2012-06-01') AND p.time<unix_timestamp('2012-07-01')
GROUP BY u.id
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #7 : 10 Сентября 2012, 16:27:47 »

А вот так можно на скорую руку сделать на PHP
если суть да, то можно сделать по-человечески


Код:
<!DOCTYPE HTML>
<html>
<body>
<center>
<form action="#" method="post">
С какого месяца:<input type="month" name="monthfrom" />
По какой месяц:<input type="month" name="monthto" />
<input type="submit" />
</form>
</center>
<br>
</body>
</html>

<?php
$monthfrom 
$_POST['monthfrom'] . "-01";
$monthto $_POST['monthto'] . "-01";
$dbhostname="yourhost";
$dbuser="yourdblogin";
$dbpassword="yourdbpassword";
$dbname="yourdb";
$con mysql_connect($dbhostname,$dbuser,$dbpassword);
if (!
$con)
        {
        die(
'Could not connect: ' mysql_error());
        }
mysql_select_db($dbname$con);

$result mysql_query("SELECT u.id,u.name,u.ip FROM users u INNER JOIN pays p ON p.mid=u.id WHERE p.type=50 AND ((p.category=410 AND p.reason LIKE 'Включен ли доступ: да -> нет') OR p.category=423) AND p.time>=unix_timestamp('$monthfrom') AND p.time < unix_timestamp('$monthto') GROUP BY u.id");

$data = array();
while(
$row mysql_fetch_array($result))
  {
        
$data[] = $row;
  }
echo 
"<center>";
        for (
$i=0$i<count($data); $i++)
        {

        echo 
$data[$i]['id'] . "\t - " $data[$i]['name'] . "\t - " $data[$i]['ip'] . "<br><br>";
        }
echo 
"</center>";
mysql_close($con)
?>

Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #8 : 10 Сентября 2012, 16:29:29 »

в Opere работает нормально
в IE,Mozilla и Chrome не оч хорошо календарь работает
это особенности HTML5

ха, кроме оперы нигде не работает ))

если че, можно вводить в формате
2012-07 например
« Последнее редактирование: 10 Сентября 2012, 16:33:35 от stimels » Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #9 : 10 Сентября 2012, 17:11:43 »

и было бы не плохо делать mysql_escape_string, для передаваемых значений в запрос. Все равно, что пользуются только админы, мало ли что у них на уме, может они давно ненавидят компанию )))
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #10 : 10 Сентября 2012, 20:44:22 »

Код:
$monthfrom = strip_tags($_POST['monthfrom']);
$monthfrom = htmlspecialchars($monthfrom );

$monthto= strip_tags($_POST['monthto']);
$monthto= htmlspecialchars($monthto);
ну раз пошла такая пьянка, то еще так )

еще можно влепить регулярное выражение на проверку только цифр
« Последнее редактирование: 10 Сентября 2012, 20:45:56 от stimels » Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #11 : 10 Сентября 2012, 21:01:36 »

и так

Код:
$sqlstr = "SELECT u.id,u.name,u.ip FROM users u INNER JOIN pays p ON p.mid=u.id WHERE p.type=50 AND ((p.category=410 AND p.reason LIKE 'Включен ли доступ: да -> нет') OR p.category=423) AND p.time>=unix_timestamp('$monthfrom') AND p.time < unix_timestamp('$monthto') GROUP BY u.id"

$escsqlstr = mysql_escape_string($sqlstr);
Записан
neta
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 13


Просмотр профиля Email
« Ответ #12 : 11 Сентября 2012, 10:46:59 »

Низкий поклон всем откликнувшимся.
Записан
neta
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 13


Просмотр профиля Email
« Ответ #13 : 11 Сентября 2012, 11:32:34 »

фактически нужно вывести список абонентов, которым был присвоем state=off
типо в мае - state=off было сделано тем то, в июне - тем то.
а что если потом был state=on ?
тогда нужно смотреть еще были ли после этого платежи и включался ли доступ обратно.
так?

Да, верно, необходимо вывести абонентов у которых в мае был присвоен статус state=off и это был последний статус, больше он не оплачивал услуги.
Задача чтобы вывести всех абонентов за заданный месяц котрые были отключены и более не оплачивали, продолжают быть не активны до текущего времени.
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #14 : 11 Сентября 2012, 15:38:42 »

Код:
SELECT u.id,u.name,u.ip FROM users u
INNER JOIN pays p ON p.mid=u.id
WHERE p.type=50 AND ((p.category=410 AND p.reason LIKE 'Включен ли доступ: да -> нет') OR
p.category=423) AND
p.time>=unix_timestamp('2012-06-01') AND p.time<unix_timestamp('2012-07-01') AND u.state='off'
GROUP BY u.id
Записан
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!