neta
|
|
« : 08 Сентября 2012, 12:46:43 » |
|
Добрый день. Необходим перловый скрипт или модуль для вывода абонентов которые не платят более месяца за весь период, вывести список абонентов помесячно, правильнее сказать со статусом доступ запрещен.
Спасибо.
|
|
|
Записан
|
|
|
|
Belos
|
|
« Ответ #1 : 08 Сентября 2012, 13:33:48 » |
|
Клиенты - фильтр - кому запрещен доступ
|
|
|
Записан
|
|
|
|
neta
|
|
« Ответ #2 : 08 Сентября 2012, 13:49:29 » |
|
Мне нужно вывести за весь период помесячно.
в Январе 2012 были отключены .... .... .... .... ....
в Феврале 2012 были отключены .... .... .... .... ....
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #3 : 08 Сентября 2012, 15:24:00 » |
|
принципиально перловый скрипт?
|
|
|
Записан
|
|
|
|
neta
|
|
« Ответ #4 : 10 Сентября 2012, 09:55:53 » |
|
Не принципиально, на любом, даже на php будет лучше.
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #5 : 10 Сентября 2012, 10:19:01 » |
|
фактически нужно вывести список абонентов, которым был присвоем state=off типо в мае - state=off было сделано тем то, в июне - тем то. а что если потом был state=on ? тогда нужно смотреть еще были ли после этого платежи и включался ли доступ обратно. так?
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
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
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #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
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #8 : 10 Сентября 2012, 16:29:29 » |
|
в Opere работает нормально в IE,Mozilla и Chrome не оч хорошо календарь работает это особенности HTML5
ха, кроме оперы нигде не работает ))
если че, можно вводить в формате 2012-07 например
|
|
« Последнее редактирование: 10 Сентября 2012, 16:33:35 от stimels »
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
Offline
Сообщений: 1059
|
|
« Ответ #9 : 10 Сентября 2012, 17:11:43 » |
|
и было бы не плохо делать mysql_escape_string, для передаваемых значений в запрос. Все равно, что пользуются только админы, мало ли что у них на уме, может они давно ненавидят компанию )))
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #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
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #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
|
|
« Ответ #12 : 11 Сентября 2012, 10:46:59 » |
|
Низкий поклон всем откликнувшимся.
|
|
|
Записан
|
|
|
|
neta
|
|
« Ответ #13 : 11 Сентября 2012, 11:32:34 » |
|
фактически нужно вывести список абонентов, которым был присвоем state=off типо в мае - state=off было сделано тем то, в июне - тем то. а что если потом был state=on ? тогда нужно смотреть еще были ли после этого платежи и включался ли доступ обратно. так?
Да, верно, необходимо вывести абонентов у которых в мае был присвоен статус state=off и это был последний статус, больше он не оплачивал услуги. Задача чтобы вывести всех абонентов за заданный месяц котрые были отключены и более не оплачивали, продолжают быть не активны до текущего времени.
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
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
|
|
|
Записан
|
|
|
|
|