Developing a web hosting clientele can be difficult at first. Sign-ups are not very frequent, but as time passes by and your advertizing kicks in, the numbers start showing promise. Then suddenly one day: “did mypage.org pay for their renewal?” and “why is moocher.ca getting free hosting? Didn’t their credit card expire 3 years ago?” I wrote this script to try and avoid that. Looking through emailed invoices, and even through paypal accounts can be tedious to the point where neglect becomes an attractive option. Web Hosting Client Manager allows you to see the clients that signed up on a month by month basis. Say goodbye to renewing domains for no reason, and forgetting about faithful clients.
<?
$db_name = "webhost_clients";
$db_host = "localhost";
$db_user = $HTTP_COOKIE_VARS["db_user"];
$db_pass = $HTTP_COOKIE_VARS["db_pass"];
function param($Name)
{
global $HTTP_GET_VARS;
global $HTTP_POST_VARS;
global $HTTP_COOKIE_VARS;
if(isset($HTTP_GET_VARS[$Name]))
return($HTTP_GET_VARS[$Name]);
if(isset($HTTP_POST_VARS[$Name]))
return($HTTP_POST_VARS[$Name]);
if(isset($HTTP_COOKIE_VARS[$Name]))
return($HTTP_COOKIE_VARS[$Name]);
return("");
}
$logged_in = false;
if(@mysql_connect($db_host, $db_user, $db_pass) !== false &&
($db_name != "" && $db_pass != ""))
{
$logged_in = true;
mysql_select_db($db_name);
$save = param("save");
$client_id = param("client_id");
$site_id = param("site_id");
$client_name = param("client_name");
$client_email = param("client_email");
$client_phone_number = param("client_phone_number");
if($client_id > 0 && $save == "0")
{
$update = "update clients set " .
"name = '" . $client_name . "', " .
"email = '" . $client_email . "', " .
"phone_number = '" . $client_phone_number . "' " .
"where id = " . $client_id;
mysql_query($update);
}
if($client_id == "0" && $site_id == "0" && $save == "0")
{
$insert = "insert into clients (name, email, phone_number) values (" .
"'" . $client_name . "', " .
"'" . $client_email . "', " .
"'" . $client_phone_number . "')";
mysql_query($insert);
$client_id = mysql_insert_id();
}
$site_name = param("site_name");
$site_user = param("site_user");
$site_creation_day = param("site_creation_day");
$site_creation_month = param("site_creation_month");
$site_creation_year = param("site_creation_year");
$site_creation_date = $site_creation_year . "-" .
$site_creation_month . "-" .
$site_creation_day;
$site_mothly_fee = 0.0;
$site_annual_fee = 0.0;
$fee = param("fee");
if($fee == "monthly")
$site_mothly_fee = param("site_fee");
else
$site_annual_fee = param("site_fee");
$name_vendor_id = param("name_vendor_id");
$processor_id = param("processor_id");
if($site_id > 0 && $save == "0")
{
$update = "update sites set " .
"name = '" . $site_name . "', " .
"user = '" . $site_user . "', " .
"creation_date = '" . $site_creation_date . "', " .
"monthly_fee = " . $site_mothly_fee . ", " .
"annual_fee = " . $site_annual_fee . ", " .
"client_id = " . $client_id . ", " .
"name_vendor_id = " . $name_vendor_id . ", " .
"processor_id = " . $processor_id .
" where id = " . $site_id;
mysql_query($update);
}
if($site_id < 0)
{
$deleted_domain = param("deleted_domain_" . (-$site_id));
$deleted_client_id = mysql_query("select client_id from sites where id = " . (-$site_id) .
" and name = '" . $deleted_domain . "'");
if($deleted_client_id = mysql_fetch_assoc($deleted_client_id))
{
$number_of_sites = mysql_query("select count(id) as coun from sites where client_id = " . $deleted_client_id["client_id"]);
$number_of_sites = mysql_fetch_assoc($number_of_sites);
if($number_of_sites["coun"] == 1)
mysql_query("delete from clients where id = " . $deleted_client_id["client_id"]);
mysql_query("delete from sites where id = " . (-$site_id));
}
}
if($site_id == "0" && $save == "0")
{
$insert = "insert into sites " .
"(name, user, creation_date, monthly_fee, annual_fee, client_id, name_vendor_id, processor_id) " .
"values (" .
"'" . $site_name . "', " .
"'" . $site_user . "', " .
"'" . $site_creation_date . "', " .
$site_mothly_fee . ", " .
$site_annual_fee . ", " .
$client_id . ", " .
$name_vendor_id . ", " .
$processor_id . ")";
mysql_query($insert);
}
$month = param("month");
$date = getDate();
if($month == "")
$month = $date["mon"];
$month_filter1 = "";
$month_filter2 = "";
$month_filter3 = " * 12";
if($month != 0)
{
$month_filter1 = " and MONTH(creation_date) = " . $month;
$month_filter2 = " where MONTH(creation_date) = " . $month;
$month_filter3 = "";
}
$select = "select clients.id as client_id, clients.name as client_name, email, phone_number, " .
"sites.id as site_id, sites.name as site_name, user, monthly_fee, annual_fee, name_vendor_id, processor_id, " .
"creation_date, DAYOFMONTH(creation_date) as creation_day, MONTH(creation_date) as creation_month, YEAR(creation_date) as creation_year, " .
"processors.name as processor_name, name_vendors.name as name_vendor_name " .
"from (clients left outer join sites on clients.id = sites.client_id), processors, name_vendors " .
"where sites.processor_id = processors.id and sites.name_vendor_id = name_vendors.id " .
$month_filter1 .
" order by clients.name, sites.name";
$client_sites = mysql_query($select);
$select = "select id, name, email, phone_number from clients order by name";
$clients = mysql_query($select);
$select = "select name, id from processors";
$processors = mysql_query($select);
$select = "select name, id from name_vendors";
$name_vendors = mysql_query($select);
$select = "select ifnull(sum(monthly_fee), 0.00)" . $month_filter3 . " + 0.00 as sum from sites";
$monthly_fee = mysql_query($select);
$monthly_fee = mysql_fetch_assoc($monthly_fee);
$select = "select ifnull(sum(annual_fee), 0.00) as sum from sites " . $month_filter2;
$annual_fee = mysql_query($select);
$annual_fee = mysql_fetch_assoc($annual_fee);
}
?>
<html>
<head>
<title>web hosting client manager</title>
<style>
a {color:000000;}
.headings {font-family:'arial, sans-serif, verdana'; font-weight:bold; color:555555;}
</style>
<? if($logged_in == true) { ?>
<script>
function SelectClient(client_id)
{
if(document.whcm.site_id.value == '')
document.whcm.site_id.value = '0';
switch(client_id)
{
<? while($client = mysql_fetch_assoc($clients)) { ?>
case '<?= $client["id"] ?>':
document.whcm.client_name.value = '<?= $client["name"] ?>';
document.whcm.client_email.value = '<?= $client["email"] ?>';
document.whcm.client_phone_number.value = '<?= $client["phone_number"] ?>';
break;
<? } ?>
default:
document.whcm.client_name.value = '';
document.whcm.client_email.value = '';
document.whcm.client_phone_number.value = '';
}
}
function SelectValue(SelectName, Value)
{
eval('SelectObject = document.whcm.' + SelectName + ';');
for(index = 0; index < SelectObject.length; index++)
{
if(SelectObject[index].value == Value)
SelectObject.selectedIndex = index;
}
}
</script>
<? } // if $logged_in == true ?>
</head>
<body bgcolor="eecc99" <? if($save == "0") { ?>onload="document.whcm.submit();"<? } ?>>
<a name="edit"></a>
<form name="whcm" method="post">
<input type="hidden" name="save" />
<input type="hidden" name="site_id" value="0" />
<table align="center" bgcolor="eeeeee">
<? if($logged_in == true) { ?>
<tr>
<td>
<table width="100%" cellpadding="5" bgcolor="eecc99">
<tr>
<td valign="top">
<table>
<tr>
<td></td>
<td>
<select name="client_id"
onchange="SelectClient(document.whcm.client_id[document.whcm.client_id.selectedIndex].value);">
<option value="0">New Client</option>
<?
@mysql_data_seek($clients, 0);
while($client = mysql_fetch_assoc($clients)) {
?>
<option value="<?= $client["id"] ?>"><?= $client["name"] ?></option>
<? } // while $client = mysql_fetch_assoc($clients) ?>
</select>
</td>
</tr>
<tr>
<td>Client Name</td>
<td><input type="text" name="client_name" /></td>
</tr>
<tr>
<td>Client Email</td>
<td><input type="text" name="client_email" /></td>
</tr>
<tr>
<td>Client Phone Number</td>
<td><input type="text" name="client_phone_number" /></td>
</tr>
</table>
</td>
<td align="right" valign="top">
<table>
<tr>
<td>Site Name</td>
<td><input type="text" name="site_name" /></td>
</tr>
<tr>
<td>Name Vendor</td>
<td>
<select name="name_vendor_id">
<? while($name_vendor = mysql_fetch_assoc($name_vendors)) { ?>
<option value="<?= $name_vendor["id"] ?>"><?= $name_vendor["name"] ?></option>
<? } // while $name_vendor = mysql_fetch_assoc($name_vendors) ?>
</select>
</td>
</tr>
<tr>
<td>Site User</td>
<td><input type="text" name="site_user" /></td>
</tr>
<tr>
<td>
<input type="radio" name="fee" value="monthly" />
monthly
&nbsp;&nbsp;
<input type="radio" name="fee" value="annual" />
annual
&nbsp;&nbsp;
fee
</td>
<td>
<input type="text" name="site_fee" />
</td>
</tr>
<tr>
<td>Processor</td>
<td>
<select name="processor_id">
<? while($processor = mysql_fetch_assoc($processors)) { ?>
<option value="<?= $processor["id"] ?>"><?= $processor["name"] ?></option>
<? } // while $processor = mysql_fetch_assoc($processors) ?>
</select>
</td>
</tr>
<tr>
<td>Site Creation Date</td>
<td>
<input type="text" size="2" name="site_creation_day" value="<?= $date["mday"] ?>" />
&nbsp;
<select name="site_creation_month">
<option value="1" <? if($date["mon"] == "1") { ?>selected<? } ?>>January</option>
<option value="2" <? if($date["mon"] == "2") { ?>selected<? } ?>>February</option>
<option value="3" <? if($date["mon"] == "3") { ?>selected<? } ?>>March</option>
<option value="4" <? if($date["mon"] == "4") { ?>selected<? } ?>>April</option>
<option value="5" <? if($date["mon"] == "5") { ?>selected<? } ?>>May</option>
<option value="6" <? if($date["mon"] == "6") { ?>selected<? } ?>>June</option>
<option value="7" <? if($date["mon"] == "7") { ?>selected<? } ?>>July</option>
<option value="8" <? if($date["mon"] == "8") { ?>selected<? } ?>>August</option>
<option value="9" <? if($date["mon"] == "9") { ?>selected<? } ?>>September</option>
<option value="10" <? if($date["mon"] == "10") { ?>selected<? } ?>>October</option>
<option value="11" <? if($date["mon"] == "11") { ?>selected<? } ?>>November</option>
<option value="12" <? if($date["mon"] == "12") { ?>selected<? } ?>>December</option>
</select>
&nbsp;
<input type="text" size="4" name="site_creation_year" value="<?= $date["year"] ?>" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" cellpadding="5">
<tr>
<td>
<input type="button" value="add site"
onclick="SelectValue('client_id', '0');
SelectClient('0');
document.whcm.site_id.value = '0';
document.whcm.site_name.value = '';
document.whcm.site_user.value = '';
document.whcm.site_fee.value = '';
document.location.hash = '#edit';"/>
</td>
<td align="right">
<input type="button" value="save"
onclick="document.whcm.save.value = '0';
document.whcm.submit();" />
&nbsp;
<input type="button" value="cancel"
onclick="document.whcm.reset();" />
&nbsp;
<input type="button" value="log out"
onclick="document.cookie = 'db_user=';
document.cookie = 'db_pass=';
document.whcm.submit();" />
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" cellpadding="5" bgcolor="eecc99">
<tr>
<td></td>
<td valign="top">Client Name & <br /> Contact Info</td>
<td valign="top">Domain & User</td>
<td valign="top">Name Vendor</td>
<td valign="top">Monthly <br /> Payment</td>
<td valign="top">Annual <br /> Payment</td>
<td valign="top">Payment <br /> Method</td>
<td valign="top">Account Creation <br /> Date</td>
</tr>
<?
$client_id = "";
while($client_site = mysql_fetch_assoc($client_sites))
{
?>
<tr>
<td>
<? if($client_id != $client_site["client_id"]) { ?>
<input type="button" value="add site"
onclick="SelectValue('client_id', '<?= $client_site["client_id"] ?>');
SelectClient('<?= $client_site["client_id"] ?>');
document.whcm.site_id.value = '0';
document.whcm.site_name.value = '';
document.whcm.site_user.value = '';
document.whcm.site_fee.value = '';
document.location.hash = '#edit';"/>
<? } ?>
</td>
<td>
<? if($client_id != $client_site["client_id"]) { ?>
<a href="mailto:<?= $client_site["email"] ?>">
<?= $client_site["client_name"] ?></a>
<? } ?>
</td>
<td>
<a href="http://<?= $client_site["site_name"] ?>">
<?= $client_site["site_name"] ?></a>
</td>
<td>
<?= $client_site["name_vendor_name"] ?>
</td>
<td>
<? if($client_site["monthly_fee"] != 0.00) { ?>
$<?= $client_site["monthly_fee"] ?>
<? } ?>
</td>
<td>
<? if($client_site["annual_fee"] != 0.00) { ?>
$<?= $client_site["annual_fee"] ?>
<? } ?>
</td>
<td>
<?= $client_site["processor_name"] ?>
</td>
<td>
<?= $client_site["creation_date"] ?>
</td>
<td>
<input type="button" value="edit"
onclick="SelectValue('client_id', '<?= $client_site["client_id"] ?>');
SelectClient('<?= $client_site["client_id"] ?>');
document.whcm.site_id.value = '<?= $client_site["site_id"] ?>';
document.whcm.site_name.value = '<?= $client_site["site_name"] ?>';
SelectValue('name_vendor_id', '<?= $client_site["name_vendor_id"] ?>');
document.whcm.site_user.value = '<?= $client_site["user"] ?>';
<? if($client_site["annual_fee"] != 0) { ?>
document.whcm.site_fee.value = '<?= $client_site["annual_fee"] ?>';
document.whcm.fee[1].checked = true;
<? } else { ?>
document.whcm.site_fee.value = '<?= $client_site["monthly_fee"] ?>';
document.whcm.fee[0].checked = true;
<? } ?>
SelectValue('processor_id', '<?= $client_site["processor_id"] ?>');
document.whcm.site_creation_day.value = '<?= $client_site["creation_day"] ?>';
SelectValue('site_creation_month', '<?= $client_site["creation_month"] ?>');
document.whcm.site_creation_year.value = '<?= $client_site["creation_year"] ?>';
document.location.hash = '#edit';" />
</td>
<td>
<input type="button" value="delete"
onclick="document.whcm.site_id.value = '-<?= $client_site["site_id"] ?>';
document.whcm.submit();" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<? if($client_id != $client_site["client_id"]) { ?>
<?= $client_site["phone_number"] ?>
<?
$client_id = $client_site["client_id"];
}
?>
</td>
<td>
<?= $client_site["user"] ?>
</td>
<td align="right" colspan="7"><input type="text" name="deleted_domain_<?= $client_site["site_id"] ?>" /></td>
</tr>
<? } ?>
<tr>
<td colspan="2">
<select name="month"
onchange="document.whcm.save.value = '';
document.whcm.submit();">
<option value="0">All Sites</option>
<option value="1" <? if($month == "1") { ?>selected<? } ?>>January</option>
<option value="2" <? if($month == "2") { ?>selected<? } ?>>February</option>
<option value="3" <? if($month == "3") { ?>selected<? } ?>>March</option>
<option value="4" <? if($month == "4") { ?>selected<? } ?>>April</option>
<option value="5" <? if($month == "5") { ?>selected<? } ?>>May</option>
<option value="6" <? if($month == "6") { ?>selected<? } ?>>June</option>
<option value="7" <? if($month == "7") { ?>selected<? } ?>>July</option>
<option value="8" <? if($month == "8") { ?>selected<? } ?>>August</option>
<option value="9" <? if($month == "9") { ?>selected<? } ?>>September</option>
<option value="10" <? if($month == "10") { ?>selected<? } ?>>October</option>
<option value="11" <? if($month == "11") { ?>selected<? } ?>>November</option>
<option value="12" <? if($month == "12") { ?>selected<? } ?>>December</option>
</select>
</td>
<td colspan="2"></td>
<td>$<?= $monthly_fee["sum"] ?></td>
<td>$<?= $annual_fee["sum"] ?></td>
<td colspan="4" align="right">$<?= bcadd($monthly_fee["sum"], $annual_fee["sum"], 2) ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" cellpadding="5">
<tr>
<td>
<input type="button" value="add site"
onclick="SelectValue('client_id', '0');
SelectClient('0');
document.whcm.site_id.value = '0';
document.whcm.site_name.value = '';
document.whcm.site_user.value = '';
document.whcm.site_fee.value = '';
document.location.hash = '#edit';"/>
</td>
<td align="right">
<input type="button" value="save"
onclick="document.whcm.save.value = '0';
document.whcm.submit();" />
&nbsp;
<input type="button" value="cancel"
onclick="document.whcm.reset();" />
&nbsp;
<input type="button" value="log out"
onclick="document.cookie = 'db_user=';
document.cookie = 'db_pass=';
document.whcm.submit();" />
</td>
</tr>
</table>
</td>
</tr>
<? } // If $logged_in == true ?>
<? if($logged_in == false) { ?>
<tr>
<td>User Name </td>
<td><input type="text" name="db_user" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="db_pass" /></td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="button" value="log in"
onclick="document.cookie = 'db_user=' + document.whcm.db_user.value;
document.cookie = 'db_pass=' + document.whcm.db_pass.value;
document.whcm.submit();">
</td>
</tr>
<? } // If $logged_in == false ?>
</table>
</form>
</body>
</html>
&nbsp;