В общем поставили мне на днях партийное задание, выбрать количество всех абонентов по каждому тарифу, ну дело это житейское, благо знаний хватает в sql, наклепал запросик, все чудно и прикольно, НО, тарифов — то у нас не один и не два, а ручками постоянно перебивать айди тарифа так впадлу, как говорят «лень двигатель прогресса», пришлось сесть и наклепать небольшую php-функцию которая бы по айди тарифа возвращала число абонентов, имя тарифа, цену тарифа.
Кстати, все это дело можно посмотреть в биллинге, но мы же не ищем легких путей!)))
Чтож приступим, сначала создадим файлик db.class.php со следующим содержимым:
class MySQL{
function Query($query){
global $config;
$link = mysql_connect($config['db_host'], $config['db_user'], $config['db_passwd']) or die("Could not connect: " . mysql_error());
mysql_select_db($config['db_name']);
$result[0] = mysql_query($query) or die("Invalid query: " . mysql_error());
$result[1] = $link;
return $result; }
function Close($dbcnx){ mysql_close($dbcnx); }
}
т.е. мы создали класс для работы с мускулом, писался на скорую руку, поэтому на универсальность и правильность не настаиваю, прошу испрвить если что, так как я начинающий пхп кодер )))))
Теперь создадим файл настроек соединения с мускулом, обзовем его config.php
со следующим содержимым:
$config = array( 'db_host' =--> 'localhost',
'db_name' => 'test',
'db_user' => 'test',
'db_passwd' =>; 'test',
);
собственно теперь создадим файлик index.php, со следующим содержимым:
include_once ('./config.php');
include_once ('./db.class.php');
function gettarifcount($tarif) {
$MySQL = new MySQL();
$sql = "SELECT count(*) count, plans2.name, plans2.price FROM users n" ." left join plans2 on users.paket=plans2.id where users.grp in (4,5,6) n" ." and users.paket=$tarif limit 1";
$result = $MySQL->Query($sql);
while ($row = mysql_fetch_assoc($result[0])) {
echo "Tarif - ". $row[name] .", price - ". $row[price].", abonents - ". $row[count];
}
$MySQL->Close($result[1]);
}
gettarifcount('7');
сначала подключаем наш класс и файл с настройками подключения к БД, далее описываем саму функцию с выборкой, и соответсвенно вызываем ее с параметром равным айди тарифа, у меня например 7:
gettarifcount('7');
Вывод функции примерно такой:
Tarif - [1050]Тестовый тариф, price - 0, abonents - 1
можно использовать ее несколько раз, для вывода числа абонов по разным пакетам:
gettarifcount('7');
gettarifcount('11');
gettarifcount('22');
2 комментария. Оставить новый
Что-то нет самой функции…
Ага, пасип, видимо косяк в плагине на сайте, не отображал код.