<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software and Small Business</title>
	<atom:link href="http://blog.calendarscripts.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.calendarscripts.info</link>
	<description>Software Reviews, Tips, And Info From CalendarScripts</description>
	<lastBuildDate>Thu, 02 Sep 2010 21:18:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Broadfast Newsletter 1.8</title>
		<link>http://blog.calendarscripts.info/broadfast-newsletter-1-8/</link>
		<comments>http://blog.calendarscripts.info/broadfast-newsletter-1-8/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 21:18:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CalendarScripts]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=80</guid>
		<description><![CDATA[This is a quick note. Broadfast Email Newsletter followed the autoresponder and also has an update using SwiftMailer. This means no more PEAR library will be required to send SMTP mails and now Sendmail is also available. Another new in the version is subscribers search and sort and unicode support.]]></description>
			<content:encoded><![CDATA[<p>This is a quick note. <a href="http://calendarscripts.info/email-newsletter-software.html">Broadfast Email Newsletter</a> followed the autoresponder and also has an update using SwiftMailer. This means no more PEAR library will be required to send SMTP mails and now Sendmail is also available.<br />
Another new in the version is subscribers search and sort and unicode support.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/broadfast-newsletter-1-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Registration API and No More PEAR &#8211; Version 2.2 Of Broadfast Autoresponder Is Online</title>
		<link>http://blog.calendarscripts.info/registration-api-and-no-more-pear-version-2-2-of-broadfast-autoresponder-is-online/</link>
		<comments>http://blog.calendarscripts.info/registration-api-and-no-more-pear-version-2-2-of-broadfast-autoresponder-is-online/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 12:31:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CalendarScripts]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=77</guid>
		<description><![CDATA[We had some customers complaining that PEAR was hard to set up or was unavailable in their hosts. So here is the answer, no more need of PEAR! The latest version of the php auto responder uses the best mail sending library out there &#8211; SwiftMailer. This leads to the following new features: - Sendmail [...]]]></description>
			<content:encoded><![CDATA[<p>We had some customers complaining that PEAR was hard to set up or was unavailable in their hosts. So here is the answer, no more need of PEAR! The latest version of the <a href="http://calendarscripts.info/php-auto-responder.html">php auto responder</a> uses the best mail sending library out there &#8211; <a href="http://swiftmailer.org/">SwiftMailer</a>. This leads to the following new features:</p>
<p>- Sendmail and SMTP email sending. Now it&#8217;s easy to choose between three protocols &#8211; PHP Mail, Sendmail and SMTP without the need to install anything else on your server.<br />
- Attachments. Although we had a way to include files through &#8220;Files and Links&#8221; menu, looks like most users prefer to directly attach files to their emails. Well, this is now possible.</p>
<p>Another important addition is the registration API which allows advanced users to program user registrations through some other software. This can be very useful if you have existing membership system, blog or forum.</p>
<p>The price remains $37 for this version, but you should expect an increase soon, so it&#8217;s better to <a href="http://calendarscripts.info/php-auto-responder.html">order now</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/registration-api-and-no-more-pear-version-2-2-of-broadfast-autoresponder-is-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>56 PHP Scripts That Will Help Your Website Make More Money</title>
		<link>http://blog.calendarscripts.info/56-php-scripts-that-will-help-your-website-make-more-money/</link>
		<comments>http://blog.calendarscripts.info/56-php-scripts-that-will-help-your-website-make-more-money/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 14:26:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Reviews]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=57</guid>
		<description><![CDATA[While it&#8217;s always a good idea to get custom developed enhancements for your sites, using ready scripts can save a lot of time and money. Look at the list below: all these software products can help great deal to make more money with your sites. Besides that, looking at them can give you a lot [...]]]></description>
			<content:encoded><![CDATA[<p>While it&#8217;s always a good idea to get <a href=" http://www.scriptlance.com/?ref=pim" target="_blank" rel="nofollow">custom developed</a> enhancements for your sites, using ready scripts can save a lot of time and money. Look at the list below: all these software products can help great deal to make more money with your sites.</p>
<p>Besides that, looking at them can give you a lot of ideas for further growth and improvement. I know doing the research for this post generated many new ideas for me.</p>
<h2>Wikis</h2>
<p>Niche wikis can feed your site with user generated fresh content. This may improve your rankings in the search engines, your traffic, sales, ad revenue and so on. Users who contribute content often eagerly promote it as well.</p>
<p>- <a href="http://info.tikiwiki.org/tiki-index.php" target=_blank>Tiki Wiki</a> is one of the most popular wiki softwares and it&#8217;s a lot more than wiki &#8211; integrates blogs, forums, image gallery and more. And it&#8217;s free.<br />
- <a href="http://wikiwig.sourceforge.net/" target_blank>Wikiwig</a> is also free and has a visual editor which will save you and your users from learning a wiki language.</p>
<h2>Web Fetching and Content Agregators</h2>
<p>Publishing duplicate content shouldn&#8217;t be the primary way to enrich your website. But smartly placed and relevant news, reviews and comments can improve greatly the user experience and increase the pageviews and the revenue it generates.</p>
<p>- <a href="http://www.phprssreader.com/" target=_blank>PHP RSS Reader</a> &#8211; very professional RSS agregator although a bit expensive (from $97 to $297)<br />
- <a href="http://www.feedforall.com/free-php-script.htm" target=_blank>Free RSS to HTML PHP Script</a> &#8211; here is a free alternative but without an administrative panel and not many features.</p>
<h2>Communities, Social networks and Dating</h2>
<p>Before starting a community or social network around your main site make sure you have a clear idea how it is going to be unique as these things are very hard to raise up and make alive. For sure you should think about niche (related to your main site) network or dating site, not a general one.</p>
<p>If you can do it successfully it will turn into very powerful free advertising and broadcasting platform for your main business.</p>
<p>- <b>Facebook page or group</b>. This is not really a PHP script but I ought to mention it. Before investing time and money into buying or developing your own community, try to start a Facebook fan page or group around your niche or site. If you can make the page active, you have a chance to go further.</p>
<p>- <a href="http://buddypress.org/" target=_blank>BuddyPress</a> is a great social network for WordPress sites. It&#8217;s free and quite well supported with many themes and plugins.<br />
- <a href="http://www.boonex.com/" target=_blank>Dolphin 7</a> is a high profile free social network engine. Very popular and feature rich.<br />
- <a href="http://www.socialengine.net/" target=_blank>SocialEngine</a> is commercial and judging by the users feedback it&#8217;s well worth the money.<br />
- <a href="http://www.abk-soft.com/" target=_blank>Chameleon</a> is good if you want to start a niche dating / match-making site. Starts from $597.<br />
- <a href="http://www.vldpersonals.com/" target=_blank>VidPersonals</a> is another good dating software with multimedia support. Starts at $99.</p>
<h2>Membership Areas, Subscriptions, User Management</h2>
<p>Sometimes the best way to monetize your expertise and knowledge is not through consulting or through offering it for free and earning from advertising. Sometimes the best idea is to protect more advanced pieces of your content and to charge for access to it. Here are some good softwares which can help you do this:</p>
<p>- <a href="http://www.quadodo.net/" target=_blank>Quadodo</a> is one of the free solutions. It&#8217;s not very fancy but does most of what you may need.<br />
- <a href="http://www.omni-secure.com/index.php" target=_blank>OmniSecure</a>  looks better, does more and has good support. Of course this comes with its price &#8211; the software price starts at $197.<br />
- <a href="http://www.amember.com/p/" target=_blank>aMember</a> is might be the most popular solution famous for the large community around it.</p>
<h2>Sharing and Recommendation</h2>
<p>When users share your content this leads to more new visits and pageviews. Besides that people tend to trust their friends a lot more than other forms of recommendation so usually this kind of traffic is very efficient.<br />
- <a href="http://addthis.com" target=_blank>addthis.com</a> isn&#8217;t exactly a PHP script or at least not one that you can download and install on your server. It&#8217;s a free web based service that will provide the most popular social media icons at the bottom of your pages. It&#8217;s very easy to use and you don&#8217;t need to care about updates etc. They also provide analytics so I decided it&#8217;s well worth including in this list.<br />
- <a href="http://www.omnistartell.com/index.htm">Omnistartell</a> is one of the good options if you want to host the widget yourself. This will cost $57.</p>
<h2>Reviews, Ratings, Polls and Voting</h2>
<p>The most important things that these tools do are two: they increase visitors participation and engagement with your site and they can provide a very important social proof for the quality of your products or services.<br />
- <a href="http://www.phptoys.com/e107_plugins/content/content.php?content.64" target=_blank>MicroRate</a> is a basic but free script that will let your visitors rate your content or products.<br />
- <a href="http://www.review-script.com/" target=_blank>Five Star Review Script</a> is more comprehensive Amazon-style rating widget. It&#8217;s a bit pricey however, starting at $50 per year.<br />
<a href="http://www.phpjabbers.com/stars-rate/" target=_blank>StarsRate</a> &#8211; another paid one, but it&#8217;s good and costs only $28 one time fee.<br />
<a href="http://www.limesurvey.org/" target=_blank>LimeSurvey</a> is a lot more than a rating tool. It&#8217;s fully functional survey software and is open source and free.</p>
<h2>Email Newsletters and Autoresponders</h2>
<p>Keeping in touch by e-mail is one of the most powerful ways to get your visitors visit your site again, buy from it or subscribe for your affiliate offers.<br />
- <a href="http://www.inoutscripts.com/products/inout_mailing_list_manager/" target=_blank>Inout</a> is a complex and feature rich mailing list manager for $49.<br />
- <a href="http://calendarscripts.info/php-auto-responder.html">BFT Autoresponder</a> combines simple and easy to use mailing list manager with autoresponders. All for $37<br />
- <a href="http://en.tellmatic.org/tellmatic&#038;s=switch_lang,&#038;lang=en" tgarget=_blank>Tellmatic</a> is for you if you are looking for something free and open source. </p>
<h2>Image Galleries</h2>
<p>By themselves image galleries don&#8217;t usually make money, but they are huge link and traffic magnet.<br />
- <a href="http://piwigo.org/" target=_blank>Piwigo</a> looks great and is free open source solution<br />
- <a href="http://coppermine-gallery.net/" target=_blank>Coppermine</a> is also free and although I dont like how its code is written, it&#8217;s quite good and can be used as photo contest as well.<br />
- <a href="http://www.tinywebgallery.com/en/overview.php" target=_blank>TinyWeb Gallery</a> is also free, supports video, has ajax and flash effects, really cool one.<br />
- <a href="http://www.ktools.net/photostore/sell-photos-online/" target=_blank>PhotoStore</a> is commercial solution with a bit different purpose &#8211; it allows you to sell images. It can be a very powerful revenue generating tool if you have original niche photos.<br />
- Another photo store is <a href="http://www.pixaria.com/" target=_blank>Pixaria</a> which is one of the most popular commercial solutions ($249)</p>
<h2>Graphs and Charts</h2>
<p>Graph and charts can help you make great infographics and visualizations that often attract links or lead to social media shares and bookmarks. </p>
<p>- <a href="http://www.fusioncharts.com/PHP/" target=_blank>FusionCharts</a> is very impressive commercial package having several licenses (start at $69)<br />
- <a href="http://www.phpf1.com/product/php-chart-script.html" target=_blank>MaxChart</a> are simple but free. Good enough for basic charts.<br />
- <a href="http://jpgraph.net/" target=_blank>JPGraph</a> was the first I have ever used. A bit complicated but offers very big variety of charts and a high level of customization. There are free and commercial licenses.<br />
- <a href="http://www.amcharts.com/" target=_blank>AMCharts</a> are easy to use flash based charts. Very modern looking with reasonable level of customization options.</p>
<h2>E-commerce Systems and Tools</h2>
<p>These scripts are intended to help you directly make money from your site. Of course you need something to sell &#8211; it could be software, movies, music, books, or even physical products like furniture, cars and clothes.<br />
- <a href="http://www.jshop.co.uk/" target=_blank>JShop Server</a> is one of the best rated tools in this category. I have not tried it myself, but it looks promising. GBP 200.<br />
- <a href="http://www.cs-cart.com/" target=_blank>CS Cart</a> is also a commercial shopping cart software but it has a 60 days free trial. Very modern outlook and seems to be easy to use.<br />
- <a href="http://www.oscommerce.com/" target=_blank>Oscommerce</a> is the most popular free open source shopping cart solution. I am horrified by its code and I don&#8217;t like the administration panel but it&#8217;s free and popular and there are a lot of modules, plugins and themes for it.<br />
- <a href="http://www.squirrelcart.com/php_shopping_cart.php" target=_blank>Squirrel Cart</a> is reasonably priced commercial software that has all the features of the more expensive ones.<br />
- Years ago <a href="http://www.cubecart.com/" target=_blank>CubeCart</a> was my favorite. I have not used it recently but I believe it&#8217;s probably still good. And the price is very decent, having even a free version.</p>
<h2>Forums</h2>
<p>Forums can make some money by showing advertisements but their effect is stronger in an indirect way &#8211; they are great to keep users interest in your site and to build more trust, traffic and links to it. Just have in mind that starting a forum is not an easy thing to do because no one wants to post in it while it&#8217;s empty.<br />
- <a href="http://punbb.informer.com/" target=_blank>PunBB</a> is cute little forum, very easy to integrate in existing site and customize. It has just enough features in most cases.<br />
- <a href="http://simplemachines.org/" target=_blank>SimpleMachines</a> is for you if you need more features. It has everything that the commercial forums do.<br />
- <a href="http://www.vbulletin.com/" target=_blank>vBulletin</a> is widely considered the best forum. It&#8217;s commercial but sometimes is worth the money especially if you are sure your forum will be active. I don&#8217;t think it&#8217;s better than SimpleMachines but most people are familiar with it which reduces the barrier to participation.</p>
<h2>Customer Support</h2>
<p>If you sell <i>anything</i> on your site you should think about customer support software. Not only it will reduce the time you spend answering emails &#8211; it will also improve your customer supports which leads to more happy customers spreading the word about your products or services and thus to more sales.<br />
- <a href="http://www.iscripts.com/supportdesk/" target=_blank>Iscripts SupportDesk</a> is a support suite containing everything you may want to use for customer support for $147.<br />
- <a href="http://www.helpdeskpilot.com/" target=_blank>HelpdeskPilot</a> is modern looking and fully featured software with 15 days free trial. The prices for the licenses are a bit steep however, starting at $399<br />
- <a href="http://www.hesk.com/" target=_blank>HESK</a> is one of the few support suites that have free versions. The paid licenses are also very reasonably priced, just at $39.<br />
- Here is a completely free one: <a href="http://www.accord5.com/trellis" target=_blank>TrellisDesk</a>! Regardless of being free it&#8217;s a very high quality support desk software.<br />
- <a href="http://livehelp.stardevelop.com/" target=_blank>LiveHelp</a>&#8216;s main purpose is live support chat and it&#8217;s maybe the most popular one. License prices start at $120.<br />
- <a href="http://www.helpcenterlive.com/" target=_blank>HelpCenter Live</a> is the free open source alternative</p>
<h2>Classifieds</h2>
<p>Running a niche classifieds section is yet another method to increase traffic or directly make money if you charge for posting classified.<br />
- <a href="http://www.scriptdevelopers.net/products/netclassifieds.html" target=_blank>NetClassifieds</a> is one of the easy free solutions which can help you do this<br />
- <a href="http://www.68classifieds.com/" target=_blank>68 Classifieds</a> is a higher quality but commercial one which has hosted license for $40 and downloadable licenses starting at $150.</p>
<h2>Blogs</h2>
<p>It&#8217;s very uncommon to have a popular and lucrative site without a blog these days. Even if you are just selling products and not looking for advertising revenue having a blog can greatly improve the image of your business.<br />
- <a href="http://wordpress.org/" target=_blank>WordPress</a> is definitely the super-leader. This blog runs WordPress, every blog runs wordpress, social comunities, shopping carts, many other sites are based on WordPress. There is no other software category which to have such a strong leader. Besides that it&#8217;s completely free!<br />
- <a href="http://b2evolution.net/" target=_blank>b2evolution</a> tries to compete by being more than just a blog. Well, WordPress is also a lot more than blog, but b2evolution is at least worth a look.<br />
- <a href="http://www.movabletype.org/" target=_blank>MovableType</a> used to compete WordPress succesfully but in the recent years remains in its shadow. Still it&#8217;s a very good software and you may like it for a change.</p>
<h2>Auctions</h2>
<p>Running niche auctions can earn you commissions in direct way or just increase the participation and popularity of your site (like the most of softwares reviewed here)<br />
- <a href="http://www.webidsupport.com/" target=_blank>WeBid</a> is open source, free and looks professional. What else you may want?<br />
- If you are looking for penny auction, this <a href="http://www.ajaxphppennyauction.com/" target=_blank>Ajax PHP Penny Auction</a> for $99 is a good choice.</p>
<h2>Affiliate Programs</h2>
<p>If you sell your own products or service, running an affiliate program is a good way to get marketers work for you (for a commission of course)<br />
- <a href="http://www.qualityunit.com/postaffiliate/" target=_blank>Postaffiliate</a> is one of the oldest and most popular affiliate program scripts. It has a simple free version and a feature rich starting at $199.<br />
- <a href="http://jam.jrox.com/" target=_blank>JAM</a> is one of the good Postaffiliate alternatives. I have no experience with it but it has good reviews.</p>
<h2>Ad Management</h2>
<p>If you are content publisher and/or blogger, then running ads on the site is probably one of the main sources of income. Adsense and Chitika are great, but often the most money are made by selling advertisements directly to advertisers.<br />
- <a href="http://calendarscripts.info/ad-management-software.html" target=_blank>A.M.Y.</a> is modern, simple and only $29 with unlimited domains license.<br />
- <a href="http://www.inoutscripts.com/products/adserver/" target=_blank>Inout Adserver</a> is a lot more complicated and feature rich but this comes with it&#8217;s price, starting at $149<br />
- <a href="http://blondish.net/resources/scripts/phpads/" target=_blank>PHPads</a> is simple, modest and free. It can do the work if you don&#8217;t need much.</p>
<p>This completes the list. Am I missing an important category or product?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/56-php-scripts-that-will-help-your-website-make-more-money/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP/MySQL Tutorial: Classifieds Software In 1 Hour</title>
		<link>http://blog.calendarscripts.info/phpmysql-tutorial-classifieds-software-in-1-hour/</link>
		<comments>http://blog.calendarscripts.info/phpmysql-tutorial-classifieds-software-in-1-hour/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 19:59:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=36</guid>
		<description><![CDATA[In this tutorial we will build a basic classifieds software in PHP and MySQL. The software will do the following: 1. Allow everyone to submit classified (no registration required) 2. Classifieds will be listed in categories 3. The main page will list all categories along with the number of classifieds in them 4. Each category [...]]]></description>
			<content:encoded><![CDATA[<p>In this tutorial we will build a basic classifieds software in PHP and MySQL. The software will do the following:</p>
<table cellpadding="3">
<tr>
<td></td>
<td>1. Allow everyone to submit classified (no registration required)<br />
2. Classifieds will be listed in categories<br />
3. The main page will list all categories along with the number of classifieds in them<br />
4. Each category will list the classifieds in it ordered by the time of posting, descending order<br />
5. A small administration will be provided where the administrator will add/edit categories. This page is not included in the tutorial as for testing you can just use <a href="http://www.phpmyadmin.net/home_page/index.php" target="_blank">phpMyAdmin</a> and add/edit/delete categories from it.</p>
<p>This software will use the <a href="http://en.wikipedia.org/wiki/Model–view–controller" target="_blank">MVC concept</a> (although very simple one).
</td>
</tr>
</table>
<h2>Database Structure</h2>
<p>The database structure will be simple. We need 3 tables: classifieds, categories and admin. Here are the CREATE TABLE statements with some short explanation:</p>
<p>CREATE TABLE `classifieds` (</p>
<p>`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,</p>
<p>`category_id` INT UNSIGNED NOT NULL,</p>
<p>`title` VARCHAR(255) NOT NULL,</p>
<p>`content` TEXT NOT NULL,</p>
<p>`contact_details` TEXT NOT NULL,</p>
<p>`date` DATE NOT NULL</p>
<p>);</p>
<p>Optionally you can make category_id a <a href="http://articles.techrepublic.com.com/5100-10878_11-6035435.html" target="_blank">foreign key</a> to the next table so when a category is deleted, the classifieds in it are deleted too (or use RESTRICT clause and disallow deleting a category that has classifieds in it).</p>
<p>CREATE TABLE `categories` (</p>
<p>` id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,</p>
<p>` name` VARCHAR(255) NOT NULL</p>
<p>);</p>
<p>This categories table is very simple as categories contain only name. You may decide to add description, some kind of status field (active/inactive) and so on.</p>
<p>The following table will contain the login information for the administrator:</p>
<p>CREATE TABLE admin (</p>
<p>` id` TINYING UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,</p>
<p>` email` VARCHAR(255) NOT NULL,</p>
<p>` pass` VARCHAR(100) NOT NULL</p>
<p>);</p>
<p>Most probably you will use only one admin (superadmin), but having a table for the administrator&#8217;s login will allow you to add and use more than 1 admin in the future if that becomes a requirement.</p>
<h2>Models</h2>
<p>As we follow the MVC concept we&#8217;ll delegate the business logic of this software to the model layer. Models are PHP classes that control the database operation for creating, editing and showing classifieds and categories.</p>
<p>For simplicity in this tutorial I will use SQL queries inside the models for every database operation. However it&#8217;s highly recommended that you use some database class rather than the mysql_query calls. It&#8217;s also a good idea to use some sort of ActiveRecord/ORM implementation so add/edit/delete operations can be handled without typing SQL. For example see <a href="http://www.phpactiverecord.org/">PHP ActiveRecord</a> or the basic model in <a href="http://www.celeroo.com/frame/frame.html">Celeroo framework</a>. Discussing ORM itself is out of the scope of this tutorial so let&#8217;s continue with the other things.</p>
<p>We will use two models &#8211; one for categories and one for classifieds. At this point we will not build model for admin as the only place where we&#8217;ll deal with the admin table will be authentication. I am leaving authentication out of this tutorial. You can see <a href="http://www.jdtmmsm.com/tutorials/basicAuthentication.php">how to build simple PHP/MySQL user authentication</a> here.</p>
<p>Model Category:</p>
<pre>
&lt;?php
class Category()
{
   function __construct()
   {
      // for this tutorial there will be nothing inside this method
      // in the real app you could possibly add some initialization
   }

   function add($name)
   {
      $this-&gt;filter($name);
      $q="INSERT INTO categories (name) VALUES (\"$name\")";
      mysql_query($q) or die(mysql_error());
   }

   function edit($name, $id)
   {
      $this-&gt;filter($name);
      // add some basic security
      if(!is_numeric($id)) exit;

      $q="UPDATE categories SET name=\"$name\" WHERE id='$id'";
      mysql_query($q);
   }

   // category name allows only alphanumeric
   private function filter($name)
   {
      $name=preg_replace("/\W/","",$name);
      return $name;
   }

   function delete($id)
   {
       if(!is_numeric($id)) exit;

       $q="DELETE FROM categories WHERE id='$id'";
       mysql_query($q);
   }

   // method to list the categories for admin edit/delete
   function list()
   {
       $q="SELECT * FROM categories ORDER BY name";
       $result=mysql_query($q);

       $cats=array();

       while($cat=mysql_fetch_array($result)) $cats[]=$cat;
       return $cats;
   }

   // method to return categories along with number of ads in them
   function list_count()
   {
       $q="SELECT COUNT(tA.id) as classifieds, tC.name as name, tC.id as id
       FROM categories tC LEFT JOIN classifieds tA ON tA.category_id=tC.id
       ORDER BY tC.name";
       $result=mysql_query($q);
       $cats=array();

       while($cat=mysql_fetch_array($result)) $cats[]=$cat;
       return $cats;
   }

   // method to return full category data for a single category
   function select($id)
   {
      if(!is_numeric($id)) exit;

       $q="SELECT * FROM categories WHERE id='$id'";
       $category=mysql_fetch_array(mysql_query($q));
       return $category;
    }
}
?&gt;
</pre>
<p>Few things to notice here: in the methods that receive $id we are checking whether it is numeric to prevent eventual SQL injections.</p>
<p>Another thing to pay attention to is the LEFT JOIN in list_count method. If we don&#8217;t use LEFT only the categories which have classifieds in them will be returned. But we want to show all, even those with zero ads inside.</p>
<p>Then we need a simple class to add a classified and list classifieds:</p>
<pre>
&lt;?php
class Classified
{
   function __construct()
   {
      // empty in our basic version
   }

   function add($vars)
   {
       if(!is_numeric($vars['category_id'])) exit;

       $vars['title']=mysql_real_escape_string($vars['title']);
       $vars['content']=mysql_real_escape_string($vars['content']);
       $vars['contact_details']=mysql_real_escape_string($vars['contact_details']);

       $q="INSERT INTO classifieds (category_id,title,content,contact_details,date)
       VALUES ('$vars[category_id]',\"$vars[title]\",\"$vars[content]\",
       \"$vars[contact_details]\",CURDATE())";
       mysql_query($q);

       $id=mysql_insert_id();
       return $id;
   }

   // list classifieds in a category
   function list($category_id)
   {
       if(!is_numeric($category_id)) exit;

       $q="SELECT * FROM classifieds WHERE category_id='$category_id'
       ORDER BY id DESC";
       $result=mysql_query($q);

       $ads=array();
       while($ad=mysql_fetch_array($result)) $ads[]=$ad;
       return $ads;
   }
}
?&gt;</pre>
<p>The code here is pretty straightforward. Notice the security checks and mysql_real_escape_string calls to prepare the data for inserting in the DB.</p>
<h2>Controllers</h2>
<p>The controllers are parts of the program which handle the interaction with the user input and prepare the output. In our case the controllers will be simple.</p>
<p><strong>Home page:</strong></p>
<p>This will be index.php so it gets loadedby default. It needs to list all the categories along with the number of classifieds.</p>
<pre>
&lt;?php
// this may not be required if you use <a href="http://php.net/manual/en/language.oop5.autoload.php" target="_blank">php autoload</a> function
require_once("models/category.php"); // assuming we have put models in models/ folder

$_category=new Category();
$cats=$_category-&gt;list_count();

require_once("views/index.html");
?&gt;</pre>
<p>As you can see once you&#8217;ve built model layer, controllers are pretty simple. This one just creates a model instance $_category and calls the method list_counts to receive array of categories.</p>
<p><strong>Submit classified</strong></p>
<p>We need a page that will allow people to submit classifieds. It will be linked from each category page and the category ID will be passed in the URL. Let&#8217;s call this page submit.php:</p>
<pre>
&lt;?php
// again this may be unnecessary
require_once("models/classified.php");

$_classified=new Classified();

if(!empty($_POST['submit']))
{
   $id=$_classified-&gt;add($_POST);

   // redirect to see the posted classified
   header("Location: classified.php?id=$id");
   exit;
}

require("views/submit.html");
?&gt;</pre>
<p>This page initially displays the posting form. When the form is submitted, it uses the model add() method to insert the classified, to get its ID and to redirect to the page where the classified is shown. Simple, isn&#8217;t it?</p>
<p><strong>Category page</strong></p>
<p>This page will be reached when the visitor clicks a link on the homepage. The links on the homepage will contain the category_id in the URL, for example like this: category.php?id=X. When you see the views everything will become clear.</p>
<p>So here is category.php controller:</p>
<pre>
&lt;?php
require_once("models/category.php");
require_once("models/classified.php");

$_category=new Category();
$_classified=new Classified();

// select category
$category=$_category-&gt;select($_GET['id']);
$classifieds=$_classified-&gt;list($category['id']);

require_once("views/category.html");
?&gt;</pre>
<p>Note that for simplicity I have omitted the DB connection part from the controllers. It&#8217;s highly recommended that you create a file which will create the database connection and then include/require this file in all controllers so the connection is available in them.</p>
<h2>Views</h2>
<p>Views are the HTML pages that display the content and web forms to the users. They complete the entire software.</p>
<p>You need to create header and footer HTML files. The header will contain not only the visible header but also the HTML head tag with CSS, javascripts etc. Let&#8217;s call these files header.html and footer.html and put them in folder views/ where will be all the other views as well.</p>
<p><strong>Home page:</strong></p>
<p>This will be called index.html and is included from index.php controller. Here is the content:</p>
<p><i>&lt;?php require(&#8220;views/header.html&#8221;);?&gt;<br />
&lt;h1&gt;Home Page&lt;/h1&gt;</p>
<p>&lt;?php foreach($cats as $cat):?&gt;<br />
&lt;div style=&#8221;float:left;&#8221;&gt;</p>
<p>&lt;h2&gt;&lt;a href=&#8221;category.php?id=&lt;?=$cat['id']?&gt;&#8221;&gt;&lt;?=$cat['name']?&gt;&lt;/a&gt;&lt;/h2&gt;</p>
<p>&lt;p&gt;&lt;?=$cat['classifieds']?&gt; ads&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;?php endforeach;?&gt;</p>
<p>&lt;?php require(&#8220;views/footer.html&#8221;);?&gt;</i></p>
<p>Note that in the views I use the <a href="http://php.net/manual/en/control-structures.alternative-syntax.php" target="_blank">alternative PHP control structure syntax</a>. It clutters the HTML code less and doesn&#8217;t confuse so much designers that may eventually need to work with your views.</p>
<p>Now this page goes to category.php which lists the ads in a category. Here is the associated view category.html:</p>
<p><strong>Category page:</strong></p>
<p><i>&lt;?php require(&#8220;views/header.html&#8221;);?&gt;</p>
<p>&lt;h1&gt;&lt;?=$category['name']?&gt;&lt;/h1&gt;</p>
<p>&lt;p&gt;&lt;a href=&#8221;submit.php?category_id=&lt;?=$category['id']?&gt;&#8221;&gt;Submit classified&lt;/a&gt;&lt;/p&gt;</p>
<p>&lt;?php foreach($classifieds as $classified):?&gt;</p>
<p>&lt;div style=&#8221;clear:both;border:1px solid black;padding:5px;margin:5px;&#8221;&gt;</p>
<p>&lt;p&gt;&lt;b&gt;&lt;?=$classified['title']?&gt;&lt;/b&gt;&lt;/p&gt;</p>
<p>&lt;p&gt;&lt;?=nl2br($classified['content']);?&gt;&lt;/p&gt;</p>
<p>&lt;p&gt;Contact details: &lt;?=nl2br($classified['contacts']);?&gt;&lt;/p&gt;</p>
<p>&lt;p&gt;Published at: &lt;?=$classified['date']?&gt;&lt;/p&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;?php endforeach;?&gt;</p>
<p>&lt;?php require(&#8220;views/footer.html&#8221;);?&gt;</i></p>
<p>Finally we need the web form for submitting new classified. Let&#8217;s call this page submit.html:</p>
<p><strong>Submit classified:</strong></p>
<p><i>&lt;?php require(&#8220;views/header.html&#8221;);?&gt;</p>
<p>&lt;h1&gt;Submit classified&lt;/h1&gt;</p>
<p>&lt;form method=&#8221;post&#8221; action=&#8221;submit.php&#8221;&gt;</p>
<p>&lt;input type=&#8221;hidden&#8221; name=&#8221;submit&#8221; value=&#8221;1&#8243;&gt;</p>
<p>&lt;input type=&#8221;hidden&#8221; name=&#8221;category_id&#8221; value=&#8221;&lt;?=$_GET['category_id']?&gt;&#8221;&gt;</p>
<p>&lt;p&gt;&lt;label&gt;Title:&lt;/label&gt; &lt;input type=&#8221;text&#8221; name=&#8221;title&#8221;&gt;&lt;/p&gt;</p>
<p>&lt;p&gt;&lt;label&gt;Content:&lt;/label&gt; &lt;textarea name=&#8221;content&#8221;&gt;&lt;/textarea&gt;&lt;/p&gt;</p>
<p>&lt;p&gt;&lt;label&gt;Contact details:&lt;/label&gt; &lt;textarea name=&#8221;contacts&#8221;&gt;&lt;/textarea&gt;&lt;/p&gt;</p>
<p>&lt;p&gt;&lt;input type=&#8221;submit&#8221; value=&#8221;Submit classified&#8221;&gt;&lt;/p&gt;</p>
<p>&lt;/form&gt;</p>
<p>&lt;?php require(&#8220;views/footer.html&#8221;);?&gt;</i></p>
<p>That&#8217;s it! Once you create the database connection and include the file in all controllers, your software will be ready to run.</p>
<p>You can build this software for just one hour.</p>
<h2>How to improve the software</h2>
<p>Of course this is a very basic and simple classifieds software. Here are some ideas how you can improve it:</p>
<p>- Require registration and allow users login and edit/delete their ads<br />
- Make sure classifieds automatically expire after some time<br />
- Add validations on the submit classified page<br />
- Add contact form to allow visitors contact the classified posters<br />
- Add pagination in the category page<br />
- Format the classified post date to some better human readable format<br />
- Check for duplicate ads<br />
- Allow unlimited levels of subcategories<br />
- and so on</p>
<p>This tutorial is giving you the basic and then you can continue and elaborate the software as much as you wish.</p>
<p>Any comments are welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/phpmysql-tutorial-classifieds-software-in-1-hour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eventy and Eventy Plus</title>
		<link>http://blog.calendarscripts.info/eventy-and-eventy-plus/</link>
		<comments>http://blog.calendarscripts.info/eventy-and-eventy-plus/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 20:43:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CalendarScripts]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=34</guid>
		<description><![CDATA[Your event calendar software now has an extended version called Eventy Plus. Instead of upgrading the original calendar and raising its price I decided to split it in two versions. Many customers like the calendar as is and there is no point in overloading it with features they don&#8217;t need. I know there are others [...]]]></description>
			<content:encoded><![CDATA[<p>Your <a href="http://calendarscripts.info/event-calendar-software.html">event calendar software</a> now has an extended version called Eventy Plus. Instead of upgrading the original calendar and raising its price I decided to split it in two versions. Many customers like the calendar as is and there is no point in overloading it with features they don&#8217;t need. I know there are others however who need the few features of Eventy Plus:</p>
<ul>
<li>Multiuser interface. There is one superadmin and sub-admins. The sub-admins can add/edit/delete only their own events.</li>
<li>Rich text editor CKEDITOR</li>
<li>Sending email notifications for events with optional ICal support.</li>
</ul>
<p>If you want to see other features, let me know! Feel free to comment on the prices as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/eventy-and-eventy-plus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A.M.Y. Version 1.0 is out</title>
		<link>http://blog.calendarscripts.info/a-m-y-version-1-0-is-out/</link>
		<comments>http://blog.calendarscripts.info/a-m-y-version-1-0-is-out/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 14:21:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CalendarScripts]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=32</guid>
		<description><![CDATA[A.M.Y. is our new ad management software for small to medium publishers. The software automates selling and maintaining advertising banners, text links and rich HTML ads for web publishers. There are detailed reports for both admin and advertisers, different types of ads, campaigns, pricing zones, plans etc. We have started the product with a price [...]]]></description>
			<content:encoded><![CDATA[<p>A.M.Y. is our new<a href="http://calendarscripts.info/ad-management-software.html"> ad management software</a> for small to medium publishers. The software automates selling and maintaining advertising banners, text links and rich HTML ads for web publishers. There are detailed reports for both admin and advertisers, different types of ads, campaigns, pricing zones, plans etc.</p>
<p>We have started the product with a price of $29 as it&#8217;s still in beta stage. Once I get the first feedback from customers and add the most demanded extra features, the price will probably be  raised to $39.</p>
<p>You can check out the demo and let me know what you think. Any feedback is highly appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/a-m-y-version-1-0-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Ajax Shoutbox Tutorial</title>
		<link>http://blog.calendarscripts.info/php-ajax-shoutbox-tutorial/</link>
		<comments>http://blog.calendarscripts.info/php-ajax-shoutbox-tutorial/#comments</comments>
		<pubDate>Tue, 04 May 2010 20:10:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=26</guid>
		<description><![CDATA[In this tutorial we will create a simple PHP shoutbox with Ajax based messaging. It will ask the user to choose a nickname and then allow him/her to use it (no registration and password will be required). The Database Given these requirements, we will only need 2 tables. I am giving them in pseudo-SQL code: [...]]]></description>
			<content:encoded><![CDATA[<p>In this tutorial we will create a simple PHP shoutbox with Ajax based messaging. It will ask the user to choose a nickname and then allow him/her to use it (no registration and password will be required).</p>
<h2>The Database</h2>
<table cellpadding="3">
<tr>
<td></td>
<td>Given these requirements, we will only need 2 tables. I am giving them in pseudo-SQL code:</p>
<p>Table <strong>users</strong>:<br />
id INT PRIMARY KEY<br />
username VARCHAR(30)<br />
last_action DATETIME</p>
<p>Table <strong>messages</strong>:<br />
id INT PRIMARY KEY<br />
user_id INT FOREIGN KEY to users.id<br />
message TEXT</td>
</tr>
</table>
<p>We will not require user registration but will still need to ask them to choose username. At the time of selecting it we will insert it into users table and will store it in session.</p>
<h2>The Chat Box</h2>
<p>The chat box contains two main parts &#8211; the text box where you enter messages and the area which shows the messages posted.</p>
<p>Here is the input code:</p>
<p>&lt;p&gt;&lt;textarea id=&#8221;myMessage&#8221;&gt;&lt;/textarea&gt;</p>
<p>&lt;input type=&#8221;button&#8221; value=&#8221;Send&#8221; onclick=&#8221;sendMessage();&#8221;&gt;&lt;/p&gt;</p>
<p>I&#8217;m leaving the formatting to you. Then there will be also a div where the latest 10 messages will be displayed:</p>
<p>&lt;div id=&#8221;chatArea&#8221;&gt;&lt;/div&gt;</p>
<h2>The Javascript Functions</h2>
<p>There are 2 javascript functions needed: one will send messages, the other will retrieve them from the DB. The second function will be called when the document is loaded and refreshed in 10 seconds interval. It will also be called immediately when you post a message so you can see your own message without any delay.</p>
<p>For easy work with Ajax and DOM, download and install <a href="http://jquery.com/">JQuery</a>. We will use the library in this tutorial.</p>
<pre>function sendMessage()
{
     $.ajax({
          type: "POST",
          url: "post.php",
          async: false,
          data: "message="+$("#myMessage").val(),
           success: function(msg){
                refreshChat();
           }
      });
}</pre>
<p>This simple function just sends your message. Note that the function has <strong>async:false</strong>. This is because we clearly want posting to happen prior to refreshing the chat.</p>
<p>And this one is loading the chats:</p>
<pre>function refreshChat()
{
      $.ajax({
          type: "POST",
          url: "chat.php",
           success: function(msg){
                $("#chatArea").html(msg);
           }
      });
}</pre>
<p>This function is pretty simple too: it gets the chats from chat.php and displays the returned HTML in chatArea.</p>
<p>You need also to ensure this function runs all the time even if the user performs no action. To do this add the following javascript somewhere at the bottom of the HTML page with the chat:</p>
<p>window.setInterval(&#8220;refreshChat()&#8221;,10000);</p>
<h2>The PHP Code</h2>
<p>The script for posting chat message should be something like this:</p>
<p>&lt;?php<br />
session_start();</p>
<p>$q=&#8221;INSERT INTO messages (user_id,message) VALUES (&#8216;$_SESSION[user_id]&#8216;,<br />
\&#8221;".addslashes($_POST['message']).&#8221;\&#8221;)&#8221;;</p>
<p>mysql_query($q);<br />
?&gt;</p>
<p>And the script which retrieves the last 10 chat messages:</p>
<p>&lt;?php</p>
<p>$q=&#8221;SELECT tM.*, tU.username as username<br />
FROM messages tM JOIN users tU<br />
ON tU.id=tM.user_id<br />
ORDER BY id DESC LIMIT 10&#8243;;<br />
$result=mysql_query($q);</p>
<p>while($row=mysql_fetch_array($result))<br />
{<br />
echo &#8220;&lt;p&gt;&#8221;.$row['username'].&#8221; says: &#8220;,nl2br($row['message']).&#8221;&lt;/p&gt;&#8221;;<br />
}<br />
?&gt;</p>
<p>Here in the query we join the two tables to get the username along with the message. The output of the script is sent directly to the javascript function.</p>
<h2>What To Do Further</h2>
<p>This is a very simple php ajax chat. The code is missing few things which you can add once you understand it and make it working:</p>
<ul>
<li>Add date/time to messages</li>
<li>Add error checking in case some query fails</li>
<li>Make sure the user does not post empty message (you can add validation code to the javascript functions.</li>
<li>Make sure the user does not enter malicious code in the chats</li>
<li>The tutorial does not include the user registration part. You will need to do it yourself.</li>
</ul>
<p>If you want to see similar script in action, check my <a href="http://calendarscripts.info/php-chat-script.html">free php chat software.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/php-ajax-shoutbox-tutorial/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Broadfast Autoresponder 2.1 Is Available</title>
		<link>http://blog.calendarscripts.info/broadfast-autoresponder-2-1-is-available/</link>
		<comments>http://blog.calendarscripts.info/broadfast-autoresponder-2-1-is-available/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:04:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CalendarScripts]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=23</guid>
		<description><![CDATA[The latest version of the PHP Autoresponder is available. Besides some nice UI updates, the most important new feature is the ability to assign one autoresponder to several mailing lists. This will give you more flexibility for your email marketing campaigns.]]></description>
			<content:encoded><![CDATA[<p>The latest version of the <a href="http://calendarscripts.info/php-auto-responder.html">PHP Autoresponder</a> is available. Besides some nice UI updates, the most important new feature is the ability to assign one autoresponder to several mailing lists. This will give you more flexibility for your email marketing campaigns.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/broadfast-autoresponder-2-1-is-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nice Testimonial Received about BF Autoresponder</title>
		<link>http://blog.calendarscripts.info/nice-testimonial-received-about-bf-autoresponder/</link>
		<comments>http://blog.calendarscripts.info/nice-testimonial-received-about-bf-autoresponder/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 16:51:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CalendarScripts]]></category>
		<category><![CDATA[bft]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[php autoresponder]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=20</guid>
		<description><![CDATA[Normally I don&#8217;t ask people for testimonials neither I did it this time. I consider my customer service very good, but I know I sometimes answer the support requests as a typical geek. So it always surprises me nicely when customer say such a nice thing. Mike Moyer is using the software for his Trade [...]]]></description>
			<content:encoded><![CDATA[<p>Normally I don&#8217;t ask people for testimonials neither I did it this time. I consider my customer service very good, but I know I sometimes answer the support requests as a typical geek. So it always surprises me nicely when customer say <a href="http://mikemoyer.org/2010/03/email-marketing-a-real-find/">such a nice thing</a>. </p>
<p>Mike Moyer is using the software for his <a href="http://www.tradeshowsamurai.com/">Trade Show Samurai</a> site in a live environment so this has been a great test for me as well. He even discovered a bug which is useful for everyone who will buy the autoresponder.</p>
<p>Thanks Mike, and wish you success with your project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/nice-testimonial-received-about-bf-autoresponder/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To Avoid Refund Requests and Chargebacks When Selling Downloadable Goods</title>
		<link>http://blog.calendarscripts.info/how-to-avoid-refund-requests-and-chargebacks-when-selling-downloadable-goods/</link>
		<comments>http://blog.calendarscripts.info/how-to-avoid-refund-requests-and-chargebacks-when-selling-downloadable-goods/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 21:23:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://blog.calendarscripts.info/?p=16</guid>
		<description><![CDATA[Some people are just pain and you can&#8217;t satisfy them. I&#8217;ve had customers who lost hours of my time asking how to install software, how to use it, what other services to use etc., and at the end they asked for refund because they can&#8217;t manage with the information. You can do very little with [...]]]></description>
			<content:encoded><![CDATA[<p>Some people are just pain and you can&#8217;t satisfy them. I&#8217;ve had customers who lost hours of my time asking how to install software, how to use it, what other services to use etc., and at the end they asked for refund because they can&#8217;t manage with the information. You can do very little with such freetards. The best you can do is either to recognize them at the beginning and refund them before they lost your time or to clearly state that they won&#8217;t get a refund and why (you need to have a refund policy or TOS on your site). Of course some can even file a chargeback, but that&#8217;s an exception.</p>
<p align="center"><a href="http://blog.calendarscripts.info/wp-content/uploads/2010/03/refund.jpg"><img src="http://blog.calendarscripts.info/wp-content/uploads/2010/03/refund.jpg" alt="Refund" title="refund" width="500" height="375" class="aligncenter size-full wp-image-18" /></a><br />
Photo by <a href="http://www.flickr.com/photos/drinksmachine/">drinksmachine</a></p>
<p>However there are many genuine customers who may also end up asking for refund because they are unsatisfied with your product or support. In this post I&#8217;ll tell you what I do to keep the percentage of such requests very low.</p>
<h2>Delivery Quickly</h2>
<p>The more your client has to wait, the bigger is the risk she will be unsatisfied and ask for refund. Sometimes the client will not do it immediately but will get dissatisfied when other small problems add up (some minor glitch in the software, hard to understand manual etc). Most people expect instant delivery on digital items and you should aim for that. If for some reason you can&#8217;t delivery instantly, it is a good idea to explain how long will it take to ship during the order process and/or in the thankyou email you send after the purchase.</p>
<h2>Make Clear and Detailed Descriptions of Your Products</h2>
<p>You don&#8217;t want people who don&#8217;t understand your product to buy it. Don&#8217;t think that you&#8217;ll make more sales by using superlatives and hiding the disadvantages of your product. The customers who don&#8217;t like it will ask for refund and will lose your time complaining that it is not what they expected. </p>
<p>At Calendarscrtips I place online demos of all the products I sell. This is the only way to be sure that customers can see exactly what they are buying. (Well some will not bother to look at the demo but buy and then scream it&#8217;s not what they expected. You can send such people to hell).</p>
<h2>Offer Good Support</h2>
<p>This is a common sense but it&#8217;s underestimated by many sellers. Many online products and especially software need to have technical support for bugs, problems or just to help people who can&#8217;t manage with the installation and usage.<br />
Instead of trying to test in every possible platform and hope you&#8217;ve covered them all, just offer good responsive support to these who have troubles. 99% of them will be happy after you help them and will not even think about refund.</p>
<h2>Manuals For Free</h2>
<p>If you are selling software, it&#8217;s a good idea to offer the installation and usage manual for free download even to non-customers. Many people will check it prior to purchasing to ensure they can manage. Don&#8217;t worry about those who will not buy because the manual looked scary to them. <strong>You don&#8217;t want them as customers.</strong> They will waste your time and at the end can still request a refund.</p>
<h2>Have a Forum</h2>
<p>If you have a forum where customers can talk to each other, discuss the software and the technical aspects of it, this will make them and the visitors a lot more confident that there is someone to help them.</p>
<p>I still don&#8217;t have a forum on CalendarScripts but I have a neat comment system for every product which seems to do the job of a forum at this time.</p>
<h2>Don&#8217;t Overprice and Don&#8217;t Go Too Cheap</h2>
<p>People are a lot more inclined to complain and ask for refund when they think your product is overpriced. On the other hand, too cheap products attract freetards who expect that you will be their tech support for free.</p>
<p>Try to price your products fairly &#8211; accordingly to the effort put in them and to the price of similar products in the market. This will reduce the refund requests.</p>
<h2>Be Reachable</h2>
<p>If you offer something more than just a contact form people will feel they are dealing with real person and will be more confident they can reach you when they have inquiries. The best thing is to give a toll free phone, although I don&#8217;t do it as I am not a big company and do my support myself (I don&#8217;t want to be called in the night). However I have published my Facebook visit card and Twitter account and that seems to work great.</p>
<p>These are the most important strategies I can think of at this moment. If you have other ideas, please share!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calendarscripts.info/how-to-avoid-refund-requests-and-chargebacks-when-selling-downloadable-goods/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
