<?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>Dave PC Guy &#187; PHP and Scripting</title>
	<atom:link href="http://www.davepcguy.com/archive/category/scripting/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.davepcguy.com</link>
	<description>Computers and Technology</description>
	<lastBuildDate>Fri, 10 Sep 2010 15:43:14 +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>Some useful PHP functions</title>
		<link>http://www.davepcguy.com/archive/some-useful-php-functions/</link>
		<comments>http://www.davepcguy.com/archive/some-useful-php-functions/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 01:10:58 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=1189</guid>
		<description><![CDATA[Recently, I have noticed that I use the same exact functions over and over again in PHP. I&#8217;ve actually set-up a complete function list that I tend to include in all of my projects. Here is an overview of some of them. Let&#8217;s connect You will need to connect to your database from time to]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=functions,php,programming" height="61" width="50" /><br />
			</a>
		</div>
<p>Recently, I have noticed that I use the same exact functions over and over again in PHP. I&#8217;ve actually set-up a complete function list that I tend to include in all of my projects. Here is an overview of some of them.</p>
<h2>Let&#8217;s connect</h2>
<p>You will need to connect to your database from time to time. It is important to do that in most projects that deal with MySQL, and you&#8217;ll probably do it frequently, on every page. Now, you can either delete that &#8220;<strong>function CustomConnect</strong>&#8221; and the braces and simply <strong>include()</strong> this part as a file orrr, just add this to your function list and call it up whenever you need it:</p>
<p><span id="more-1189"></span></p>
<pre class="brush: php;">function CustomConnect () {

// MySQL variables
$host = 'localhost';
$user = 'username';
$pass = 'password';
$db = 'database';

//connect
global $connection;
$connection = mysql_connect($host, $user, $pass) or die (&quot;Unable to connect!&quot;);
//database select
mysql_select_db($db) or die (&quot;Unable to select database!&quot;);
}
</pre>
<p>I have used this function numerous times before and yes, it works. This is the standard MySQL connection. I set up the variable <strong>$connection </strong>as <strong>global</strong> so that variable can be used outside of the function. Why do we need that? You will need that for your <strong>mysql_close() </strong>function where you will use <strong>$connection </strong>as your argument variable (inside the parentheses). That will, obviously, close the connection to the mysql database.</p>
<p>Change the username, password, and database according to your own website. Tweak the function as needed. I found it bare-boned and just as I need it for my purposes but you can add default variables, make it more of a &#8220;function&#8221; if you catch my drift.</p>
<h2>Let&#8217;s Authenticate</h2>
<p>Authentication is essential when creating an admin-side for a website. What does it mean? It means that PHP checks if you are, indeed, the logged in user, and if you have permission to see the site. The PHP is rather simple but effective!</p>
<pre class="brush: php;">function Authenticate () {
session_start();

if (!$_SESSION['auth'] == 1 || isset($_GET['logout'])) {
    // check if authentication was performed
    // else die with error
	session_destroy();
	header(&quot;Location: login.php&quot;);
}

}
</pre>
<p>First, we start a session, this tells the server that we are going to use a session. Next, with an &#8220;if&#8221; loop, we check if the session variable &#8220;auth&#8221; is set to one, change this however you need to to indicate that a user is logged in. The <strong>$_SESSION['']</strong> variable, if you did not know already, stores variable and information between pages. That means that you don&#8217;t need to keep using a &#8220;post&#8221; form to pass the data along. All of it is there in the session, and can be called up whenever.</p>
<p>As you can see, if either the authentication is not set or the <strong>$_GET['logout']</strong> variable is set, you will be redirected to login.php. Basically, this is how you log out! <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  You can set up a button or a link to make this work.</p>
<p>This, again, is a bare-boned function. You can add global variables to call on the session variable <strong>username</strong> or other information.</p>
<h2>Let&#8217;s Validate</h2>
<p>This part is a bit harder.The way I validate is lengthy and redundant, very redundant. Perhaps even wasteful but it works for me and I can sleep soundly because everything is validate correctly. I set up SEVERAL functions to do this:</p>
<pre class="brush: php;">

function isEmailAddress($value) {
        return eregi('^([a-z0-9])+([\.a-z0-9_-])*@([a-z0-9_-])+(\.[a-z0-9_-]+)*\.([a-z]{2,6})$', $value);
    }

function isAlpha($value) {
        return preg_match('/^[a-zA-Z]+$/', $value);
    }
function Alphanum ($value) {
		return preg_match(&quot;/^[a-z0-9]+([\\s]{1}[a-z0-9]|[a-z0-9])+$/i&quot;, $value);
	}

function name ($var) {
	if (!isAlpha($var)){
	return TRUE;
	}
}

function email ($var) {
	if (!isset($var)){
	return TRUE;
	}
	if (empty($var)){
	return TRUE;
	}
	if (trim($var) == ''){
	return TRUE;
	}
	if (isEmailAddress($var) == 0){
	return TRUE;
	}
}
function message ($var) {
	if (!isset($var)){
	return TRUE;
	}
	if (empty($var)){
	return TRUE;
	}
	if (trim($var) == ''){
	return TRUE;
	}
</pre>
<p>I told you it was lengthy! All these functions are essential, you may combine some of the &#8220;if&#8221; statements together with an || or &amp;&amp; but I like to keep them separate. As you can see, there are two separate functions above that check for an e-mail address, this is done with pattern recognition. The next function <strong>isAlpha</strong> does the same but only for alpha characters, <strong>Alphanum</strong> does the same except that it includes numeric characters. The next three functions (<strong>name, email, </strong>and <strong>message</strong>) combine these along with a few &#8220;if&#8221; statements that check that data has, indeed been submitted via empty($var), trim($var), and other functions already included within PHP. Notice that you will be returned a <strong>TRUE </strong>value for all of these, meaning that if something is wrong, the result will be true. Use it like this:</p>
<pre class="brush: php;">
if (message($_GET['submittedmessage'])) { echo &quot;Something is wrong&quot;;}
</pre>
<p>And that&#8217;s it. If something is wrong, PHP will be echo out &#8220;Something is wrong&#8221;.</p>
<h2>Let&#8217;s show some stuff</h2>
<p>I like to keep handy one other function that deals with showing the latest entries in a MySQL database. I call it the &#8220;<strong>ShowComments</strong>&#8221; function because that is what I originally used it for. You will have to set up this function for each site you&#8217;ll use (ie. the rows and stuff like that) but here is what mine generally looks like:</p>
<pre class="brush: php;">
function ShowComments ($var, $where = '') {

$query = &quot;SELECT * FROM database_name $where ORDER BY id DESC&quot;;

    // execute query
    $result = mysql_query($query) or die (&quot;Error in query: $query. &quot;.mysql_error());

	if (mysql_num_rows($result) &gt; 0) {
				$x = 1;
		while($row = mysql_fetch_row($result) AND $x &lt;= $var) :
			$link = $_SERVER['PHP_SELF'].&quot;?id=&quot;.$row[0];
       		echo &quot;&lt;p id=\&quot;to\&quot;&gt;To: &quot;.stripslashes($row[1]).&quot;&lt;/p&gt;&quot;;
        	echo &quot;&lt;p id=\&quot;message\&quot;&gt;&quot; .stripslashes($row[2]).&quot;&lt;/p&gt;&quot;;
			echo &quot;&lt;p id=\&quot;linktime\&quot;&gt;&lt;a href=&quot;.$link.&quot; title=\&quot;permalink&quot;.$row[0].&quot;\&quot;&gt;permalink&lt;/a&gt;  &quot;;
			echo substr($row[3], 0, 10).&quot;&lt;/p&gt;&quot;;
			echo &quot;&lt;/div&gt;
			&quot;;
			$x++;
		endwhile;
	}
}
</pre>
<p>I used this function on one of my latest projects (so ignore the id&#8217;s). You can add another parameter into the function to change table names on the go but I usually use this for only one table, such as comments, or a feed. I added the <strong>$where</strong> part so that I can pick out specific rows rather than just all of them at once. Note that you will have to write the entire &#8220;where&#8221; statement ie. <strong>WHERE id=4</strong> not just <strong>id=4</strong>, okay? Good.</p>
<p>Here&#8217;s an example of how I used it:</p>
<pre class="brush: php;">
&lt;?php
if (!isset($_GET['id'])) {
ShowComments(5);
}
else {
$id = mysql_real_escape_string($_GET['id']);
ShowComments(1, &quot;WHERE id='$id'&quot;);
}
</pre>
<p>Notice how I used it two separate times. Once to show the fave latest comments, the second time to show one specific comment with a specific (escaped) id.</p>
<p>Well, this is it. I hope these functions gave you some insight on how you can speed up your work! <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong><br />
</strong></p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;title=Some%20useful%20PHP%20functions&amp;bodytext=Recently%2C%20I%20have%20noticed%20that%20I%20use%20the%20same%20exact%20functions%20over%20and%20over%20again%20in%20PHP.%20I%27ve%20actually%20set-up%20a%20complete%20function%20list%20that%20I%20tend%20to%20include%20in%20all%20of%20my%20projects.%20Here%20is%20an%20overview%20of%20some%20of%20them.%0D%0ALet%27s%20connect%0D%0AYou%20will%20need%20to" title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;title=Some%20useful%20PHP%20functions&amp;notes=Recently%2C%20I%20have%20noticed%20that%20I%20use%20the%20same%20exact%20functions%20over%20and%20over%20again%20in%20PHP.%20I%27ve%20actually%20set-up%20a%20complete%20function%20list%20that%20I%20tend%20to%20include%20in%20all%20of%20my%20projects.%20Here%20is%20an%20overview%20of%20some%20of%20them.%0D%0ALet%27s%20connect%0D%0AYou%20will%20need%20to" title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;t=Some%20useful%20PHP%20functions" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;title=Some%20useful%20PHP%20functions&amp;annotation=Recently%2C%20I%20have%20noticed%20that%20I%20use%20the%20same%20exact%20functions%20over%20and%20over%20again%20in%20PHP.%20I%27ve%20actually%20set-up%20a%20complete%20function%20list%20that%20I%20tend%20to%20include%20in%20all%20of%20my%20projects.%20Here%20is%20an%20overview%20of%20some%20of%20them.%0D%0ALet%27s%20connect%0D%0AYou%20will%20need%20to" title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;title=Some%20useful%20PHP%20functions&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=Recently%2C%20I%20have%20noticed%20that%20I%20use%20the%20same%20exact%20functions%20over%20and%20over%20again%20in%20PHP.%20I%27ve%20actually%20set-up%20a%20complete%20function%20list%20that%20I%20tend%20to%20include%20in%20all%20of%20my%20projects.%20Here%20is%20an%20overview%20of%20some%20of%20them.%0D%0ALet%27s%20connect%0D%0AYou%20will%20need%20to" title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;title=Some%20useful%20PHP%20functions" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;t=Some%20useful%20PHP%20functions&amp;s=Recently%2C%20I%20have%20noticed%20that%20I%20use%20the%20same%20exact%20functions%20over%20and%20over%20again%20in%20PHP.%20I%27ve%20actually%20set-up%20a%20complete%20function%20list%20that%20I%20tend%20to%20include%20in%20all%20of%20my%20projects.%20Here%20is%20an%20overview%20of%20some%20of%20them.%0D%0ALet%27s%20connect%0D%0AYou%20will%20need%20to" title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Some%20useful%20PHP%20functions%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Some%20useful%20PHP%20functions&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Some%20useful%20PHP%20functions&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsome-useful-php-functions%2F&amp;title=Some%20useful%20PHP%20functions" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/some-useful-php-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Blogging System (Part 2)</title>
		<link>http://www.davepcguy.com/archive/creating-a-blogging-system-part-2/</link>
		<comments>http://www.davepcguy.com/archive/creating-a-blogging-system-part-2/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 22:24:36 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=1079</guid>
		<description><![CDATA[Okay, in my first tutorial, you learned about creating an install script for your blog as well as the entry form that will add your blogs. In this tutorial, I&#8217;ll teach you how to parse the data out for your audience and how to edit your entries. /* LET'S GET STARTED! */ Show off your]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=blog,functions,mysql,php,server" height="61" width="50" /><br />
			</a>
		</div>
<p>Okay, in my first <a title="blogging system part1" href="http://www.davepcguy.com/archive/creating-a-blogging-system-part-1/">tutorial</a>, you learned about creating an install script for your blog as well as the entry form that will add your blogs.</p>
<p>In this tutorial, I&#8217;ll teach you how to parse the data out for your audience and how to edit your entries.</p>
<pre class="brush: php;">
/* LET'S GET STARTED! */
</pre>
<p><span id="more-1079"></span><br />
</p>
<h1>Show off your stuff!</h1>
<p>Haha, let&#8217;s get into how to show your blog posts to your readers. First, we need some pagination. Search for some scripts or tutorials on google and see if you can find anything. We all like different styles of pagination, and I&#8217;m not particularly awesome in custom paginating. If you can&#8217;t find anything good, use <a title="pagination" href="http://www.phpeasystep.com/phptu/29.html">the code I use</a>, just don&#8217;t use the styles, you can create your own.</p>
<p>If you&#8217;re using the script I do, or some other one that&#8217;s similar, you won&#8217;t have any trouble following this tutorial. Actually, you won&#8217;t have any trouble doing that anyways. Just make sure that the last MySQL query before the <strong>while() </strong>loop looks something like this:</p>
<pre class="brush: php;">
$sql = &quot;SELECT * FROM $tbl_name ORDER BY id DESC LIMIT $start, $limit&quot;;
</pre>
<p>The important part of the query that we&#8217;re looking for is that &#8220;<strong>ORDER BY id DESC</strong>&#8221; part, it tells mysql to place the highest id in the front and the lowest in the back ie. the most recent posts will show at the beginning. The rest is up to the actual pagination script. If it doesn&#8217;t use limits, don&#8217;t worry about it. If you&#8217;re experiencing MySQL errors because of this, place the command elsewhere in the query, it should be close to the table_name selector.</p>
<p>Let&#8217;s move onto the <strong>while()</strong> loop. Every paginating script should ask you for the while loop, so let&#8217;s show them what we&#8217;ve got:</p>
<pre class="brush: php;">
	while($row = mysql_fetch_row($result)) {
		$content = stripslashes($row[3]);
		echo &quot;&lt;h1&gt;$row[1]&lt;/h1&gt;&quot;;
		echo &quot;&lt;h2&gt;$row[2]&lt;/h2&gt;&quot;;
		echo &quot;&lt;p&gt;.&quot;.$content.&quot;&lt;/p&gt;&quot;;
		echo &quot;&lt;br /&gt;&quot;;

	}
</pre>
<p>Simple enough? Let me explain it. The stuff inside the {} curly braces will repeat WHILE the stuff inside the () is true. Basically as long as there&#8217;s data present, what happens inside the curly braces will loop over and over. The insides of () basically mean that we&#8217;re storing data in the $row variable that corresponds to the $result from the previous $sql query. The function <strong>mysql_fetch_row</strong> just fetches the data and in the process puts it in the $row variable.</p>
<p>Do you remember our install script? This is what it looked like for our blog table:</p>
<pre class="brush: php;">
$query = &quot;CREATE TABLE blog
(
id int NOT NULL auto_increment primary key,
title blob NOT NULL,
date blob NOT NULL ,
content text NOT NULL
)&quot;;
</pre>
<p>Now, since in the computer language we start counting with 0 and not 1, it makes things a bit confusing. So column zero is id, column one is title etc. The inside of the while loop tells us to put column one as a title between &lt;h1&gt; tags, column two is the date and goes into &lt;h2&gt;tags, and column three is the content and goes into the &lt;p&gt; tags.</p>
<p>Now, I&#8217;ll assume that in my previous tutorial, you used the function <strong>mysql_real_escape_string()</strong> for escaping dangerous characters with the &#8220;\&#8221; backslash. Here&#8217;s where a problem arises. If you didn&#8217;t use the <strong>stripslashes()</strong> function you&#8217;d end up with something like this (example):</p>
<blockquote>
<h1>Here\&#8217;s the title</h1>
<h2>18-01-2010</h2>
<p>Here\&#8217;s the content of the blog. Aren\&#8217;t you excited? \:\)</p></blockquote>
<p>Okay, I don&#8217;t really think the smiley would be escaped like that but it could be! I don&#8217;t even bother with the rules anymore because it&#8217;s a lot easier to get it escaped with the function. The <strong>stripslashes()</strong> function is the opposite of the mysql_real_escape_string() function because all it does is take out the backslashes so the content looks proper. Remember that! It&#8217;s really important because you&#8217;ll be escaping A TON of strings!</p>
<p>But that&#8217;s it, give it some styling and you&#8217;ll have a lovely blog! <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1>Editing your Entries</h1>
<p>So, you can write and post blogs. Now what? Well, it&#8217;d be nice if you could edit those blogs just in case you made mistake, right?<br />
Well, let&#8217;s get on that. First, you&#8217;ll need to use the pagination script you used above in the SAME WAY, except with a different<strong> while()</strong> loop and some html before the loop. You can add this to the previous blog admin page where you added entries to the blog. It&#8217;s what I did.</p>
<p>Okay, so add the pagination script and this is what the while loop and the surrounding area looks like:</p>
<pre class="brush: php;">
&lt;?php
	echo &quot;&lt;table cellpadding=10 border=1&gt;&quot;;
	echo &quot;&lt;tr&gt;&quot;;
	echo &quot;&lt;td&gt;Id &lt;/td&gt;&quot;;
	echo &quot;&lt;td&gt;Title&lt;/td&gt;&quot;;
	echo &quot;&lt;td&gt;Date&lt;/td&gt;&quot;;
	echo &quot;&lt;td&gt;Delete&lt;/td&gt;&quot;;
	echo &quot;&lt;td&gt;Edit&lt;/td&gt;&quot;;
	echo &quot;&lt;/tr&gt;&quot;;

	while($row = mysql_fetch_row($result)) {
		$id = $row[0];
		echo &quot;&lt;tr&gt;&quot;;
        echo &quot;&lt;td&gt;$row[0]&lt;/td&gt;&quot;;
        echo &quot;&lt;td&gt;$row[1]&lt;/td&gt;&quot;;
        echo &quot;&lt;td&gt;$row[2]&lt;/td&gt;&quot;;
		echo &quot;&lt;td&gt;&lt;a href=\&quot;&quot;.$_SERVER['PHP_SELF'].&quot;?cmd=delete&amp;id=&quot;.$id.&quot;\&quot;&gt;Delete&lt;/a&gt;&lt;/td&gt;&quot;;
		echo &quot;&lt;td&gt;&lt;a href=\&quot;blogedit.php?id=&quot;.$id.&quot;\&quot;&gt;Edit&lt;/a&gt;&lt;/td&gt;&quot;;
		echo &quot;&lt;/tr&gt;&quot;;

	}
	echo &quot;&lt;/table&gt;&quot;;
?&gt;
</pre>
<p>Alright, what this basically does is create a table with the headings: id, title, date, delete, and edit. To that correspond the correct rows. Notice that I did not use <strong>stripslashes()</strong> on the entries, why? Because I honestly don&#8217;t care. You can use them, but for me, I just need to know the correct blog title, date, etc.</p>
<p>Onto, <strong>delete. </strong>Notice the URL, you&#8217;ll be adding &#8220;cmd=delete&amp;id=$id&#8221; to your original URL. What that is is basically manually adding GET information. Why do I do it this way? It&#8217;s easier than creating a complicated form with hidden values just for a pretty &#8220;delete&#8221; submit button. Next, you&#8217;ll notice that I&#8217;m doing the same thing with the GET but this time I am redirecting my page to a separate blogedit.php with the id information.</p>
<p>Let&#8217;s see how we can use that delete link first. I&#8217;m going to add a script at the beginning of the file that will DELETE this specific entry from the database.</p>
<pre class="brush: php;">
if ($_GET['cmd'] == &quot;delete&quot;)
{
	$id = $_GET['id'];
	$sql = &quot;DELETE FROM blog WHERE id=&quot;.$id;
    $result = mysql_query($sql);
    echo &quot;Blog &quot;.$id.&quot; deleted!&quot;;
}
</pre>
<p>What this says is basically that if the &#8220;cmd&#8221; $_GET variable is equal to &#8220;delete&#8221; then execute the loop. Inside the loop I defined the $id variable and used an SQL query that delete the entry. Notice that I did not mysql_real_escape_string() the $id variable. Once again, I am hoping that you know what you&#8217;re doing and that you won&#8217;t be purposely SQL injecting and messing up your database.</p>
<p>If you want more assurance that this got done (ie. the blog post got delete), you can make a separate if statement inside:</p>
<pre class="brush: php;">
if (isset($result)) {
     echo &quot;Blog &quot;.$id.&quot; deleted!&quot;;
}
else {
   echo &quot;Blog post: &quot;.$id.&quot; not deleted!&quot;;
}
</pre>
<p>Let&#8217;s move onto blogedit.php. Don&#8217;t forget to include the connection.php file.</p>
<p>This part should be pretty easy. Let&#8217;s start with a loop asking if you&#8217;re even on the right page (with the right information) and processing the data.</p>
<pre class="brush: php;">
if (isset($_GET['id'])){
		$id = mysql_real_escape_string($_GET['id']);
		$sql = &quot;SELECT * FROM blog WHERE id = '$id'&quot;;
		$result = mysql_query($sql) or die (&quot;Error in query: $query. &quot;.mysql_error());
		$row = mysql_fetch_row($result);
		}
</pre>
<p>This bit takes care of all the information. So yay! We&#8217;ve already executed the SQL to get the data and fetched it and stored inside the $row variable. I&#8217;ve mysql_real_escape_string() this one, but once again, it&#8217;s all up to you as to what you escape and what you don&#8217;t.With this done, we can move on to parse out the information in an editable form.</p>
<p>I want to be able to edit the blog the same way I edit in wordpress, or the way I add the blog. I just want the information to show up inside the appropriate fields!</p>
<p>Well, here&#8217;s how you do it:</p>
<pre class="brush: xml;">
   &lt;h2&gt;ID = &lt;?php echo $row[0];?&gt;&lt;/h2&gt;
    &lt;h2&gt;DATE = &lt;?php echo $row[2];?&gt;&lt;/h2&gt;
    &lt;form method=&quot;post&quot; action=&quot;&lt;?php echo $_SERVER['PHP_SELF'];?&gt;&quot;&gt;
    &lt;input type=&quot;text&quot; name=&quot;title&quot; value=&quot;&lt;?php echo $row[1]; ?&gt;&quot; size=&quot;100&quot; / &gt;&lt;br /&gt;
    &lt;textarea rows=&quot;25&quot; cols=&quot;125&quot; name=&quot;content&quot;&gt;&lt;?php echo stripslashes($row[3]);?&gt;&lt;/textarea&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;&lt;?php echo $row[0];?&gt;&quot; /&gt;
    &lt;br /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;update&quot; value=&quot;Update&quot; /&gt;
    &lt;/form&gt;
</pre>
<p>Okay, first things first. I want the blog ID and Date. Echo it out, done! Next, we&#8217;ll create a form with a self action and with the post method (just like in the first tutorial, we don&#8217;t want long URLs because of GET requests). Next, we&#8217;ll use the same form we did for the blog entry form but, we add the corresponding values. Notice that I used stripslashes() for the content again. You don&#8217;t want to get everything double slashed in the end, you&#8217;d have to double stripslashes() for your readers. Anyways, i think the rest is self-explanatory. The data will show up in the appropriate fields, you can add it and press &#8220;update&#8221; to get everything done.</p>
<p>NEXT! The loop that will make ALL of this happen:</p>
<pre class="brush: php;">
if (isset($_POST['update'])) {
		$id = mysql_real_escape_string($_POST['id']);
		$title = mysql_real_escape_string($_POST['title']);
		$content = mysql_real_escape_string($_POST['content']);
		$sql = &quot;UPDATE blog SET title = '$title', content = '$content' WHERE id = '$id'&quot;;
		$result = mysql_query($sql) or die (&quot;Error in query: $query. &quot;.mysql_error());

		if ($result) {
			echo &quot;Blog id = $id updated&quot;;
		}

}
</pre>
<p>Yep, whenever you press that pretty &#8220;update&#8221; button, this will take place. The blog gets update with everything escaped as it should be. And, look! I finally have that $result loop there! It looks like even I learned something from this tutorial <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1>What&#8217;s up next?</h1>
<p>Well, in my next tutorial. I will FINALLY cover the login system and authorization stuff. It&#8217;s pretty easy but I want everyone to digest this info and ask away if you need anything!</p>
<h1>STUFF TO REMEMBER</h1>
<ul>
<li>Put <strong>include(connection.php); </strong>at the beginning of every SQL using file!</li>
<li>The <strong>while() </strong>loop puts all that data from your database to use!</li>
<li>MySQL columns are marked starting with ZERO, NOT ONE!</li>
<li>Use the <strong>stripslashes() </strong>function to counteract <strong>mysql_real_escape_string()</strong> function!</li>
<li>The ?id=23&amp;cmd=edit blah blah stuff is manually inserted GET variable information</li>
<li>Put all of the loops that do the hard work at the BEGINNING of the page!</li>
</ul>




Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;title=Creating%20a%20Blogging%20System%20%28Part%202%29&amp;bodytext=Okay%2C%20in%20my%20first%20tutorial%2C%20you%20learned%20about%20creating%20an%20install%20script%20for%20your%20blog%20as%20well%20as%20the%20entry%20form%20that%20will%20add%20your%20blogs.%0D%0A%0D%0AIn%20this%20tutorial%2C%20I%27ll%20teach%20you%20how%20to%20parse%20the%20data%20out%20for%20your%20audience%20and%20how%20to%20edit%20your%20entries.%0D%0A" title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;title=Creating%20a%20Blogging%20System%20%28Part%202%29&amp;notes=Okay%2C%20in%20my%20first%20tutorial%2C%20you%20learned%20about%20creating%20an%20install%20script%20for%20your%20blog%20as%20well%20as%20the%20entry%20form%20that%20will%20add%20your%20blogs.%0D%0A%0D%0AIn%20this%20tutorial%2C%20I%27ll%20teach%20you%20how%20to%20parse%20the%20data%20out%20for%20your%20audience%20and%20how%20to%20edit%20your%20entries.%0D%0A" title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;t=Creating%20a%20Blogging%20System%20%28Part%202%29" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;title=Creating%20a%20Blogging%20System%20%28Part%202%29&amp;annotation=Okay%2C%20in%20my%20first%20tutorial%2C%20you%20learned%20about%20creating%20an%20install%20script%20for%20your%20blog%20as%20well%20as%20the%20entry%20form%20that%20will%20add%20your%20blogs.%0D%0A%0D%0AIn%20this%20tutorial%2C%20I%27ll%20teach%20you%20how%20to%20parse%20the%20data%20out%20for%20your%20audience%20and%20how%20to%20edit%20your%20entries.%0D%0A" title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;title=Creating%20a%20Blogging%20System%20%28Part%202%29&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=Okay%2C%20in%20my%20first%20tutorial%2C%20you%20learned%20about%20creating%20an%20install%20script%20for%20your%20blog%20as%20well%20as%20the%20entry%20form%20that%20will%20add%20your%20blogs.%0D%0A%0D%0AIn%20this%20tutorial%2C%20I%27ll%20teach%20you%20how%20to%20parse%20the%20data%20out%20for%20your%20audience%20and%20how%20to%20edit%20your%20entries.%0D%0A" title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;title=Creating%20a%20Blogging%20System%20%28Part%202%29" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;t=Creating%20a%20Blogging%20System%20%28Part%202%29&amp;s=Okay%2C%20in%20my%20first%20tutorial%2C%20you%20learned%20about%20creating%20an%20install%20script%20for%20your%20blog%20as%20well%20as%20the%20entry%20form%20that%20will%20add%20your%20blogs.%0D%0A%0D%0AIn%20this%20tutorial%2C%20I%27ll%20teach%20you%20how%20to%20parse%20the%20data%20out%20for%20your%20audience%20and%20how%20to%20edit%20your%20entries.%0D%0A" title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Creating%20a%20Blogging%20System%20%28Part%202%29%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Creating%20a%20Blogging%20System%20%28Part%202%29&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Creating%20a%20Blogging%20System%20%28Part%202%29&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-2%2F&amp;title=Creating%20a%20Blogging%20System%20%28Part%202%29" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/creating-a-blogging-system-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creating a Blogging system (part 1)</title>
		<link>http://www.davepcguy.com/archive/creating-a-blogging-system-part-1/</link>
		<comments>http://www.davepcguy.com/archive/creating-a-blogging-system-part-1/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 02:26:53 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=1070</guid>
		<description><![CDATA[Some time ago (a couple weeks), I created my own blogging system. No one told me how to do it and I didn&#8217;t read any tutorials on how to do it either so there were a few things I learned the hard way. As you know, Blogs are database-based, they&#8217;re all entries in a table.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=blog,functions,HTML%2FCSS,mysql,php,server" height="61" width="50" /><br />
			</a>
		</div>
<p>Some time ago (a couple weeks), I created my own blogging system. No one told me how to do it and I didn&#8217;t read any tutorials on how to do it either so there were a few things I learned the hard way. As you know, Blogs are database-based, they&#8217;re all entries in a table.</p>
<p>You have an entry for the id, date, the content, and miscellaneous other information such as tags, and description. In this tutorial, I&#8217;d like to teach you how to do all that.</p>
<pre class="brush: php;">
/* LET'S GET STARTED!*/
</pre>
<p><span id="more-1070"></span><br />
</p>
<h1>Creating The Table</h1>
<p>For this tutorial, you&#8217;ll have to have your own database, and username. Set up a <a title="Setting up Part 1" href="http://www.davepcguy.com/archive/setting-up-part-1/">home server</a>, with WAMP, XAMPP or whatever else. Once you have that done, create that database, I&#8217;ll call mine &#8220;blog&#8221;.</p>
<p>I&#8217;m not going to get into how to do that, because if you&#8217;re doing this on a server online, you&#8217;ll need special instructions. Google it and set it up.</p>
<p>So, let&#8217;s create an INSTALL script. Make sure that when you use this script, delete it right after:</p>
<pre class="brush: php;">
&lt;?php

if (!isset($_POST['submit'])) {
?&gt;
&lt;form method=&quot;post&quot; action=&quot;&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;&quot;&gt;
&lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Install&quot;&gt;
&lt;/form&gt;

&lt;?php
}
</pre>
<p>This creates an installing button. This is only for convenience. I don&#8217;t like scripts that automatically add new tables and such without control.</p>
<pre class="brush: php;">
else {
include ('connection.php');
</pre>
<p>This little bit will connect you to the database. Here&#8217;s what my connection.php looks like:</p>
<pre class="brush: php;">
&lt;?php
// MySQL variables
$host = 'localhost';
$user = 'username';
$pass = 'password';
$db = 'blog';

//connect
$connection = mysql_connect($host, $user, $pass) or die (&quot;Unable to connect!&quot;);
//database select
mysql_select_db($db) or die (&quot;Unable to select database!&quot;);
?&gt;
</pre>
<p>Great, now you&#8217;re in the system (btw, you&#8217;ll have to make your own username, password, database, and all that, just like I said you&#8217;d have to do. Let&#8217;s move on to creating your administration for your site:</p>
<pre class="brush: php;">
//creating a user table
$query = &quot;CREATE TABLE users
(
name varchar(15),
pass varchar(255)
)&quot;;

$result = mysql_query($query) or die (&quot;Error in query: $query. &quot;.mysql_error());

//making the user name
$password = md5('password you want to use');
$query=&quot;INSERT INTO users (name, pass)
VALUES
('admin', '$password')&quot;;

//query
$result = mysql_query($query) or die (&quot;Error in query: $query. &quot;.mysql_error());
</pre>
<p>Great, now you have a database entry for your user (that&#8217;s you!), I won&#8217;t get into having multiple users, right now. So bear with me. I&#8217;m using a md5 hash to make the password a bit harder to crack. Also, I&#8217;m using the usual &#8220;admin&#8221; for username. Let&#8217;s move on to the blog table:</p>
<pre class="brush: php;">
//creating a blog table
 $query = &quot;CREATE TABLE blog
(
id int NOT NULL auto_increment primary key,
title blob NOT NULL,
date blob NOT NULL ,
content text NOT NULL
)&quot;;
    // execute query
    $result = mysql_query($query) or die (&quot;Error in query: $query. &quot;.mysql_error());

$query = &quot;INSERT INTO blog (title, date, content) VALUES ('Welcome', 'May 5th', 'First blog entry! Aren\'t you excited?');
&quot;;
	// execute query
    $result = mysql_query($query) or die (&quot;Error in query: $query. &quot;.mysql_error());

mysql_close($connection);
echo &quot;Done&quot;;

}
</pre>
<p>With this, we just created a simple blog table that will have a specific id, date, title, and content. We&#8217;ve also added a dummy entry (with a date format I won&#8217;t be using by the way).<br />
If you&#8217;re wondering about the backslash in the word &#8220;Aren&#8217;t&#8221;, don&#8217;t wonder anymore. A backslash is used to &#8220;escape&#8221; characters that may hold a different meaning in the world of programming languages.<br />
For example, if I did not escape that character, I would probably get an error where the MySQL wonders what the &#8220;t you excited?&#8221; is about since the entry ended at &#8220;aren&#8217;&#8221;.</p>
<p>Before we go on, I would like to seriously address this. The best way to avoid an error is to use a well-known php function <strong>mysql_real_escape_string()</strong>. This function will automatically add backslashes to all potentially problematic characters. Also, if you use this function, don&#8217;t add extra backslashes because the function will escape those as well. There&#8217;s only one problem with that function but I&#8217;ll show you the solution later on.</p>
<h1>Coding the Entry</h1>
<p>Now, you&#8217;ll notice that while coding the entry, I&#8217;m leaving the system open to vulnerabilities, but that&#8217;s okay. Why is it okay? Well, unless you&#8217;re logged in, you won&#8217;t be able to get into the system. So you should be the only one who gets in there and adds entries.</p>
<p>You can screw up your entries by dropping tables and whatnot if you want to, but I&#8217;ll assume you won&#8217;t be making any crazy MySQL stuff. Also, you&#8217;ll have the above-mentioned function to protect you from any unfortunate mistakes.</p>
<p>First add the connection.php file using the <strong>include()</strong> function. Second, let&#8217;s create the form:</p>
<pre class="brush: xml;">
&lt;h2&gt;Add Blog Post&lt;/h2&gt;
     &lt;form method=&quot;post&quot; action=&quot;&lt;?php echo $_SERVER['PHP_SELF'];?&gt;&quot;&gt;
    &lt;input type=&quot;text&quot; name=&quot;title&quot; size=&quot;50&quot; / &gt;&lt;br /&gt;
    &lt;textarea name=&quot;content&quot; cols=&quot;150&quot; rows=&quot;20&quot;&gt;&lt;/textarea&gt;
    &lt;br /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;addpost&quot; value=&quot;Add Post!&quot; /&gt;
    &lt;/form&gt;
</pre>
<p>Place this in the body of your html file, I know it sounds redundant and you should know about this stuff but I&#8217;m just making sure. What this form will do is send some information using the &#8220;post&#8221; method (ie. no URL mumbo jumbo like this: ?dkjw=fsjklwe&amp;fjskl=ewjk) No one wants a three thousand character URL up there (what browser would support that anyways?). You have two separate pieces of information: textarea (where your content goes) and input type=&#8221;text&#8221; (that&#8217;s the title). Anyways, put the next piece of code inside the &lt;head&gt; tag, or at least above the form.</p>
<pre class="brush: php;">if (isset($_POST['addpost'])) {
		$title = mysql_real_escape_string($_POST['title']);
		$content = mysql_real_escape_string($_POST['content']);
		$date = mysql_real_escape_string(date('m-d-Y'));
		$sql = &quot;INSERT INTO blog (title, date, content) VALUES ('$title', '$date', '$content')&quot;;
		$result = mysql_query($sql) or die (&quot;Error in query: $query. &quot;.mysql_error());

		if ($result) {
			echo &quot;Blog id = &quot;.$id.&quot; updated&quot;;
		}

}
</pre>
<p>Well, that&#8217;s some good stuff. The submit button in the form sent the post variable name &#8220;addpost&#8221; with the value &#8220;Add Post!&#8221;. The loop above goes into motion right when that post variable is submitted. I escaped all the strings just in case. Oh, if you didn&#8217;t know, you can use html, css, and all that other stuff in your posts. It won&#8217;t screw up anything, I promise <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Anyways, you can see I used a date function to specify the date the blog was submitted. <a title="date function PHP manual" href="http://php.net/manual/en/function.date.php">Read </a>up more about it if you want to use a different time stamp. This one looks like this &#8220;1-13-2010&#8243;. We then added all the values we needed into the database. And voila, we just added our first entry!</p>
<h1>What&#8217;s next?</h1>
<p>In my next tutorial, I&#8217;ll show you how to correctly show all that data! I&#8217;ll also get into how to protect your administration sites and how to create the login site too.</p>
<h1>STUFF TO REMEMBER</h1>
<ul>
<li>MySQL uses a lot of special characters. To avoid an error use the<strong> mysql_real_escape_string() </strong>which will sanitize your entries to some extent. There&#8217;s one small problem with the function, but I&#8217;ll address that in the next tutorial</li>
<li>Use the <strong>include()</strong> function for your connection.php file for each site that connects to the MySQL database. It&#8217;s easier than rewriting the code numerous times (especially if you decide to change the user name and all that)</li>
<li>Delete the <strong>install.php </strong>installation script after you&#8217;re done. You don&#8217;t want anyone messing with your scripts. It also creates a vulnerability if you leave it on the server. If you think you&#8217;ll forget, get on PHPmyAdmin and do all the querying manually.</li>
<li>HAVE FUN!</li>
</ul>




Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;title=Creating%20a%20Blogging%20system%20%28part%201%29&amp;bodytext=Some%20time%20ago%20%28a%20couple%20weeks%29%2C%20I%20created%20my%20own%20blogging%20system.%20No%20one%20told%20me%20how%20to%20do%20it%20and%20I%20didn%27t%20read%20any%20tutorials%20on%20how%20to%20do%20it%20either%20so%20there%20were%20a%20few%20things%20I%20learned%20the%20hard%20way.%20As%20you%20know%2C%20Blogs%20are%20database-based%2C%20they%27re%20all" title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;title=Creating%20a%20Blogging%20system%20%28part%201%29&amp;notes=Some%20time%20ago%20%28a%20couple%20weeks%29%2C%20I%20created%20my%20own%20blogging%20system.%20No%20one%20told%20me%20how%20to%20do%20it%20and%20I%20didn%27t%20read%20any%20tutorials%20on%20how%20to%20do%20it%20either%20so%20there%20were%20a%20few%20things%20I%20learned%20the%20hard%20way.%20As%20you%20know%2C%20Blogs%20are%20database-based%2C%20they%27re%20all" title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;t=Creating%20a%20Blogging%20system%20%28part%201%29" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;title=Creating%20a%20Blogging%20system%20%28part%201%29&amp;annotation=Some%20time%20ago%20%28a%20couple%20weeks%29%2C%20I%20created%20my%20own%20blogging%20system.%20No%20one%20told%20me%20how%20to%20do%20it%20and%20I%20didn%27t%20read%20any%20tutorials%20on%20how%20to%20do%20it%20either%20so%20there%20were%20a%20few%20things%20I%20learned%20the%20hard%20way.%20As%20you%20know%2C%20Blogs%20are%20database-based%2C%20they%27re%20all" title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;title=Creating%20a%20Blogging%20system%20%28part%201%29&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=Some%20time%20ago%20%28a%20couple%20weeks%29%2C%20I%20created%20my%20own%20blogging%20system.%20No%20one%20told%20me%20how%20to%20do%20it%20and%20I%20didn%27t%20read%20any%20tutorials%20on%20how%20to%20do%20it%20either%20so%20there%20were%20a%20few%20things%20I%20learned%20the%20hard%20way.%20As%20you%20know%2C%20Blogs%20are%20database-based%2C%20they%27re%20all" title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;title=Creating%20a%20Blogging%20system%20%28part%201%29" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;t=Creating%20a%20Blogging%20system%20%28part%201%29&amp;s=Some%20time%20ago%20%28a%20couple%20weeks%29%2C%20I%20created%20my%20own%20blogging%20system.%20No%20one%20told%20me%20how%20to%20do%20it%20and%20I%20didn%27t%20read%20any%20tutorials%20on%20how%20to%20do%20it%20either%20so%20there%20were%20a%20few%20things%20I%20learned%20the%20hard%20way.%20As%20you%20know%2C%20Blogs%20are%20database-based%2C%20they%27re%20all" title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Creating%20a%20Blogging%20system%20%28part%201%29%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Creating%20a%20Blogging%20system%20%28part%201%29&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Creating%20a%20Blogging%20system%20%28part%201%29&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcreating-a-blogging-system-part-1%2F&amp;title=Creating%20a%20Blogging%20system%20%28part%201%29" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/creating-a-blogging-system-part-1/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Mobile Websites (tips)</title>
		<link>http://www.davepcguy.com/archive/mobile-websites-tips/</link>
		<comments>http://www.davepcguy.com/archive/mobile-websites-tips/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 23:28:37 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[webpage]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=1051</guid>
		<description><![CDATA[I&#8217;ve recently started working on some mobile websites. You&#8217;ll notice that davepcguy.com has its own mobile alternative as do some other sites. Mobile devices are growing in number and gone are those days when internet was viewed only on the computer screen. WAP is not even used either so that old school coding is gone]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=css,Design,HTML%2FCSS,mobile,php,webpage,website" height="61" width="50" /><br />
			</a>
		</div>
<p>I&#8217;ve recently started working on some mobile websites. You&#8217;ll notice that davepcguy.com has its own mobile alternative as do some other sites. Mobile devices are growing in number and gone are those days when internet was viewed only on the computer screen. WAP is not even used either so that old school coding is gone too.</p>
<p>These days, almost everyone has an iPhone or a BlackBerry, or a Palm device. Some of us even have other devices like PSPs, tablets, and others that require quite a bit different formatting. Here&#8217;s how to go about making your mobile website.<br />
<span id="more-1051"></span><br />
</p>
<h1>Step 1 &#8211; The Vision</h1>
<p>First, you gotta have a vision of what you want. The best way to get a good vision is by picking up your phone and browsing the internet, looking through some popular websites such as <a title="Youtube" href="http://www.youtube.com">youtube</a>, <a title="Flickr" href="http://www.flickr.com">flickr</a>, <a title="Facebook" href="http://www.facebook.com">facebook</a>, <a title="Myspace" href="http://www.myspace.com">myspace</a>, and other sites that you know get a lot of traffic and are likely to have their own mobile version.</p>
<p>I recently saw a really nice blog <a title="Woorkup" href="http://woorkup.com/2010/01/10/best-practices-to-develop-perfect-websites-for-iphone-and-mobile-devices/">post</a> detailing some of the nicer mobile sites. The theme there is common:</p>
<p><a rel="attachment wp-att-1052" href="http://www.davepcguy.com/archive/mobile-websites-tips/mobile1/"><img class="aligncenter size-full wp-image-1052" title="mobile1" src="http://www.davepcguy.com/wp-content/uploads/2010/01/mobile1.png" alt="" width="380" height="448" /></a>Everything is single column. There are no side-bars, there are no fancy tabs. Everything is in a single column. Think of it as a letter. There are no columns in a letter, you have a header, the body, and the footer.</p>
<ol>
<li>Header: Generally, you&#8217;ll use the header of the page to announce the website&#8217;s name and to show menu links. You may also place a commercial in this area (Google Adsense uses commercials). Here&#8217;s what I used on my <a title="Mobile Only A Quote" href="http://m.onlyaquote.com">Only A Quote</a> mobile site: <a rel="attachment wp-att-1053" href="http://www.davepcguy.com/archive/mobile-websites-tips/mobile2/"><img class="aligncenter size-full wp-image-1053" title="mobile2" src="http://www.davepcguy.com/wp-content/uploads/2010/01/mobile2.png" alt="" width="298" height="62" /></a>It&#8217;s a simple banner that effectively tells the user what&#8217;s going on.</li>
<li>Body: This is pretty self-explanatory, you put the meet of your site here. Try to use well organized information. Don&#8217;t just slap stuff there. Mobile users are more likely to leave your site than regular computer users. Also, keep the graphics swift! Not too much.</li>
<li>Footer: Use the footer for copyright info and other blah blah stuff but don&#8217;t over do it! I know huge footers are fashionable but not for mobile users!</li>
</ol>
<p>Keep it all simple!</p>
<h1>Step 2 &#8211; Design</h1>
<p>Here are a few tools that will help you with your design:</p>
<ul>
<li><a title="iPhone tester" href="http://iphonetester.com/">iPhone tester</a></li>
<li><a title="mobile emulators" href="http://mobiforge.com/emulators/page/mobile-emulators">Mobile Emulators</a></li>
<li>more <a title="mobile emulators" href="http://www.klauskomenda.com/archives/2008/03/17/testing-on-mobile-devices-using-emulators/">mobile emulators</a></li>
</ul>
<p>Keep in mind that different phones will render your page differently so try to make it as simple as possible. To catch the widest possible audience, focus on the big three: iPhones, BlackBerries, and Palm phones. Samsung and Nokias are common too, especially outside of the US but BBs and iPhones capture most of the market. Android is coming up too, so watch out for them too.</p>
<p>A few simple rules:</p>
<ul>
<li>Keep the site less then 400px wide.</li>
<li>Cross-browsing is a bitch on Computers, it&#8217;s worse on phones, render for Safari and Opera Mobile</li>
<li>Graphics should not exceed 20kbs</li>
<li>Keep the layout basic</li>
</ul>
<p>There are tons  more rules but those are the basics.</p>
<h1>Step 3 &#8211; Coding</h1>
<p>First of all, DON&#8217;T USE JAVASCRIPT! It works on a lot of phones, it&#8217;s gaining support, but it&#8217;s really bothersome (I know, I use my phone to browse the net a lot). There&#8217;s no need for it. Hover and other pretty stuff is useless too. Many phones don&#8217;t support it.</p>
<p>Use as little mark-up code as you can. If your original site has thirty divs, make it three in this one. There&#8217;s no need for all that on phones. If your CSS screws up, so will your divs.</p>
<p>Use the following doctype:</p>
<pre class="brush: xml;">
&lt;!DOCTYPE html PUBLIC &quot;-//WAPFORUM//DTD XHTML Mobile 1.2//EN&quot;&quot;http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd&quot;&gt;
</pre>
<p>This will tell the browser that it&#8217;s meant for phones. It&#8217;ll help rendering and it&#8217;s the RIGHT thing to do haha. Once you start coding, again, keep in mind that your website should be the smallest possible.</p>
<p>Here are a couple of rules to keep in mind:</p>
<ol>
<li>Don&#8217;t use px/em sizes, do everything in percentages, you never know what kind of a phone the user will use.</li>
<li>Keep all files as small as possible.</li>
<li>If your .PNG graphics do not use transparency, convert them to JPGs with smaller quality</li>
<li>If you use .PNG graphics WITH transparency, consider remaking them into JPGs or GIFs (for transparency) if at all possible</li>
<li>Keep all graphics less than 400px wide. I suggest 350px tops.</li>
<li>Use &#8220;ALT&#8221; for images, some phones may not render the text and it&#8217;s standard .mobi rule</li>
<li>Try not to use tables or javascript</li>
<li>Don&#8217;t use external resources (ie pictures from other sites, scripts from other sites, etc)</li>
<li>Define sizes for images with the width = &#8220;&#8221; and height = &#8220;&#8221; html tags</li>
<li>NO POP UPS!</li>
</ol>
<p>That&#8217;s about it.</p>
<h1>Step 4 &#8211; Testing</h1>
<p>You&#8217;ll need to test your site, so use the resources mentioned in the emulator part. Use your phone as well!</p>
<p>Here&#8217;s another resource that will catch ALL of your mistakes:</p>
<p><a title="ready mobi" href="http://ready.mobi/">Ready.mobi</a></p>
<p>This site checks your markup, the size of your site, and many other features. It will tell you if you did something wrong and will usually tell you what you can fix on your site. It also features five different phone emulators on the spot. It also ranks the speed of your site. Here are my stats:</p>
<p><a rel="attachment wp-att-1054" href="http://www.davepcguy.com/archive/mobile-websites-tips/mobile3/"><img class="aligncenter size-medium wp-image-1054" title="mobile3" src="http://www.davepcguy.com/wp-content/uploads/2010/01/mobile3-300x255.png" alt="" width="300" height="255" /></a>Oh yeah, that&#8217;s a bad rating. It&#8217;s mostly because of all the graphics on my site, the CSS involved and inter-linking on my blog. It happens but it does pretty well on my BlackBerry so try to look at your rating positively especially after you do your own tests. As you can see, it tells you the different speeds with GPRS, 3G, and Wi-fi.</p>
<h1>Step 5 &#8211; Implementation</h1>
<p>Let me save you a few hours of searching. In implementation, you&#8217;ll have to figure out how exactly you&#8217;re going to redirect your traffic to the mobile version whence they use their phones. It took some time for me to figure out but here are a few options:</p>
<ol>
<li><a title="detect mobile browsers" href="http://detectmobilebrowsers.mobi/">DetectMobileBrowsers</a> &#8211; This is almost a fullproof method of redirecting your traffic. The problem? You can&#8217;t use it unless your site is COMPLETELY non-profit. Nope, not even ads are allowed. If you want the commercial version, it will cost you $50 a year to use it</li>
<li><a title="Light Weight Device Detection" href="http://mobiforge.com/developing/story/lightweight-device-detection-php">LightWeight Device Detection</a> &#8211; This is probably one of the simplest scripts you&#8217;ll find and it works really well. It also doesn&#8217;t have any restrictions as far as I&#8217;m aware.</li>
<li><a title="Mobile Detect" href="http://www.jooria.com/scripts/Wireless-and-Mobile-156/Mobile-Detect-923/index.html">Mobile Detect</a> &#8211; This is a slightly more functional version of the above-mentioned Device Detection. They&#8217;re not related but work in a similar way</li>
</ol>
<p>Let&#8217;s move on to actually using these scripts. I haven&#8217;t used number one but I&#8217;ll tell you how you can incorporate number 2 and 3.</p>
<ol>
<li>Decide whether you want a separate site for the mobile version. I recommend creating a sub-domain such as m.onlyaquote.com (whence using sub-domains, remember that m.onlyaquote.com = onlyaquote.com/m )</li>
<li>If you did not create a separate sub-domain, you can place the whole thing in a loop but don&#8217;t forget to create a backdoor so that the user can switch between the desktop and mobile version.</li>
<li>Put all the script messy stuff into a separate file (so as not to clutter up your index.php file) except for the if/else statement found in number 2. If you&#8217;re using number 3, don&#8217;t worry about that at all.</li>
<li>Use <strong>include(script file ); </strong>to put the script back into your index.php file. Put all of your PHP before the &lt;html&gt; tag</li>
</ol>
<p>If you&#8217;re using Number 2, here&#8217;s what you do:</p>
<pre class="brush: php;">
include ('scriptfile.php');
if($mobile_browser&gt;0) {
   // do something
header( 'Location: mobilesite.com' ) ;
}
</pre>
<p>If you&#8217;re not using a different site do this:</p>
<pre class="brush: php;">
include('scriptfile.php');
if($mobile_browser&gt;0) {
 // place your mobile site here.
}
else {
   // place your desktop version here
}
</pre>
<p>You can also simply switch out CSS files with this method (make sure to put the loop inside the &lt;head&gt; tag then). I don&#8217;t suggest you use the default CSS method of switching styling according to the device (ie. &lt;link rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; href=&#8221;css/quotestyles.css&#8221; media=&#8221;handheld&#8221; /&gt;) because it doesn&#8217;t work that well and most devices will try to read BOTH stylesheets.</p>
<p>For number 3, again place the following loop before the &lt;html&gt; tag:</p>
<pre class="brush: php;">
include(&quot;Mobile_Detect.php&quot;);
$detect = new Mobile_Detect();
if ($detect-&gt;isMobile()) {
    // any mobile platform
header( 'Location: mobilesite.com' ) ;
}
</pre>
<p>With the number 3 method (ie. <a title="mobile detect" href="http://www.jooria.com/scripts/Wireless-and-Mobile-156/Mobile-Detect-923/index.html">Mobile Detect</a>) you can also specify which mobile device you want to do what. You can choose a separate site for an iPhone and Blackberry or separate CSS files. Well, whatever, you can do it all.</p>
<p>CAUTION: The detection system is NOT perfect. With newer phones, newer browsers, and newer software, the detection script may become obsolete. Be always on the look out for better versions!</p>
<h1>Conclusion</h1>
<p>That&#8217;s it, with these few tricks, you should be able to easily make your own mobile site. Here&#8217;s what mine looks like (I still have a TON of work to do!):</p>
<p><a rel="attachment wp-att-1055" href="http://www.davepcguy.com/archive/mobile-websites-tips/mobile4/"><img class="aligncenter size-medium wp-image-1055" title="mobile4" src="http://www.davepcguy.com/wp-content/uploads/2010/01/mobile4-228x300.png" alt="" width="228" height="300" /></a><br />
</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;title=Mobile%20Websites%20%28tips%29&amp;bodytext=I%27ve%20recently%20started%20working%20on%20some%20mobile%20websites.%20You%27ll%20notice%20that%20davepcguy.com%20has%20its%20own%20mobile%20alternative%20as%20do%20some%20other%20sites.%20Mobile%20devices%20are%20growing%20in%20number%20and%20gone%20are%20those%20days%20when%20internet%20was%20viewed%20only%20on%20the%20computer%20" title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;title=Mobile%20Websites%20%28tips%29&amp;notes=I%27ve%20recently%20started%20working%20on%20some%20mobile%20websites.%20You%27ll%20notice%20that%20davepcguy.com%20has%20its%20own%20mobile%20alternative%20as%20do%20some%20other%20sites.%20Mobile%20devices%20are%20growing%20in%20number%20and%20gone%20are%20those%20days%20when%20internet%20was%20viewed%20only%20on%20the%20computer%20" title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;t=Mobile%20Websites%20%28tips%29" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;title=Mobile%20Websites%20%28tips%29&amp;annotation=I%27ve%20recently%20started%20working%20on%20some%20mobile%20websites.%20You%27ll%20notice%20that%20davepcguy.com%20has%20its%20own%20mobile%20alternative%20as%20do%20some%20other%20sites.%20Mobile%20devices%20are%20growing%20in%20number%20and%20gone%20are%20those%20days%20when%20internet%20was%20viewed%20only%20on%20the%20computer%20" title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;title=Mobile%20Websites%20%28tips%29&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=I%27ve%20recently%20started%20working%20on%20some%20mobile%20websites.%20You%27ll%20notice%20that%20davepcguy.com%20has%20its%20own%20mobile%20alternative%20as%20do%20some%20other%20sites.%20Mobile%20devices%20are%20growing%20in%20number%20and%20gone%20are%20those%20days%20when%20internet%20was%20viewed%20only%20on%20the%20computer%20" title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;title=Mobile%20Websites%20%28tips%29" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;t=Mobile%20Websites%20%28tips%29&amp;s=I%27ve%20recently%20started%20working%20on%20some%20mobile%20websites.%20You%27ll%20notice%20that%20davepcguy.com%20has%20its%20own%20mobile%20alternative%20as%20do%20some%20other%20sites.%20Mobile%20devices%20are%20growing%20in%20number%20and%20gone%20are%20those%20days%20when%20internet%20was%20viewed%20only%20on%20the%20computer%20" title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Mobile%20Websites%20%28tips%29%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Mobile%20Websites%20%28tips%29&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Mobile%20Websites%20%28tips%29&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fmobile-websites-tips%2F&amp;title=Mobile%20Websites%20%28tips%29" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/mobile-websites-tips/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Bit.ly API and adding URLs to your MySQL database</title>
		<link>http://www.davepcguy.com/archive/bit-ly-api-and-adding-urls-to-your-mysql-database/</link>
		<comments>http://www.davepcguy.com/archive/bit-ly-api-and-adding-urls-to-your-mysql-database/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 22:16:10 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[social networking]]></category>
		<category><![CDATA[url-shortener]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=1011</guid>
		<description><![CDATA[In my last tutorial, I&#8217;ve touched on how to use the to.ly API and how to make automatic &#8220;Tweet it&#8221; buttons with a relevant message. Well, this can get problematic if with every page refresh, your server sends out a request to the to.ly server for a short link. Pretty soon, you&#8217;ll be getting &#8220;Too]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=API,internet,php,server,social+networking,url-shortener" height="61" width="50" /><br />
			</a>
		</div>
<p>In my last<a title="tweet this and URL shortening API" href="http://www.davepcguy.com/archive/tweet-this-and-url-shortening-api/"> tutorial</a>, I&#8217;ve touched on how to use the to.ly API and how to make automatic &#8220;Tweet it&#8221; buttons with a relevant message.<br />
Well, this can get problematic if with every page refresh, your server sends out a request to the to.ly server for a short link. Pretty soon, you&#8217;ll be getting &#8220;Too Many Connections&#8221; and you&#8217;re screwed. Just like I was, so here&#8217;s an idea. How about we store those links in a database&#8230;.automatically?</p>
<p>You see, it&#8217;s much easier to create a script that will request a shortlink, adds the link to the database, and then just call it up whenever you need it. It works perfectly well on my <a title="Only A Quote" href="http://www.onlyaquote.com">quote site</a>. Basically, whenever you create a website with get-requests, tons of pages, and all that. You can use the following script to make it all work, automatically (again).</p>
<ul>
<li><a href="#bitly">Bit.ly shortlink implementation</a></li>
<li><a href="#mysql">Adding URL Links to a MySQL database</a></li>
</ul>
<br />
<span id="more-1011"></span></p>
<h1><a name="bitly">Bit.ly</a></h1>
<p>Let&#8217;s get some bit.ly action going here. First, you need to create an account. Then you need to get the <a title="bitly API key" href="http://bit.ly/account/your_api_key">bit.ly API key</a><a rel="attachment wp-att-1012" href="http://www.davepcguy.com/archive/bit-ly-api-and-adding-urls-to-your-mysql-database/bitly/"><img class="aligncenter size-medium wp-image-1012" title="bitly" src="http://www.davepcguy.com/wp-content/uploads/2009/12/bitly-300x200.png" alt="" width="300" height="200" /></a>Next, let&#8217;s look at a neat <a title="bitly php script" href="http://davidwalsh.name/bitly-php">script</a> I found and made a few changes to so you could simply use include() and have a ready function with all the right variables:</p>
<pre class="brush: php;">
// Variables
$bitlylogin = 'loginname';
$apikey = 'long series of numbers that make up your API key';

/* make a URL small */
function make_bitly_url($url,$login,$appkey,$format = 'xml',$version = '2.0.1')
{
 //create the URL
 $bitly = 'http://api.bit.ly/shorten?version='.$version.'&amp;longUrl='.urlencode($url).'&amp;login='.$login.'&amp;apiKey='.$appkey.'&amp;format='.$format;

 //get the url
 //could also use cURL here
 $response = file_get_contents($bitly);

 //parse depending on desired format
 if(strtolower($format) == 'json')
 {
 $json = @json_decode($response,true);
 return $json['results'][$url]['shortUrl'];
 }
 else //xml
 {
 $xml = simplexml_load_string($response);
 return 'http://bit.ly/'.$xml-&gt;results-&gt;nodeKeyVal-&gt;hash;
 }
}
</pre>
<p>I like to set my function up like this so that I can always interchange values, and so that I will automatically have the right values stored in those two variables above ($bitlylogin and $apikey). You don&#8217;t need to do that. You could simply change the function definition like to include defaults:</p>
<pre class="brush: php;">
function make_bitly_url($url,$login = 'loginusername',$appkey = 'long api key',$format = 'xml',$version = '2.0.1')
</pre>
<p>Now as far as implementation of the script goes, it&#8217;s pretty simple:</p>
<pre class="brush: php;">
$url = &quot;Http://www.davepcguy.com&quot;;
$shorturl = make_bitly_url($url, $bitlylogin, $apikey);
echo $shorturl;
</pre>
<p>And you&#8217;ll get the short url echoed out. If you use the default value version you can simply do this:</p>
<pre class="brush: php;">
$url = &quot;http://www.davepcguy.com&quot;;
$shorturl = make_ibtly_url($url);
echo $shorturl;
</pre>
<p>You&#8217;re done. Easy enough, eh?</p>
<h1><a name="mysql">MySQL Database</a></h1>
<p>Believe it, or not. It&#8217;s actually rather tricky to add a URL into a database. You have to select the correct format in the table, decode and encode stuff. It&#8217;s pretty messy and I have not found a good tutorial online on how to do this.<br />
So here goes, let&#8217;s assume you use the method above to create short links. It&#8217;ll make life much easier, trust me.</p>
<p>First, let&#8217;s create a table in your database:</p>
<pre class="brush: php;">
//login variables
$host = 'localhost';
$user = 'username';
$pass = 'password';
$db = 'sample database';

//connect
$connection = mysql_connect($host, $user, $pass) or die ('Unable to connect!');

//database select
mysql_select_db($db) or die ('Unable to select database!');

//the right query
$query = &quot;CREATE TABLE sample_table
(
id int NOT NULL auto_increment primary key,
name varchar(50) NOT NULL,
email varchar(50) NOT NULL ,
message text NOT NULL,
url varchar(255) NOT NULL
)&quot;;

//executing query
$result = mysql_query($query) or die ('Error in Query');
</pre>
<p>Notice that I used a varchar(255) for the datatype. You could use varchar(55) or any other number. Every shortlink by bit.ly is 20 characters&#8230;max. The problem is when you add the information in your database so I recommend a good 255 characters.</p>
<p>Next, you have to make sure you know what you want out of the script. I made a script so that every time my website asked for a row of information, it would automatically add the URL (since I was a bit late with this idea, I had to find a way to add the information without having to recreate the whole database). Also, it&#8217;s a good practice to check if the data is present and in case it&#8217;s not, add it. Here&#8217;s what I did:</p>
<pre class="brush: php;">
//connect

$name = 'sample name';

//query for a particular row with the name
$query = 'SELECT * FROM sample_table WHERE name = $name'';

    // execute query
    $result = mysql_query($query) or die (&quot;Error in query: $query.&quot;.mysql_error());

//check if the url column has anything in it
if (empty($row[4])) {

//if it IS empty, let's make a shortlink
$url = make_bitly_url($permalink,$bitlylogin,$apikey,'xml');
//we have to encode the url. I'll explain that
$url = urlencode($url);
//make a query to update (don't forget the quotation marks!)
$query = 'UPDATE quotes SET url = &quot;'.$url.'&quot; WHERE name = '.$name.'';
//execute query
$urlresult = mysql_query($query) or die (&quot;Error in query: $query. &quot;.mysql_error());
//decode url for later use in the script
$url = urldecode($url);
}

//let's make an else statement in case the information IS present
else {
//let's decode that encoded url
$url = urldecode($row[4]);
}
</pre>
<p>Now you have the $url variable down! w00t. You can do a bunch of stuff with that. Like implement it in that <a title="Tweet this!" href="http://www.davepcguy.com/archive/tweet-this-and-url-shortening-api/">twitter button</a> I keep talking about. Check out my <a title="Only A Quote" href="http://www.onlyaquote.com">new site</a> too to see it in action.</p>
<p>Oh about that encoding and decoding. If you try to submit the $url without encoding it, you&#8217;ll get an error because the characters &#8220;/&#8221; and &#8220;:&#8221; and some of the other ones have a special meaning in SQL. Here&#8217;s what the encoded and decoded versions look like:</p>
<blockquote><p>normal: http://bit.ly/8oQBvB</p>
<p>encoded: http%3A%2F%2Fbit.ly%2F8oQBvB</p>
<p>decoded: http://bit.ly/8oQBvB</p></blockquote>
<p>As you can see, the encoded version uses the &#8220;%&#8221; characters (ascii) for the coding.</p>
<p>Don&#8217;t forget to encode and decode then!</p>
<p>I hope you enjoyed my tutorial <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />




Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;title=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database&amp;bodytext=In%20my%20last%20tutorial%2C%20I%27ve%20touched%20on%20how%20to%20use%20the%20to.ly%20API%20and%20how%20to%20make%20automatic%20%22Tweet%20it%22%20buttons%20with%20a%20relevant%20message.%0D%0AWell%2C%20this%20can%20get%20problematic%20if%20with%20every%20page%20refresh%2C%20your%20server%20sends%20out%20a%20request%20to%20the%20to.ly%20server%20for%20a%20" title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;title=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database&amp;notes=In%20my%20last%20tutorial%2C%20I%27ve%20touched%20on%20how%20to%20use%20the%20to.ly%20API%20and%20how%20to%20make%20automatic%20%22Tweet%20it%22%20buttons%20with%20a%20relevant%20message.%0D%0AWell%2C%20this%20can%20get%20problematic%20if%20with%20every%20page%20refresh%2C%20your%20server%20sends%20out%20a%20request%20to%20the%20to.ly%20server%20for%20a%20" title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;t=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;title=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database&amp;annotation=In%20my%20last%20tutorial%2C%20I%27ve%20touched%20on%20how%20to%20use%20the%20to.ly%20API%20and%20how%20to%20make%20automatic%20%22Tweet%20it%22%20buttons%20with%20a%20relevant%20message.%0D%0AWell%2C%20this%20can%20get%20problematic%20if%20with%20every%20page%20refresh%2C%20your%20server%20sends%20out%20a%20request%20to%20the%20to.ly%20server%20for%20a%20" title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;title=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=In%20my%20last%20tutorial%2C%20I%27ve%20touched%20on%20how%20to%20use%20the%20to.ly%20API%20and%20how%20to%20make%20automatic%20%22Tweet%20it%22%20buttons%20with%20a%20relevant%20message.%0D%0AWell%2C%20this%20can%20get%20problematic%20if%20with%20every%20page%20refresh%2C%20your%20server%20sends%20out%20a%20request%20to%20the%20to.ly%20server%20for%20a%20" title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;title=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;t=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database&amp;s=In%20my%20last%20tutorial%2C%20I%27ve%20touched%20on%20how%20to%20use%20the%20to.ly%20API%20and%20how%20to%20make%20automatic%20%22Tweet%20it%22%20buttons%20with%20a%20relevant%20message.%0D%0AWell%2C%20this%20can%20get%20problematic%20if%20with%20every%20page%20refresh%2C%20your%20server%20sends%20out%20a%20request%20to%20the%20to.ly%20server%20for%20a%20" title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fbit-ly-api-and-adding-urls-to-your-mysql-database%2F&amp;title=Bit.ly%20API%20and%20adding%20URLs%20to%20your%20MySQL%20database" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/bit-ly-api-and-adding-urls-to-your-mysql-database/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>&#8220;Tweet This&#8221; and URL shortening API</title>
		<link>http://www.davepcguy.com/archive/tweet-this-and-url-shortening-api/</link>
		<comments>http://www.davepcguy.com/archive/tweet-this-and-url-shortening-api/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 23:00:26 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[social networking]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[url-shortener]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=1004</guid>
		<description><![CDATA[Alright, you&#8217;ve all seen those CRAZY &#8220;Tweet This&#8221; buttons on so many websites, (mainly wordpress). You may have also noticed that some just send you to twitter and you have to manually input the twitter message. Well, how about we just make a button that will automate all this for us? I really do love]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=functions,php,server,social+networking,twitter,url-shortener" height="61" width="50" /><br />
			</a>
		</div>
<p>Alright, you&#8217;ve all seen those CRAZY &#8220;Tweet This&#8221; buttons on so many websites, (mainly wordpress). You may have also noticed that some just send you to twitter and you have to manually input the twitter message. Well, how about we just make a button that will automate all this for us?</p>
<p>I really do love it when I click on that button and twitter pops up with a pre-written message like &#8220;Check out this site : URL GOES HERE&#8221; or &#8220;Crazy CSS tutorial on backgrounds. Check it out: URL GOES HERE&#8221;, it makes it much easier for me to share my finds. Here&#8217;s a great <a title="Only A Quote" href="http://www.onlyaquote.com">demo</a>.</p>
<p>Okay, I&#8217;m working on a new website and it has various posts on it that I want the readers to be able to automatically share on twitter. I also want to include a backlink so that their twitter followers can visit the actual article. Basically, here&#8217;s a tutorial on shortening URLs using API and for creating a twitter button.</p>
<p><span id="more-1004"></span><br />
</p>
<h2>URL shortening</h2>
<p>As you may know, there are tons of <a title="comparing short links" href="http://www.davepcguy.com/archive/comparing-short-links/">URL shortening services</a>. Most, including<a title="bit.ly" href="http://www.bit.ly"> bit.ly</a> and<a title="tiny url " href="http://www.tinyurl.com"> tinyurl.com</a> support API services which basically means, you can use PHP (and AJAX) in order to use their services on another server. That&#8217;s BASICALLY what it means. I&#8217;m not a master of this. Bit.ly requires an account so I won&#8217;t be getting into that. I don&#8217;t want my account to be spammed with a ton of different links. But, if you want to keep track of how many people clicked and posted your link, you are more than welcome to read a tutorial on it <a title="bitly php api" href="http://davidwalsh.name/bitly-php">elsewhere</a>.</p>
<p>I&#8217;m not too big on tinyurl.com anymore because it requires way too many characters. And for twitter use, it&#8217;s basically useless so I browsed around and found <a title="to.ly shrinking URLs" href="http://to.ly">to.ly</a> which has really basic API info already <a title="to.ly api info" href="http://to.ly/api_info.php">posted</a>. Let me copy it real quick:</p>
<pre class="brush: php;">
function CompressURL($url) {

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, &quot;http://to.ly/api.php?longurl=&quot;.urlencode($url));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch, CURLOPT_HEADER, 0);

  $shorturl = curl_exec ($ch);
  curl_close ($ch);

  return $shorturl;

}
</pre>
<p>Add this function to your function.php, if you use an external function list (use require() to add it to your site), or just add this function in your header on your site so that whenever you call upon it later, it will be at your disposal. Now, let&#8217;s get the URL of the site you&#8217;re on. Let&#8217;s say you have a dynamic page and don&#8217;t feel like manually writing each separate link. We can use the $_SERVER variable for that. A combination actually:</p>
<pre class="brush: php;">
echo &quot;http://&quot;.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING'];
</pre>
<p>This will echo out the whole URL, including any GET statements you may have entered. If you don&#8217;t want those statements, erase the last $_SERVER variable. Okay, so let&#8217;s put it all together to shorten the link using the previous function:</p>
<pre class="brush: php;">
$permalink = &quot;http://&quot;.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING'];
$url = CompressURL (&quot;$permalink&quot;);
</pre>
<p>Now that we have the compressed URL, let&#8217;s move on to the tweet button.</p>
<h2>Tweet This Button!</h2>
<p>Well, go out and find some great twitter icon. Or make your own. It&#8217;s easy. You go into photoshop and make a 150 x 50 px rectangle and write twitter in it. That&#8217;s not what this tutorial is about.<br />
Twitter has an easy-to-use API (Is it even API?).</p>
<pre class="brush: xml;">
http://twitter.com/home?status= MESSAGE GOES HERE
</pre>
<p>So there goes the message. Very easy, no? Now, here lies the problem. What kind of message do you want? You could use different functions and variables that describe each page on your site. If you set them manually (in the META tag), use this instead so that the description is already stored for later use. In my <a title="Only A Quote" href="http://www.onlyaquote.com">newest site</a>, I used the actual content of the page (a quote) for the message:</p>
<pre class="brush: php;">
$description = &quot;An article about php scripting and creating a simple tweet this button.&quot;;
echo $description
</pre>
<p>Twitter has a character limit of one forty, right? We can take care of that too. &#8220;substr()&#8221; is a function that will allow you to cut up your description. It works like this: substr($string, begin cut, end cut). I use a 100 character cut off:</p>
<pre class="brush: php;">

$twittermsg = substr($description, 0, 100);

$twittermsg .= &quot;...more on&quot;.$url;
</pre>
<p>The message is complete. A hundred character message ending with &#8220;&#8230;more on URL&#8221;. Finally, the button and link:</p>
<pre class="brush: xml;">
&lt;a href=&quot;http://twitter.com/home?status=&lt;?php echo $twittermsg;?&gt;&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;pictures/images/twitter_button.png&quot; title=&quot;Tweet it!&quot; onmouseover=&quot;this.src='pictures/images/twitter_button_hover.png'&quot;
onmouseout=&quot;this.src='pictures/images/twitter_button.png'&quot; /&gt;&lt;/a&gt;
</pre>
<p>The &#8220;onmouseover&#8221; and &#8220;onmouseout&#8221; are used for a nice hover effect (onmouseover will be the hoveved, and onmouseout is the non-hovered). Using CSS would be a literal pain because you&#8217;d have to create a clickable div or a span&#8230;display none. Well, just trust me, this is MUCH easier.</p>
<p>I hope you enjoyed this short tutorial!</p>
<p><strong>Check out my next <a title="Bit.ly API" href="http://www.davepcguy.com/archive/bit-ly-api-and-adding-urls-to-your-mysql-database/">tutorial</a> for bit.ly API! <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong><br />
</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;title=%22Tweet%20This%22%20and%20URL%20shortening%20API&amp;bodytext=Alright%2C%20you%27ve%20all%20seen%20those%20CRAZY%20%22Tweet%20This%22%20buttons%20on%20so%20many%20websites%2C%20%28mainly%20wordpress%29.%20You%20may%20have%20also%20noticed%20that%20some%20just%20send%20you%20to%20twitter%20and%20you%20have%20to%20manually%20input%20the%20twitter%20message.%20Well%2C%20how%20about%20we%20just%20make%20a%20button%20" title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;title=%22Tweet%20This%22%20and%20URL%20shortening%20API&amp;notes=Alright%2C%20you%27ve%20all%20seen%20those%20CRAZY%20%22Tweet%20This%22%20buttons%20on%20so%20many%20websites%2C%20%28mainly%20wordpress%29.%20You%20may%20have%20also%20noticed%20that%20some%20just%20send%20you%20to%20twitter%20and%20you%20have%20to%20manually%20input%20the%20twitter%20message.%20Well%2C%20how%20about%20we%20just%20make%20a%20button%20" title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;t=%22Tweet%20This%22%20and%20URL%20shortening%20API" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;title=%22Tweet%20This%22%20and%20URL%20shortening%20API&amp;annotation=Alright%2C%20you%27ve%20all%20seen%20those%20CRAZY%20%22Tweet%20This%22%20buttons%20on%20so%20many%20websites%2C%20%28mainly%20wordpress%29.%20You%20may%20have%20also%20noticed%20that%20some%20just%20send%20you%20to%20twitter%20and%20you%20have%20to%20manually%20input%20the%20twitter%20message.%20Well%2C%20how%20about%20we%20just%20make%20a%20button%20" title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;title=%22Tweet%20This%22%20and%20URL%20shortening%20API&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=Alright%2C%20you%27ve%20all%20seen%20those%20CRAZY%20%22Tweet%20This%22%20buttons%20on%20so%20many%20websites%2C%20%28mainly%20wordpress%29.%20You%20may%20have%20also%20noticed%20that%20some%20just%20send%20you%20to%20twitter%20and%20you%20have%20to%20manually%20input%20the%20twitter%20message.%20Well%2C%20how%20about%20we%20just%20make%20a%20button%20" title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;title=%22Tweet%20This%22%20and%20URL%20shortening%20API" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;t=%22Tweet%20This%22%20and%20URL%20shortening%20API&amp;s=Alright%2C%20you%27ve%20all%20seen%20those%20CRAZY%20%22Tweet%20This%22%20buttons%20on%20so%20many%20websites%2C%20%28mainly%20wordpress%29.%20You%20may%20have%20also%20noticed%20that%20some%20just%20send%20you%20to%20twitter%20and%20you%20have%20to%20manually%20input%20the%20twitter%20message.%20Well%2C%20how%20about%20we%20just%20make%20a%20button%20" title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=%22Tweet%20This%22%20and%20URL%20shortening%20API%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=%22Tweet%20This%22%20and%20URL%20shortening%20API&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=%22Tweet%20This%22%20and%20URL%20shortening%20API&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Ftweet-this-and-url-shortening-api%2F&amp;title=%22Tweet%20This%22%20and%20URL%20shortening%20API" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/tweet-this-and-url-shortening-api/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Custom E-mail Form</title>
		<link>http://www.davepcguy.com/archive/custom-e-mail-form/</link>
		<comments>http://www.davepcguy.com/archive/custom-e-mail-form/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 19:14:43 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[coupon]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web extras]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=557</guid>
		<description><![CDATA[AH! So I have to create a custom e-mail sending form. He wants me to create a webform that will ask for a person&#8217;s name and e-mail address. Once those are input, an e-mail will be sent to the person&#8217;s e-mail account with a thank you message. Meanwhile, the website will reload with a custom]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=coupon,functions,mail,php,web+extras" height="61" width="50" /><br />
			</a>
		</div>
<p>AH! So I have to create a custom e-mail sending form. He wants me to create a webform that will ask for a person&#8217;s name and e-mail address. Once those are input, an e-mail will be sent to the person&#8217;s e-mail account with a thank you message. Meanwhile, the website will reload with a custom coupon that bears their name. I&#8217;ll need it printable so I&#8217;ll have to add a print button as well.<br />
Sounds simple enough, right?.. right?<br />
<span id="more-557"></span><br />
First off, go <a title="coupon tutorial" href="http://www.davepcguy.com/archive/coupon-design/">create a coupon</a>. After you&#8217;re done with that, we can start working. Make sure the &#8220;name&#8221; field is left out though, we&#8217;ll add that in later with some CSS. Originally, I wanted to send the coupon in the e-mail, forcing the customer to input the right e-mail address but I realized that most e-mail clients do not support CSS and especially not the &#8220;position: absolute;&#8221; property and value.<br />
<br />
<strong>Tip</strong>: I update the script periodically, and have numerous times while writing this tutorial. None of the scripts mentioned in this post are necessarily WRONG but at the bottom of the page is the current &#8220;release&#8221; that I&#8217;ve created. The images may not correspond directly with the code they represent.</p>
<h1>Setup</h1>
<p>Alright, here&#8217;s what you&#8217;ll need to do. You need to download MIME (MultiplePurpose Internet Mail Extensions), which is an e-mail extension for php that allows you to send HTML e-mails. If your site operates under c-panel, like mine is, then just scroll down, find the PHP extension icon. Search for &#8220;MIME&#8221; and install the packages. If you need to install them manually, search through google &#8220;Installing MIME on&#8221; your OS. I cannot really help you out more than that because I am not an expert on PHP extensions. There are multiple guides online though that WILL help you out.</p>
<div id="attachment_632" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.davepcguy.com/wp-content/uploads/2009/10/mail1.png"><img class="size-medium wp-image-632" title="mail1" src="http://www.davepcguy.com/wp-content/uploads/2009/10/mail1-300x105.png" alt="installing MIME" width="300" height="105" /></a><p class="wp-caption-text">installing MIME</p></div>
<div id="attachment_633" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.davepcguy.com/wp-content/uploads/2009/10/mail2.png"><img class="size-medium wp-image-633" title="mail2" src="http://www.davepcguy.com/wp-content/uploads/2009/10/mail2-300x54.png" alt="Press Install" width="300" height="54" /></a><p class="wp-caption-text">Press Install</p></div>
<p>Once you press install, the package will automatically install. It may ask if it can install other dependent packages, simply OK it.</p>
<h1>Basic Form</h1>
<div id="attachment_634" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.davepcguy.com/wp-content/uploads/2009/10/mail3.png"><img class="size-medium wp-image-634" title="mail3" src="http://www.davepcguy.com/wp-content/uploads/2009/10/mail3-300x185.png" alt="Modified Mail Form" width="300" height="185" /></a><p class="wp-caption-text">Modified Mail Form</p></div>
<p>Let&#8217;s start scripting. I advise you to create a mail.php form that you can &#8220;include ()&#8221; or &#8220;require()&#8221; into your existing website. It&#8217;s much neater this way and the PHP won&#8217;t get in the way of your layout. Here&#8217;s the basic form I created for our purposes:</p>
<pre class="brush: xml;">&lt;form action=&quot;&lt;?php $_SERVER['PHP_SELF'];?&gt;&quot; method=&quot;post&quot;&gt;
Name:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;name&quot; maxlength=&quot;41&quot; /&gt;&lt;br /&gt;
E-mail address:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;email&quot; maxlength=&quot;40&quot; /&gt;&lt;br /&gt;
Message (&lt;i&gt;optional&lt;/i&gt;):&lt;br /&gt; &lt;textarea name=&quot;optmessage&quot; cols=&quot;30&quot; rows&quot;10&quot; maxlength&quot;140&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
&lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;save&quot; /&gt;
&lt;/form&gt;</pre>
<p>I used the &#8220;$_SERVER['PHP_SELF']&#8221; variable for the action so that we won&#8217;t have to create yet another script page to use the information. The &#8220;name&#8221; field will translate to $_POST['name'], the&#8221;e-mail address&#8221; into $_POST['email'], and the optional &#8220;message&#8221; into $_POST['optmessage']. There is nothing much more to it. I used maxlength for the name 41 characters because my full fictional name, &#8220;Captain Soren William Alexander Janus VI.&#8221;, is exactly 41 characters long .  40 characters for the e-mail seems sufficient enough as well. 140 character message is the same as twitter&#8217;s max tweet. There is nothing much else to this.</p>
<h1>Are you feeling &#8220;Loopy&#8221;?</h1>
<p>Let&#8217;s move on. We need to create a loop that will ensure our data has been entered and that we are not dealing with a blank form. The purpose of this basic loop is to show the initial form for the user to submit the data to, reload the form if any errors were made during submission (ie invalid entries), and send the email in the end.</p>
<pre class="brush: php;">
&lt;?php
if (!isset($_POST['submit']) { ?&gt;

Form goes here

&lt;?php } elseif (empty($_POST['email']) || empty($_POST['name']) ||
(isEmailAddress($_POST['email']) == 0) || (trim($_POST['email']) == '')
|| (trim($_POST['name']) == '')) {
?&gt;

Something entered was wrong, please re-enter your information:
form goes here.

&lt;?php }
else {
store variables, send e-mail, and show a new page with a coupon }
?&gt;
</pre>
<p>Confused? Don&#8217;t be. The beginning tells us if the form has been previously submitted, if not, the form will load. The second part after &#8220;elseif&#8221; checks if all the data entered is correct. After all the conditions have been met, we progress to the last &#8220;else&#8221; which will execute the mail sending.</p>
<h1>&#8220;Validate This!&#8221;</h1>
<p>If you look above, you&#8217;ll see a strange function called &#8220;isEmailAddress&#8221;. I set this function up using a script I <a title="validation scripts" href="http://devzone.zend.com/node/view/id/662">found</a>. Here is the function:</p>
<pre class="brush: php;">
function isEmailAddress($value) {
        return eregi('^([a-z0-9])+([\.a-z0-9_-])*@([a-z0-9_-])+(\.[a-z0-9_-]+)*\.([a-z]{2,6})$', $value);
    }
	</pre>
<p>It basically checks if the e-mail is in the correct format. It also makes sure that only a single e-mail address has been entered and that it does not contain any malicious code.</p>
<p><strong>Tip</strong>: If you wish to add database support to this script, you&#8217;ll have to use a validation function for the name and message as well!</p>
<p>Next part of validation are the &#8220;empty()&#8221; and &#8220;trim()&#8221; functions. &#8220;Empty()&#8221; is self-explanatory. You entered the variable name and the function will check if it is empty or not. If it is, the function returns TRUE. &#8220;Trim()&#8221; works similarly except here it takes out all the extra spaces and such. If it equals &#8216; &#8216; or an empty space, then it will return TRUE. The &#8220;elseif&#8221; statement is setup so that it checks the e-mail and name value.</p>
<p><strong>Tip: </strong>If you have some time on your hand you can create a function that will check for each of these statements like: function CheckValue ($var) { if (empty($var) {return TRUE;} if (trim($var) == &#8216; &#8216;) { return TRUE;} }</p>
<h1>Second Form</h1>
<div id="attachment_635" class="wp-caption aligncenter" style="width: 302px"><a href="http://www.davepcguy.com/wp-content/uploads/2009/10/mail4.png"><img class="size-full wp-image-635" title="mail4" src="http://www.davepcguy.com/wp-content/uploads/2009/10/mail4.png" alt="Incorrect entry" width="292" height="265" /></a><p class="wp-caption-text">Incorrect entry</p></div>
<p>You have a choice here. Under &#8220;elseif ()&#8221;, you can create new &#8220;if&#8221; statements and inform the user of what exactly is wrong. For example if the name is empty, you can create an if statement like this:</p>
<pre class="brush: php;">
if (empty($_POST['name'] || trim($_POST['name']) == ' ') { ?&gt;
 echo &quot;You left the name field empty&quot;;
&lt;?php } ?&gt;
</pre>
<p>I like to keep the user in the shadows and put all of the validation together using the || which means &#8220;or&#8221; and the same original form will show up with the message &#8220;Error: Please enter a valid e-mail address and your name&#8221;. Add the following form under &#8220;elseif()&#8221; between the php tags:</p>
<pre class="brush: xml;">
Error: Please enter a valid e-mail address and your name

&lt;form action=&quot;&lt;?php $_SERVER['PHP_SELF'];?&gt;&quot; method=&quot;post&quot;&gt;
Name:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;name&quot; maxlength=&quot;41&quot; /&gt;&lt;br /&gt;
E-mail address:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;email&quot; maxlength=&quot;40&quot; /&gt;&lt;br /&gt;
Message (&lt;i&gt;optional&lt;/i&gt;):&lt;br /&gt; &lt;textarea name=&quot;optmessage&quot; cols=&quot;30&quot; rows&quot;10&quot; maxlength&quot;140&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
&lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Submit&quot; /&gt;
&lt;/form&gt;
</pre>
<p>It&#8217;s the same form with a little message on top.</p>
<h1>Everything &#8220;Else&#8221;</h1>
<p>So all the variables go through, the script is validated. What now then? Now we&#8217;ll send the e-mail and refresh the site. I am using e-mails for a good reason. Whenever a user asks for a coupon, I&#8217;ll have a copy of their name and their e-mail address for future reference. I COULD use a database system but I&#8217;m a lazy person. I&#8217;ll point you in the right direction if you wish to do that though. Instead, let&#8217;s focus on what I already have done.</p>
<p>We should set up our variables first, writing out $_POST['email'] is quite a hassle. Plus, we have to set up the e-mail variables as well. Also note that this is in the last else {} section:</p>
<pre class="brush: php;">
//variables

$to = $_POST['email'];
$subject = &quot;Coupon from the Chiropractors&quot;;
$name = $_POST['name'];
$optmessage= $_POST['optmessage'];
$opt = wordwrap ($optmessage, 70);
</pre>
<p>The mail function works like this:</p>
<blockquote><p>mail (to, subject, message, headers)</p></blockquote>
<p>So we set up the &#8220;$to&#8221; variable which we will direct to the e-mail. We&#8217;ve also set up the subject of the e-mail and put $_POST['name'] into the $name variable for later use. Next, I transferred the optional message into $optmessage variable which I then word-wrapped into $opt. You have to word-wrap your e-mail message and the longest line can only have 70 characters. Using the &#8220;wordwrap ()&#8221; function and the parameter &#8220;70&#8243;, we&#8217;ve accomplished that. Let&#8217;s write the message:</p>
<pre class="brush: php;">
$message = &quot;&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=\&quot;Content-Type\&quot; content=\&quot;text/html; charset=utf-8\&quot; /&gt;
&lt;title&gt;Chiropractic&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;p&gt; Dear $name,&lt;br /&gt;
Thank you for visiting us at our&lt;a href=\&quot;http://www.davepcguy.com\&quot;&gt;Website&lt;/a&gt;.
&lt;p&gt; Please print out your coupon and present it on your next visit. Thank you, and we hope to see you soon!&lt;/p&gt;
&lt;p style=\&quot;margin-left: 50px\&quot;&gt; Sincerely, Alexander &lt;/p&gt;
&lt;p&gt;optional message:&lt;br /&gt;
$opt&lt;/p&gt;
&lt;p&gt;
Your e-mail: $to &lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;&quot;;
</pre>
<p>Note that e-mail clients have different <a title="CSS support for different e-mail clients" href="http://www.campaignmonitor.com/css/">support</a> of HTML and CSS. Don&#8217;t include any XHTML, that&#8217;s way too complicated. This is the reason why I did not put the coupon into the e-mail. Most e-mail clients do not support the &#8220;position: absolute&#8221;. Alright, let&#8217;s setup our header variable. With headers, you can define who the e-mail is from, where to reply to the e-mail, send different copies, and most importantly, use MIME.</p>
<pre class="brush: php;">
 //header information
$from = &quot;no-reply@davepcguy.com&quot;;
$headers = &quot;From: $from&quot; . &quot;\r\n&quot;;
$headers .= 'MIME-Version: 1.5.2' . &quot;\r\n&quot;;
$headers .= 'Content-type: text/html; charset=iso-8859-1' . &quot;\r\n&quot;;
$headers .= &quot;BCC: reply@davepcguy.com&quot; . &quot;\r\n&quot;;
</pre>
<p>I used an e-mail address I set up through c-panel. Set it up the same way you set up any other e-mail account. And you won&#8217;t even have to include the password in your script. Let&#8217;s break down the header.</p>
<p>The first header establishes from where the e-mail will be sent. Always break the lines when setting up the header variable using &#8220;\r\n&#8221;. Next, set up your MIME and its version. The newest one should be 1.5.2 but check your version under the PHP addons/modules in your c-panel. If you can&#8217;t make it work, use &#8220;MIME-Version: 1.0&#8243;. Next, set the content-type. Just copy the above, there should be no other alternative. The script will also send a BCC (Blind Carbon Copy) of every e-mail to my own e-mail address so that I can keep records. Let&#8217;s send it then!</p>
<pre class="brush: php;">
//functions
$mail_sent= mail(&quot;$to&quot;, $subject, $message, $headers);
</pre>
<p>All that work and it&#8217;s summed up in one single line, amazing, eh?</p>
<h1>The Script After</h1>
<p>Hmm&#8230;I think I should give the user the coupon finally, don&#8217;t you think? They&#8217;ve done SO much work. Well, let me set up the message then:</p>
<pre class="brush: php;">
//announcement
$sent= &quot;
&lt;p&gt; Dear $name,&lt;br /&gt;
Thank you for visiting us at &lt;a href=\&quot;http://www.davepcguy.com\&quot;&gt;Website&lt;/a&gt;
Here is your coupon&lt;/p&gt;
&lt;div align=\&quot;center\&quot; style=\&quot;padding=\&quot;50px\&quot;&gt;
&lt;div style=\&quot;position: absolute; margin: 75px 120px 10px 50px; font-size: 30px; border-bottom: 2px solid black; width: 250px\&quot;&gt; $name &lt;/div&gt;
&lt;img src=\&quot;coupon2.png\&quot; width=\&quot;436\&quot; height=\&quot;292\&quot; /&gt;&lt;/div&gt;
&lt;p&gt; Please print this coupon out and present it on your next visit. Thank you, and we hope to see you soon!&lt;/p&gt;
&lt;p style=\&quot;margin-left: 50px\&quot;&gt; Sincerely, Alexander &lt;/p&gt;
&lt;p&gt; P.S. please print out your coupon immediately or save this page because it will not be available after you close out.
If you're having any trouble, please contact our &lt;a href=\&quot;mailto:alexander@davepcguy.com\&quot;&gt;webmaster&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Optional Message: &lt;br /&gt;
$opt
&lt;/p&gt;
&quot;;
echo $mail_sent ? $sent : &quot;Mail failed&quot;;
echo $sent;
}
?&gt;
</pre>
<p>Haha, I know, it looks complicated, doesn&#8217;t it? Well not really, the &#8220;$sent&#8221; just sets up a variable with the html code I plan to use in my webpage. Beware, you&#8217;ll have to adjust this according to your own webpage. the echo $mail_sent ? $sent: &#8220;Mail failed&#8221;; is a short hand for an if loop &#8221; if ($mail_sent) {$sent} else { &#8220;Mail Failed&#8221;};&#8221; then the $sent variable will echo out.</p>
<div id="attachment_636" class="wp-caption aligncenter" style="width: 280px"><a href="http://www.davepcguy.com/wp-content/uploads/2009/10/mail5.png"><img class="size-medium wp-image-636" title="mail5" src="http://www.davepcguy.com/wp-content/uploads/2009/10/mail5-270x300.png" alt="final page" width="270" height="300" /></a><p class="wp-caption-text">final page</p></div>
<h1>Extras</h1>
<ul>
<li>database support</li>
<li>print</li>
<li>extra validation</li>
</ul>
<p>This is how I finished out my script. I don&#8217;t plan on doing too much to it other than making it printable. I&#8217;m thinking about making a pop-up window that will display all of that information. Let&#8217;s review some of the extras you can add.</p>
<p><strong>Database Support </strong>First, you can add database support. Simply make a new database in MySQL (using PHPmyAdmin) and set up two columns, one for name, and the other for name. Set up the table or use this SQL command if you can, creating the database might be tricky, but you should be able to use the &#8220;CREATE TABLE&#8221; part. If you can&#8217;t, just set it up manually using the values shown:</p>
<pre>CREATE DATABASE coupondb;

CREATE TABLE `coupons` (
    `id` int(11) NOT NULL auto_increment,
    `name` varchar(255) NOT NULL default '',
    `email` varchar(255) NOT NULL default '',
    PRIMARY KEY  (`id`)
) TYPE=MyISAM;</pre>
<p>You can probably make a third column for an order (1., 2., 3.) or for the date and time. Add this at the beginning of the &#8220;else{}&#8221; :</p>
<pre class="brush: php;">
//MySQL variable
$host = &quot;localhost&quot;;
$user = &quot;user&quot;;
$pass = &quot;password&quot;;
$db = &quot;coupondb&quot;;

//connect
$connection = mysql_connect($host, $user, $pass) or die (&quot;Unable to connect!&quot;);

// select database
mysql_select_db($db) or die (&quot;Unable to select database!&quot;);
</pre>
<p>First, set up the host variable ie, where the database is. I&#8217;ll trust my WordPress senses and leave that with localhost. You&#8217;ll have to create a new username and password as well as a database manually using c-panel or a different site manager your hosting provides you. Input the user and password. Change the &#8220;die&#8221; variable to something like &#8220;internal server error&#8221; or something, this is just for educational purposes. I got it off <a title="Database Tutorial Zend" href="http://devzone.zend.com/node/view/id/641">Zend Dev Zone </a>again. Make sure you put this BEFORE the e-mail sending (ie the mail() function) because it&#8217;s senseless to send the e-mail but not make a database entry. Here&#8217;s the basic query:</p>
<pre class="brush: php;">
 // create query
    $query = &quot;INSERT INTO coupons (name, email) VALUES ('$name', '$to')&quot;;

    // execute query
    $result = mysql_query($query) or die (&quot;Error in query: $query. &quot;.mysql_error());

    // close connection
    mysql_close($connection);
</pre>
<p>And there you go, database support added. Check out my full script on the bottom for the full implementation with the duplicate entries check as well as other features.</p>
<p><strong>Print </strong><img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot.png" alt="" />Let&#8217;s check out how to print all this stuff out. I found a neat piece of JavaScript that can accomplish this. It&#8217;s a bit tricky and I still can&#8217;t get it to show the best results but, it seems to work well nonetheless. You can find it <a title="javascript print code" href="http://personalweb.about.com/od/copypastejavascripts/a/404_3scripts_3.htm">here</a>. Add the header part into the real header where you&#8217;ll use this mail.php script. Then, modify the $sent variable:</p>
<pre class="brush: php;">
$sent= &quot;&lt;div id=\&quot;printReady\&quot;&gt;
&lt;div style=\&quot; width: 457px; background: white; text-align: center\&quot;&gt;
&lt;p&gt; Dear $name,&lt;br /&gt;
Thank you for visiting us at &lt;a href=\&quot;http://www.davepcguy.com\&quot;&gt;Website&lt;/a&gt;
Here is your coupon&lt;/p&gt;
&lt;div align=\&quot;center\&quot; style=\&quot;padding=\&quot;50px\&quot;&gt;
&lt;div style=\&quot;position: absolute; margin: 75px 120px 10px 50px; font-size: 30px; border-bottom: 2px solid black; width: 250px\&quot;&gt; $name &lt;/div&gt;
&lt;img src=\&quot;coupon2.png\&quot; width=\&quot;436\&quot; height=\&quot;292\&quot; /&gt;&lt;/div&gt;
&lt;p&gt; Please print this coupon out and present it on your next visit. Thank you, and we hope to see you soon!&lt;/p&gt;
&lt;p style=\&quot;margin-left: 50px\&quot;&gt; Sincerely, Alexander &lt;/p&gt;
&lt;p&gt; P.S. please print out your coupon immediately or save this page because it will not be available after you close out.
If you're having any trouble, please contact our &lt;a href=\&quot;mailto:alexander@davepcguy.com\&quot;&gt;webmaster&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Optional Message: &lt;br /&gt;
$opt
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;form id=\&quot;printMe\&quot; name=\&quot;printMe\&quot;&gt;  &lt;input type=\&quot;button\&quot; name=\&quot;printMe\&quot; onClick=\&quot;printSpecial()\&quot; value=\&quot;Print this Page\&quot;&gt; &lt;/form&gt;
&quot;;</pre>
<p>Change the width to suit your needs. And I am completely aware there is a million different divs just in this script (you should see the pages I code, million more divs) but they are mostly mandatory. You can switch the &#8220;div&#8221; around the &#8220;$name&#8221; variable to &lt;span&gt;. You&#8217;ll have to spend some time adjusting this, the width of the page, the margin, as well as the different positions to suit your needs. It worked for me almost perfectly <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Extra Validation</strong> Okay, so if you want to use a database with this form, you&#8217;ll need some extra validation as a precaution against SQL injection. We&#8217;ve already validated the e-mail address and I won&#8217;t be validating the optional message just yet. So let&#8217;s validate the name. I used a function from the same script I cited when I used the e-mail validation function:</p>
<pre class="brush: php;">
// check whether input is alphabetic
    function isAlpha($value) {
        return preg_match('/^[a-zA-Z]+$/', $value);
    }
</pre>
<p>Add this function to the beginning of the document and add another || to the elseif () {} part of the loop saying &#8220;!isAlpha($_POST['name'])&#8221;. Also, warn the user that they can use only letters for the name and no periods or other characters nor numbers. The optional message SHOULD be validated but I am not certain how to go about it just yet. I&#8217;d like to let the user be able to use some personalized html code so I won&#8217;t look into it too much. Also, I am not storing that message so I don&#8217;t have to fear an SQL attack.</p>
<h1>Conclusion</h1>
<p>I hope this shed some light on how you&#8217;d create an e-mail form as well as how to use the mail() function. As you can see, the possibilities with PHP are endless. I&#8217;d like to also inform you that it took me several hours to write this script with numerous trial&amp;error runs. I&#8217;m self-taught, and mostly used the <a title="PHP manual" href="http://php.net/manual/en/index.php">PHP manual</a> as a reference. I hope this helped and that you have fun trying this out for yourselves!</p>
<p>I&#8217;d appreciate any comments regarding the security of this script as well as usability. I, myself, am about to launch the script on one of my pages so I&#8217;d like to know what people have to say about it.</p>
<p>Final Script with all its features added: Note that I will update this part of the post as necessary when I find bugs and optimize it.</p>
<pre class="brush: php;">

&lt;?php
//functions
/* PHP script written by Alexander Janus
contact: alexander@davepcguy.com
blog: http://www.davepcguy.com
if you want to use this script, include this header
*/
function isEmailAddress($value) {
 return eregi('^([a-z0-9])+([\.a-z0-9_-])*@([a-z0-9_-])+(\.[a-z0-9_-]+)*\.([a-z]{2,6})$', $value);
 }
// check whether input is alphabetic
function isAlpha($value) {
 return preg_match('/^[a-zA-Z]+$/', $value);
 }

function name ($var) {
 if (!isset($var)){
 return TRUE;
 }
 if (empty($var)){
 return TRUE;
 }
 if (trim($var) == ''){
 return TRUE;
 }
 if (isAlpha($var) == 0){
 return TRUE;
 }
}
function email ($var) {
 if (!isset($var)){
 return TRUE;
 }
 if (empty($var)){
 return TRUE;
 }
 if (trim($var) == ''){
 return TRUE;
 }
 if (isEmailAddress($var) == 0){
 return TRUE;
 }
}

//loop
if(!isset($_POST['submit'])){

 ?&gt;
Please enter your name and e-mail address. The name field supports only alphabetic characters (letters).
&lt;form action=&quot;&lt;?php $_SERVER['PHP_SELF'];?&gt;&quot; method=&quot;post&quot;&gt;
Name:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;name&quot; maxlength=&quot;41&quot; /&gt;&lt;br /&gt;
E-mail address:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;email&quot; maxlength=&quot;40&quot; /&gt;&lt;br /&gt;
Message (&lt;i&gt;optional&lt;/i&gt;):&lt;br /&gt; &lt;textarea name=&quot;optmessage&quot; cols=&quot;30&quot; rows&quot;10&quot; maxlength&quot;140&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
&lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Submit&quot; /&gt;
&lt;/form&gt;

&lt;?php
}

elseif (name($_POST['name']) || email($_POST['email'])) {
 if (name($_POST['name'])) {
 echo &quot;Please enter a valid name. Periods, commas, or other non-alpha characters are not supported.&lt;br/&gt;&quot;;
 }
 if (email($_POST['email'])){
 echo &quot;Please enter a valid e-mail address in this format: account@email.com. &lt;br /&gt;&quot;;}
?&gt;

&lt;form action=&quot;&lt;?php $_SERVER['PHP_SELF'];?&gt;&quot; method=&quot;post&quot;&gt;
Name:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;name&quot; maxlength=&quot;41&quot; /&gt;&lt;br /&gt;
E-mail address:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;email&quot; maxlength=&quot;40&quot; /&gt;&lt;br /&gt;
Message (&lt;i&gt;optional&lt;/i&gt;):&lt;br /&gt; &lt;textarea name=&quot;optmessage&quot; cols=&quot;30&quot; rows&quot;10&quot; maxlength&quot;140&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;
&lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Submit&quot; /&gt;
&lt;/form&gt;
 &lt;?php

}
else {
//Database connection
//MySQL variable
$host = &quot;localhost&quot;;
$user = &quot;user&quot;;
$pass = &quot;password&quot;;
$db = &quot;coupon&quot;;

//connect
$connection = mysql_connect($host, $user, $pass) or die (&quot;Unable to connect!&quot;);

// select database
mysql_select_db($db) or die (&quot;Unable to select database!&quot;);

//variables

$to = $_POST['email'];
$subject = &quot;Coupon from the Chiropractors&quot;;
$name = $_POST['name'];
$optmessage= $_POST['optmessage'];
$opt = wordwrap ($optmessage, 70);
$sent= &quot;&lt;div id=\&quot;printReady\&quot;&gt;
&lt;div style=\&quot; width: 457px; background: white; text-align: center;\&quot;&gt;
&lt;p&gt; Dear $name,&lt;br /&gt;
Thank you for visiting us at &lt;a href=\&quot;http://www.davepcguy.com\&quot;&gt;Website&lt;/a&gt;
Here is your coupon&lt;/p&gt;
&lt;div align=\&quot;center\&quot; style=\&quot;padding=\&quot;50px\&quot;&gt;
&lt;span style=\&quot;position: absolute; margin: 75px 120px 10px 50px; font-size: 30px; border-bottom: 2px solid black; width: 250px\&quot;&gt; $name &lt;/span&gt;
&lt;img src=\&quot;coupon2.png\&quot; width=\&quot;436\&quot; height=\&quot;292\&quot; /&gt;&lt;/div&gt;
&lt;p&gt; Please print this coupon out and present it on your next visit. Thank you, and we hope to see you soon!&lt;/p&gt;
&lt;p style=\&quot;margin-left: 50px\&quot;&gt; Sincerely, Alexander &lt;/p&gt;
&lt;p&gt; P.S. please print out your coupon immediately or save this page because it will not be available after you close out.
If you're having any trouble, please contact our &lt;a href=\&quot;mailto:alexander@davepcguy.com\&quot;&gt;webmaster&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Optional Message: &lt;br /&gt;
$opt
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;form id=\&quot;printMe\&quot; name=\&quot;printMe\&quot;&gt;  &lt;input type=\&quot;button\&quot; name=\&quot;printMe\&quot; onClick=\&quot;printSpecial()\&quot; value=\&quot;Print this Page\&quot;&gt; &lt;/form&gt;
&quot;;

//MYSQL QUERY
//check for duplicates
$duplicate = mysql_query(&quot;SELECT * FROM coupons where email='$to'&quot;);
$affected_rows = mysql_num_rows($duplicate);
if($affected_rows &gt;= 1)
{
echo $sent;
echo &quot;&lt;span style=\&quot;color: red;\&quot;&gt;Note: If you have already entered your e-mail address before, you will not get another e-mail message. &lt;br /&gt;
This is to prevent spamming.&lt;/span&gt;&quot;;
die('');
}
else {
// create query
 $query = &quot;INSERT INTO coupons (name, email) VALUES ('$name', '$to')&quot;;

 // execute query
 $result = mysql_query($query) or die (&quot;Error in query: $query. &quot;.mysql_error());

 // close connection
 mysql_close($connection);

}

//html message
$message = &quot;&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=\&quot;Content-Type\&quot; content=\&quot;text/html; charset=utf-8\&quot; /&gt;
&lt;title&gt;Chiropractic&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;p&gt; Dear $name,&lt;br /&gt;
Thank you for visiting us at our&lt;a href=\&quot;http://www.davepcguy.com\&quot;&gt;Website&lt;/a&gt;
&lt;p&gt; Please print out your coupon and present it on your next visit. Thank you, and we hope to see you soon!&lt;/p&gt;
&lt;p style=\&quot;margin-left: 50px\&quot;&gt; Sincerely, Alexander &lt;/p&gt;
&lt;p&gt;optional message:&lt;br /&gt;
$opt&lt;/p&gt;
&lt;p&gt;
Your e-mail: $to &lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;&quot;;

 //header information
$from = &quot;no-reply@davepcguy.com&quot;;
$headers = &quot;From: $from&quot; . &quot;\r\n&quot;;
$headers .= 'MIME-Version: 1.5.2' . &quot;\r\n&quot;;
$headers .= 'Content-type: text/html; charset=iso-8859-1' . &quot;\r\n&quot;;
$headers .= &quot;BCC: reply@davepcguy.com&quot; . &quot;\r\n&quot;;

//functions
$mail_sent= mail(&quot;$to&quot;, $subject, $message, $headers);

//announcement

echo $mail_sent ? $sent : &quot;Mail failed&quot;;
echo $sent;
}

?&gt;
</pre>




Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;title=Custom%20E-mail%20Form&amp;bodytext=AH%21%20So%20I%20have%20to%20create%20a%20custom%20e-mail%20sending%20form.%20He%20wants%20me%20to%20create%20a%20webform%20that%20will%20ask%20for%20a%20person%27s%20name%20and%20e-mail%20address.%20Once%20those%20are%20input%2C%20an%20e-mail%20will%20be%20sent%20to%20the%20person%27s%20e-mail%20account%20with%20a%20thank%20you%20message.%20Meanwhil" title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;title=Custom%20E-mail%20Form&amp;notes=AH%21%20So%20I%20have%20to%20create%20a%20custom%20e-mail%20sending%20form.%20He%20wants%20me%20to%20create%20a%20webform%20that%20will%20ask%20for%20a%20person%27s%20name%20and%20e-mail%20address.%20Once%20those%20are%20input%2C%20an%20e-mail%20will%20be%20sent%20to%20the%20person%27s%20e-mail%20account%20with%20a%20thank%20you%20message.%20Meanwhil" title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;t=Custom%20E-mail%20Form" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;title=Custom%20E-mail%20Form&amp;annotation=AH%21%20So%20I%20have%20to%20create%20a%20custom%20e-mail%20sending%20form.%20He%20wants%20me%20to%20create%20a%20webform%20that%20will%20ask%20for%20a%20person%27s%20name%20and%20e-mail%20address.%20Once%20those%20are%20input%2C%20an%20e-mail%20will%20be%20sent%20to%20the%20person%27s%20e-mail%20account%20with%20a%20thank%20you%20message.%20Meanwhil" title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;title=Custom%20E-mail%20Form&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=AH%21%20So%20I%20have%20to%20create%20a%20custom%20e-mail%20sending%20form.%20He%20wants%20me%20to%20create%20a%20webform%20that%20will%20ask%20for%20a%20person%27s%20name%20and%20e-mail%20address.%20Once%20those%20are%20input%2C%20an%20e-mail%20will%20be%20sent%20to%20the%20person%27s%20e-mail%20account%20with%20a%20thank%20you%20message.%20Meanwhil" title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;title=Custom%20E-mail%20Form" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;t=Custom%20E-mail%20Form&amp;s=AH%21%20So%20I%20have%20to%20create%20a%20custom%20e-mail%20sending%20form.%20He%20wants%20me%20to%20create%20a%20webform%20that%20will%20ask%20for%20a%20person%27s%20name%20and%20e-mail%20address.%20Once%20those%20are%20input%2C%20an%20e-mail%20will%20be%20sent%20to%20the%20person%27s%20e-mail%20account%20with%20a%20thank%20you%20message.%20Meanwhil" title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Custom%20E-mail%20Form%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Custom%20E-mail%20Form&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Custom%20E-mail%20Form&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fcustom-e-mail-form%2F&amp;title=Custom%20E-mail%20Form" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/custom-e-mail-form/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Setting up (Part 1)</title>
		<link>http://www.davepcguy.com/archive/setting-up-part-1/</link>
		<comments>http://www.davepcguy.com/archive/setting-up-part-1/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 22:12:24 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xampp]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=197</guid>
		<description><![CDATA[A short tutorial on setting up your own server under Windows using XAMPP. It also features a short WordPress installation and set-up guide. ]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=server,wordpress,xampp" height="61" width="50" /><br />
			</a>
		</div>
<p>Here&#8217;s the first part of my &#8220;Setting Up&#8221; tutorials. It will teach you how to set up to learn PHP, and for web development. It is my own personally journey as well because I&#8217;m getting ready to make new <a href="http://wordpress.org/extend/themes/">WordPress themes</a>. I&#8217;m using Windows XP, soon will be upgrading to Windows 7 (when it comes out) so most of my tutorials will be Windows-oriented.</p>
<p><strong>Installing the Server Software<br />
</strong></p>
<p>The best way to learn PHP and scripting is at home and without buying a domain nor paying for hosting. So let&#8217;s set up your computer as a server using <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a>. XAMPP stands for X (as in a variable instead of an OS name) Apache, MySQL, PHP, and PERL. You can use any other alternative depending on your operating system. There&#8217;s also <a href="http://www.wampserver.com/en/">WAMP</a> for Windows (I use this one) and <a href="http://www.mamp.info/en/index.html">MAMP</a> for Mac. All are basically the same with small differences. I&#8217;ll show you how to use XAMPP because it&#8217;s the most cross-platform package. I&#8217;ll do an article on how to set up your Linux with XAMPP later.</p>
<p><span id="more-197"></span></p>
<p>So what are these packages? They install the <a href="http://www.apache.org/">Apache</a> Server, <a href="http://www.mysql.com/">MySQL</a> database system, and <a href="http://www.php.net/">PHP</a> all in one. The packages are all set-up to interact and will save you a ton of time. You won&#8217;t have to install each program separately and try to intertwine them. It will all be done for you. Go to the <a href="http://www.apachefriends.org/en/xampp.html">XAMPP website</a>, select Windows and download the newest package available. Don&#8217;t get distracted by the add-ons.</p>
<p><a href="http://www.davepcguy.com/wp-content/uploads/2009/09/picture1.jpg"><img class="size-thumbnail wp-image-199 alignleft" title="picture1" src="http://www.davepcguy.com/wp-content/uploads/2009/09/picture1-150x107.jpg" alt="picture1" width="150" height="107" /></a> Depending on the package that you downloaded, you&#8217;ll either have an executable file or an archive (zip). I downloaded the .exe for my windows because it was forty megs lighter and easier to set-up. Let&#8217;s move on. If you downloaded the .exe file, open it and install it in a folder. When choosing a destination folder, I recommend using your main drive (usually C:\) and a subfolder. I&#8217;m installing my XAMPP package into C:\server\, click install, follow the directions and you&#8217;re done. If you used the .zip download, extract all of the contents into a folder (C:\server\ for me) and follow the read me which tells you to use a couple .bat files to set-up everything. Once you&#8217;re done, start up the XAMPP Control Panel (it will be under start&gt;programs&gt;Xampp for Windows&gt; Xampp Control Panel). If you&#8217;re having problems with the Control Panel, start the MySQL and Apache services by double-clicking on apache_start.bat and mysql_start.bat in the main folder. </p>
<p>Here&#8217;s what the control panel looks like, it will list a different Windows version etc. but that&#8217;s alright:</p>
<p><a href="http://www.davepcguy.com/wp-content/uploads/2009/09/picture2.jpg"><img class="size-medium wp-image-204 alignleft" title="picture2" src="http://www.davepcguy.com/wp-content/uploads/2009/09/picture2-300x252.jpg" alt="picture2" width="300" height="252" /></a>You can start up all the services shown by just clicking on start. I had some problem with it so I used the .bat files instead. Now point your web browser to http://127.0.0.1/ and you&#8217;ll see a XAMPP splash page, pick the language and let&#8217;s get going. I&#8217;ll cover all the features of XAMPP later tutorials, so for now, be happy that it works <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Keep your browser there and read on. Put all your PHP files and other files in &#8230;/xampp/htdocs/yourfoldername/ I set mine up /xampp/htdocs/learningPHP and I put an index.php file in there that will link me to all my scripts and tutorials that I absolved (ie. &lt;a href=&#8221;tutorial1.php&#8221;&gt;tutorial one&lt;/a&gt;). This will keep your folders organized and it&#8217;ll be easier to find these files. Type in http://127.0.0.1/learningPHP and you&#8217;ll get to your index.php file there. Unlike WAMP, XAMPP doesn&#8217;t seem to have a listing directory on its server but don&#8217;t worry too much about that. We&#8217;re set-up and ready to go. If you didn&#8217;t get any of this, don&#8217;t worry  about it. Just remember to make a new folder in /htdocs/ where you can store your php scripts and other stuff. Also, remember that unless you set up your apache and mysql as services (the process is in the readme file and included in the .exe installation), you&#8217;ll have to start them every time you start up your computer.<br />
To get rid of XAMPP, simply delete the folder or use the provided &#8220;uninstall_xampp.bat&#8221; file</p>
<p><strong>Setting up the Database</strong></p>
<p>While in your browser is at http://127.0.0.1/xampp/ Click on PHPmyadmin and follow these directions.</p>
<ol>
<li>click on the &#8220;privileges&#8221; tab</li>
<li>add a new user</li>
<li>type in your user name, I&#8217;ll use the user name &#8220;Alexander&#8221;</li>
<li>under the host tab, click &#8220;local&#8221; and it&#8217;ll fill out localhost in the field next to it</li>
<li>type in a password, I&#8217;ll use &#8220;davepcguy&#8221;</li>
<li>Database for user: none</li>
<li>check all privileges (it&#8217;s the easiest and as long as you don&#8217;t put your server online, it&#8217;ll be safe)</li>
<li>click &#8220;Go&#8221;</li>
<li>go back to &#8220;Databases&#8221;</li>
<li>under Create New Database, create one, I created &#8220;WP&#8221; for my WordPress</li>
</ol>
<p>Now I have a database named &#8220;WP&#8221; under the username &#8220;Alexander&#8221; with the password &#8220;davepcguy&#8221;</p>
<p>Your database list should look like this:</p>
<p><a href="http://www.davepcguy.com/wp-content/uploads/2009/09/databases.jpg"><img class="aligncenter size-full wp-image-205" title="databases" src="http://www.davepcguy.com/wp-content/uploads/2009/09/databases.jpg" alt="databases" width="232" height="222" /></a>The first five databases are preset, and my &#8220;wp&#8221; database is the one I made.</p>
<p><strong>Setting up WordPress:</strong></p>
<p>First, go download <a href="http://wordpress.org/">WordPress</a>.</p>
<p>then:</p>
<ol>
<li>extract the zip file into htdocs</li>
<li>change &#8220;wp-config-sample.php&#8221; to &#8220;wp-config.php&#8221;</li>
<li>open the file with your PHP editor. You can also use your text editor if you don&#8217;t have a PHP editor yet. I&#8217;ll post a short tutorial on setting up your PHP editor later.</li>
<li>find this section:
<pre name="code" class="php:nocontrols:nogutter"> // ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'putyourdbnamehere');

/** MySQL database username */
define('DB_USER', 'usernamehere');

/** MySQL database password */
define('DB_PASSWORD', 'yourpasswordhere');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');</pre>
</li>
<li>Change &#8220;putyourdbnamehere&#8221; to the database name you created, in my case it would be &#8220;wp&#8221;</li>
<li>Change &#8220;usernamehere&#8221; to the username we set up earlier, in my case that would be &#8220;Alexander&#8221;</li>
<li>Change &#8220;yourpasswordhere&#8221; to your password we set earlier, in my case it would be &#8220;davepcguy&#8221;</li>
<li>save the file and your result should look like this:
<pre name="code" class="php:nocontrols:nogutter">// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wp');

/** MySQL database username */
define('DB_USER', 'Alexander');

/** MySQL database password */
define('DB_PASSWORD', 'davepcguy');

/** MySQL hostname */
define('DB_HOST', 'localhost');</pre>
</li>
<li>go to: http://127.0.0.1/wordpress</li>
</ol>
<p>Now let&#8217;s install WordPress. Type in the blog title and your e-mail. Press &#8220;install&#8221;. It will give you a randomly generated password. Copy that password and click &#8220;Log in&#8221;. Type &#8220;Admin&#8221; as user name and paste the password. Viola, you got your own home WordPress blog set up!</p>
<p>A couple of tips:</p>
<ul>
<li>go change your password immediately, there should be a link on top of the page to do that</li>
<li>your wordpress password and your MySQL password are NOT the same</li>
<li>you can always change your e-mail and password under Users&gt;your profile</li>
<li>before you start posting blog-posts, change your nickname from &#8220;admin&#8221; to something else</li>
<li>to log in next time, go back to &#8220;http://127.0.0.1/wordpress&#8221; and find the login button at the bottom of the right sidebar</li>
</ul>
<p>That&#8217;s all you need to start messing around with PHP and WordPress for now. Have fun figuring out WordPress, I&#8217;ll have a tutorial ready later to explain how to use its functions fully but you probably won&#8217;t need that. Also, note that this set-up is for home use only. I&#8217;d suggest a better username and password if you were to host your blog online. Setting up a WordPress blog online is a bit different, there is no &#8220;phpmyadmin&#8221; and you&#8217;ll have to create a database differently, and probably using software your host provides. Enjoy! <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1666px; width: 1px; height: 1px;">http://127.0.0.1/wordpressgo</div>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;title=Setting%20up%20%28Part%201%29&amp;bodytext=A%20short%20tutorial%20on%20setting%20up%20your%20own%20server%20under%20Windows%20using%20XAMPP.%20It%20also%20features%20a%20short%20WordPress%20installation%20and%20set-up%20guide.%20" title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;title=Setting%20up%20%28Part%201%29&amp;notes=A%20short%20tutorial%20on%20setting%20up%20your%20own%20server%20under%20Windows%20using%20XAMPP.%20It%20also%20features%20a%20short%20WordPress%20installation%20and%20set-up%20guide.%20" title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;t=Setting%20up%20%28Part%201%29" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;title=Setting%20up%20%28Part%201%29&amp;annotation=A%20short%20tutorial%20on%20setting%20up%20your%20own%20server%20under%20Windows%20using%20XAMPP.%20It%20also%20features%20a%20short%20WordPress%20installation%20and%20set-up%20guide.%20" title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;title=Setting%20up%20%28Part%201%29&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=A%20short%20tutorial%20on%20setting%20up%20your%20own%20server%20under%20Windows%20using%20XAMPP.%20It%20also%20features%20a%20short%20WordPress%20installation%20and%20set-up%20guide.%20" title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;title=Setting%20up%20%28Part%201%29" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;t=Setting%20up%20%28Part%201%29&amp;s=A%20short%20tutorial%20on%20setting%20up%20your%20own%20server%20under%20Windows%20using%20XAMPP.%20It%20also%20features%20a%20short%20WordPress%20installation%20and%20set-up%20guide.%20" title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Setting%20up%20%28Part%201%29%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Setting%20up%20%28Part%201%29&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Setting%20up%20%28Part%201%29&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsetting-up-part-1%2F&amp;title=Setting%20up%20%28Part%201%29" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/setting-up-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A PHP poem</title>
		<link>http://www.davepcguy.com/archive/simple-fun-with-php/</link>
		<comments>http://www.davepcguy.com/archive/simple-fun-with-php/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 15:43:25 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=133</guid>
		<description><![CDATA[A short tutorial on making a simple PHP script poem. It's a fun way to learn the basics about PHP as well as employ some creativity.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=%23webdev" height="61" width="50" /><br />
			</a>
		</div>
<p>We all know PHP is a lot of fun in on itself but let&#8217;s put some basic skills into making a creative script. Something, you probably wouldn&#8217;t even consider doing because it seems like a waste of time. Don&#8217;t laugh, I know what you&#8217;re thinking. And I know that you&#8217;ll laugh when you finish reading this article.</p>
<p>So how about we write a PHP poem. <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Yeah, you think it&#8217;s silly, but so what? I found that making useless fun code is the best way to learn, at least for a beginner. It helps getting used to setting up the variables, doing switches, and making sense of forms.   I wrote this <a href="http://www.davepcguy.com/wp-content/uploads/2009/09/nonpictures/aphppoem.php">piece of code</a> when I started out with PHP a couple months ago. Now let&#8217;s start!</p>
<p>First, set up the variables. I decided to make my poem a bit &#8220;dynamic&#8221; (or rather interactive) so I used some different feelings that the user can choose from:<span id="more-133"></span></p>
<pre name="code" class="php:nocontrols:nogutter">$happiness = "happy, and joyful about your life";
$sadness = "sad, and just plain down";
$loneliness = "lonely because no one is around";
$togetherness = "companionship because you love your friends";
$love = "love, pure love.";
$depression = "depressed, because that happens sometimes, too";</pre>
<p>Haha, excuse my poor code-to-wordpress integration skills, it seems that google syntax highlighting hates me. I&#8217;ll fix it later when I find a good plugin.<br />
Anyways, here we go, I set up a few basic variables describing emotions that I want to use in my script. These are all classified as strings for those of you who don&#8217;t know.<br />
Now let&#8217;s put them in an array:</p>
<pre name="code" class="php:nocontrols:nogutter">$feelings= array( $love, $depression, $sadness, $happiness, $loneliness, $togetherness);</pre>
<p>This will make it easier to echo out. Next, I&#8217;ll set an &#8220;if&#8221; statement to check if anything was submitted to the<a href="http://www.php.net/manual/en/reserved.variables.post.php"> $_POST</a> global variable. This variable is generally used when submitting form data, intrigued about what I&#8217;m going to do next?</p>
<pre name="code" class="php:nocontrols:nogutter">if (!isset($_POST['submit'])){
Are you feeling:&lt;br /&gt;
&lt;form action="&lt;?php echo $_SERVER['PHP_SELF'];?&gt;" method="post"&gt;
&lt;?php
foreach ($feelings as $feel) {
 print "&lt;input type=\"checkbox\" name=\"whatifeel[]\" value=\"$feel\"&gt;$feel&lt;br&gt;";
 }
?&gt;
&lt;input type="submit" name="submit" value="Select" /&gt;</pre>
<p>The &#8220;if (!<a href="http://www.php.net/isset">isset</a>($_POST['submit']))&#8221; piece of code is probably the most fundamental and amazing part of PHP. As you can see above, the code will be self-sustaining, it will not need another external file. The &#8220;if&#8221; statement makes sure there are no $_POST values submitted and when they&#8217;re not, it echoes out a form which will THEN submit a value to $_POST. I know, it&#8217;s ingenious.</p>
<p>Let&#8217;s move on though, what does the form above say? Let&#8217;s translate it to plain English because this is the most important part of the script:</p>
<blockquote><p>If there are no values submitted to the $_POST variable,</p>
<p>write &#8220;Are you feeling:&#8221;</p>
<p>then, show a form that will submit its information to &#8220;PHP_SELF&#8221;, which is the site itself, using the &#8220;POST&#8221; method.</p>
<p>next, for every variable in the $feelings array, show the value of the variables and show a checkbox that will send data to the &#8220;whatifeel[]&#8221; array(the data will be stored in $_POST['whatifeel'].</p>
<p>Finally, show a button that will submit all of the information to the server.</p></blockquote>
<p>Let&#8217;s move onto the action, getting the work actually done. The next part of this code will feature the &#8220;else&#8221; code as well as the final result after you submit the data into the server.</p>
<pre name="code" class="php:nocontrols:nogutter">&lt;?php
}
else {

 foreach (($_POST['whatifeel']) as $f) {
 echo "I'll tell you what is happening, &lt;br&gt;
 and how you feel, &lt;br&gt;
and what is real&lt;br&gt;&lt;ul&gt;";
 switch ($f) {

 case $happiness:
 echo "&lt;li&gt;And when you envision yourself&lt;br&gt;
in love, with money and wealth&lt;br&gt;
you'll feel happy.&lt;br&gt;&lt;br&gt;";
 break;
 case $loneliness:
 echo "&lt;li&gt;And when you remember him or her, &lt;br&gt;
he or she does not prefer &lt;br&gt;
your company nor you.&lt;br&gt;&lt;br&gt;";
 break;
 case $sadness;
 echo "&lt;li&gt;And when you think that person or event&lt;br&gt;
the memory of sight and scent&lt;br&gt;
you remember your sadness.&lt;br&gt;&lt;br&gt;";
 break;
 case $togetherness;
 echo "&lt;li&gt;And when you look around and see &lt;br&gt;
you and your present company&lt;br&gt;
you'll be glad to be.&lt;br&gt;&lt;br&gt;";
 break;
 case $love;
 echo "&lt;li&gt;And when you see that one,&lt;br&gt;
she will become, &lt;br&gt;
and represent your love.&lt;br&gt;&lt;br&gt;";
 break;
 case $depression;
 echo "&lt;li&gt;And when you feel on the inside&lt;br&gt;
and you know you've tried&lt;br&gt;
you feel sad and depressed.&lt;br&gt;&lt;br&gt;";
 break;
 }

 }

}?&gt;</pre>
<p>There we go. Now let me explain the mechanics of this: First, I closed the &#8220;if&#8221; tag and introduced the &#8220;else&#8221;. Next, I used &#8220;foreach&#8221; to echo out the first stanza of the poem (I&#8217;ll tell you what is happening&#8230;). This stanza will repeat for every variable submitted into $_POST['whatifeel']. The second stanza depends on the variables submitted so I made <a href="http://devzone.zend.com/node/view/id/628">a switch</a>. This switch will echo out the next stanza depending on what variable it&#8217;s dealing with. If you submitted the value &#8220;$sadness&#8221;, it will echo out &#8220;And when you think&#8230;.&#8221; as the second stanza. The process will repeat for every single value you submitted in the first part of this process. I added the &#8220;&lt;li&gt;&#8221; and &#8220;&lt;ul&gt;&#8221; tags to make the script look a bit more interesting when used. The script will also end up echoing out &#8220;steps&#8221;.</p>
<p>Here&#8217;s what the first part of the script looks like when parsed:</p>
<p><a href="http://www.davepcguy.com/wp-content/uploads/2009/09/phppoemscript1.jpg"><img class="aligncenter size-full wp-image-146" title="phppoemscript1" src="http://www.davepcguy.com/wp-content/uploads/2009/09/phppoemscript1.jpg" alt="phppoemscript1" width="322" height="181" /></a></p>
<p>And after you select the feelings, here&#8217;s your poem:</p>
<p><a href="http://www.davepcguy.com/wp-content/uploads/2009/09/phppoemscript2.jpg"><img class="aligncenter size-full wp-image-147" title="phppoemscript2" src="http://www.davepcguy.com/wp-content/uploads/2009/09/phppoemscript2.jpg" alt="phppoemscript2" width="383" height="441" /></a>Try it out for yourself! I uploaded the <a href="http://www.davepcguy.com/wp-content/uploads/2009/09/nonpictures/aphppoem.php">script</a>. I&#8217;ll have a download version for you in a couple of days! I hope you enjoyed my rather simple and fun tutorial.</p>
<p>The point of these simple tutorials is to teach you <a href="http://www.good-tutorials.com/tutorials/php/basics">the basics</a> and how to apply them to do something fun. I don&#8217;t think you&#8217;ll ever use this exact script anywhere (and if you do, you better give me credit! <img src='http://www.davepcguy.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) but you&#8217;ll use parts of it like the !isset($_POST['submit']) and the forms, and the switch too of course. It&#8217;s easier to learn PHP if you apply to something you already know and what&#8217;s fun for you. I like <a href="http://ppofthebrokenmind.blogspot.com/">writing</a> so this presented an opportunity for me to express my writing in an experimental form. Try it out!</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;title=A%20PHP%20poem&amp;bodytext=A%20short%20tutorial%20on%20making%20a%20simple%20PHP%20script%20poem.%20It%27s%20a%20fun%20way%20to%20learn%20the%20basics%20about%20PHP%20as%20well%20as%20employ%20some%20creativity." title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;title=A%20PHP%20poem&amp;notes=A%20short%20tutorial%20on%20making%20a%20simple%20PHP%20script%20poem.%20It%27s%20a%20fun%20way%20to%20learn%20the%20basics%20about%20PHP%20as%20well%20as%20employ%20some%20creativity." title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;t=A%20PHP%20poem" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;title=A%20PHP%20poem&amp;annotation=A%20short%20tutorial%20on%20making%20a%20simple%20PHP%20script%20poem.%20It%27s%20a%20fun%20way%20to%20learn%20the%20basics%20about%20PHP%20as%20well%20as%20employ%20some%20creativity." title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;title=A%20PHP%20poem&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=A%20short%20tutorial%20on%20making%20a%20simple%20PHP%20script%20poem.%20It%27s%20a%20fun%20way%20to%20learn%20the%20basics%20about%20PHP%20as%20well%20as%20employ%20some%20creativity." title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;title=A%20PHP%20poem" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;t=A%20PHP%20poem&amp;s=A%20short%20tutorial%20on%20making%20a%20simple%20PHP%20script%20poem.%20It%27s%20a%20fun%20way%20to%20learn%20the%20basics%20about%20PHP%20as%20well%20as%20employ%20some%20creativity." title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=A%20PHP%20poem%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=A%20PHP%20poem&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=A%20PHP%20poem&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fsimple-fun-with-php%2F&amp;title=A%20PHP%20poem" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/simple-fun-with-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP error reporting script</title>
		<link>http://www.davepcguy.com/archive/php-error-reporting-script/</link>
		<comments>http://www.davepcguy.com/archive/php-error-reporting-script/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 15:42:41 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[PHP and Scripting]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.davepcguy.com/?p=43</guid>
		<description><![CDATA[We&#8217;ve all encountered errors, especially during the synthesis of a new code. This is what a typical error looks like when you run it at a server at home: Parse error: parse error in C:\directory\10_3.php on line 4 Here, we know that the error was a parse error and that it happened in a file]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;source=clrkmck&amp;style=normal&amp;service_api=clrkmck%3AR_a73f58a91ed3515157df75ab6c37730f&amp;hashtags=%23webdev" height="61" width="50" /><br />
			</a>
		</div>
<p>We&#8217;ve all encountered errors, especially during the synthesis of a new code. This is what a typical error looks like when you run it at a server at home:</p>
<blockquote><p><strong>Parse error</strong>:  parse error in <strong>C:\directory\10_3.php</strong> on line <strong>4</strong></p></blockquote>
<p><strong> </strong>Here, we know that the error was a parse error and that it happened in a file called 10_3.php and it was on line 4. A parse error is typically just a missing semi-colon or a bracket. Nothing major, but it still triggers a fatal error. You can read all about the different errors and how to deal with them in the <a href="http://www.php.net/errorfunc">PHP manual</a> or at this nifty <a href="http://devzone.zend.com/node/view/id/652">Zend tutorial</a>. I learned most of my PHP skills from that tutorial so read through it because it will definitely help you out.</p>
<p><span id="more-43"></span></p>
<p>Now, if you have your own webpage set up, you certainly don&#8217;t want the users to see all that stuff, right? They won&#8217;t understand what it means and it&#8217;s not a nice way to show an error anyways.</p>
<p>There are  numerous ways to deal with error. You can use the <a href="http://us.php.net/manual/en/language.exceptions.php">try catch</a> method to eliminate and deal with errors. I&#8217;m not fluent in that method so I won&#8217;t even try to explain it.  One way to deal with non-fatal errors is adding this to your PHP script:</p>
<blockquote><p><span style="color: #339966;">error_reporting</span><span style="color: #ff0000;"><span style="color: #003366;">(</span>E_ERROR</span><span style="color: #003366;">)</span>;</p></blockquote>
<p>This will only trigger errors that are fatal to the system. You can add &#8220;~&#8221; in front of the &#8220;E_ERROR&#8221; inside the parenthesis and PHP will not trigger any fatal errors but it will all the others. If you want extra errors to report, such as if a number is negative instead of positive, or whatever else. Use this piece of script:</p>
<blockquote><p><span style="color: #003366;"><span style="color: #339966;">function</span> <span style="color: #ff0000;">isnumbernegative (<span style="color: #008080;">$num<span style="color: #ff0000;">) <span style="color: #003366;">{</span></span></span></span></span></p>
<p><span style="color: #003366;"><span style="color: #ff0000;"><span style="color: #008080;"><span style="color: #ff0000;"><span style="color: #003366;"> <span style="color: #339966;">if</span> (<span style="color: #008080;">$num</span> &lt; <span style="color: #ff0000;">0</span> ) {</span></span></span></span></span></p>
<p><span style="color: #003366;"><span style="color: #ff0000;"><span style="color: #008080;"><span style="color: #ff0000;"><span style="color: #003366;"> <span style="color: #339966;">trigger_error</span> (<span style="color: #ff0000;">&#8220;Number is negative&#8221;, E_USER_ERROR<span style="color: #003366;">);</span></span></span></span></span></span></span></p>
<p><span style="color: #003366;"><span style="color: #ff0000;"><span style="color: #008080;"><span style="color: #ff0000;"><span style="color: #003366;"><span style="color: #ff0000;"><span style="color: #003366;">}</span></span></span></span></span></span></span></p>
<p><span style="color: #003366;"><span style="color: #ff0000;"><span style="color: #008080;"><span style="color: #ff0000;"><span style="color: #003366;"><span style="color: #ff0000;"><span style="color: #003366;">}</span></span></span></span></span></span></span></p></blockquote>
<p><span style="color: #003366;"><span style="color: #ff0000;"><span style="color: #008080;"><span style="color: #ff0000;"><span style="color: #003366;"><span style="color: #ff0000;"><span style="color: #003366;"> </span></span></span></span></span></span></span><span style="color: #ffffff;">This script will always trigger a <a href="http://www.php.net/manual/en/function.user-error.php">user error</a>. You can change the &#8220;E_USER_ERROR&#8221; to &#8220;E_USER_WARNING&#8221; which will let the script go on but will still display the error. Now let&#8217;s move on to something more complicated. I wrote a simple error-reporting scri</span>pt that will greatly help you out. It&#8217;s a simple text-based error-logging system using the function <a href="http://www.php.net/manual/en/function.set-error-handler.php">set_error_handler</a>:</p>
<blockquote><p><span style="color: #003366;"> <span style="color: #339966;">set_error_handler</span></span>(<span style="color: #ff0000;">&#8216;error&#8217;</span>);</p>
<p><span style="color: #339966;">function</span> <span style="color: #ff0000;">error(</span><span style="color: #008080;">$type, $msg, $file, $line, $context</span><span style="color: #ff0000;">) </span>{<br />
<span style="color: #339966;">echo </span><span style="color: #ff0000;">&#8220;&lt;h1&gt;Error!&lt;/h1&gt;&#8221;</span>;</p>
<p><span style="color: #003366;">$date</span> = <span style="color: #339966;">date</span>(<span style="color: #ff0000;">&#8216;l jS \of F Y h:i:s A&#8217;</span>);</p>
<p><span style="color: #339966;">echo</span> <span style="color: #ff0000;">&#8220;Here is the information provided by the script:&#8221;</span>;</p>
<p><span style="color: #339966;">echo </span><span style="color: #ff0000;">&#8220;&lt;hr&gt;&lt;pre&gt;&#8221;</span>;<br />
<span style="color: #ff6600;"> //shows the error code</span><br />
<span style="color: #003366;"> <span style="color: #339966;">echo</span> </span><span style="color: #ff0000;">&#8220;Error code: $type&lt;br /&gt;&#8221;</span>;</p>
<p><span style="color: #ff6600;">//error message</span><br />
<span style="color: #339966;">echo</span> <span style="color: #ff0000;">&#8220;Error message: $msg&lt;br /&gt;&#8221;</span>;</p>
<p><span style="color: #ff6600;">//error in what file and what line</span><br />
<span style="color: #339966;">echo</span> <span style="color: #ff0000;">&#8220;Script name and line number of error: $file:$line&lt;br /&gt;&#8221;</span>;<br />
<span style="color: #003366;">$variable_state </span>= <span style="color: #339966;">array_pop</span>($context);<br />
<span style="color: #339966;">echo</span> <span style="color: #ff0000;">&#8220;Variable state when error occurred: &#8220;</span>;<br />
<span style="color: #003366;">print_r</span>($variable_state);<br />
<span style="color: #339966;">echo </span><span style="color: #ff0000;">&#8220;&lt;/pre&gt;&lt;hr&gt;&lt;br&gt;&#8221;</span>;<br />
<span style="color: #ff6600;"><br />
//logging the error</span><br />
<span style="color: #003366;">$dir</span> = <span style="color: #ff0000;">&#8216;&#8230;/text_files/errors.txt &#8216;</span> or <span style="color: #339966;">die</span> (<span style="color: #ff0000;">&#8216;Could not be found&#8217;</span>);<br />
<span style="color: #003366;">$open</span> = <span style="color: #339966;">fopen</span>($dir,<span style="color: #ff0000;">&#8216;a&#8217;</span>) or<span style="color: #339966;"> die</span> (<span style="color: #ff0000;">&#8216;Could not be opened&#8217;</span>);</p>
<p><span style="color: #339966;">fwrite</span>($open,<span style="color: #ff0000;"> &#8220;ERROR: $date<br />
type: $type,<br />
msg: $msg,<br />
file: $file,<br />
line: $line,<br />
context: $context </span></p>
<p><span style="color: #ff0000;">&#8220;</span></p>
<p>) or <span style="color: #339966;">die</span> (<span style="color: #ff0000;">&#8216;Could not be written&#8217;</span>);</p>
<p><span style="color: #339966;">die</span> (<span style="color: #ff0000;">&#8216;Error has been logged&lt;br&gt;&#8217;</span>);</p>
<p>}</p></blockquote>
<p><span style="font-family: &quot;mceinline&quot;;">Next enclose the script in &#8220;&lt;?php&#8221; and &#8220;?&gt;&#8221; and save it. The <a href="http://devzone.zend.com/node/view/id/652">original script</a> that I based this one on did not have the text file logging capability. A few pointers: replace the &#8220;&#8230;/text_files/errors.txt&#8221; with a full directory name. You also have to create your own &#8220;errors.txt&#8221; file and if you don&#8217;t delete the entries at least once in a while, you&#8217;ll end up with a very large file over time. You can include a simple &#8220;if&#8221; loop and the function <a href="http://www.php.net/file_exists">&#8220;file_exists()&#8221; </a> to deal with the file creation. </span><span style="font-family: &quot;mceinline&quot;;">The next step is to implement the script into your website. You can use &#8220;include(&#8216;script.php&#8217;)&#8221; or use &#8220;require(&#8216;script.php&#8217;)&#8221; any one of these. I suggest you make a separate folder for scripts. The error will show up like this: </span></p>
<blockquote>
<h1>Error!</h1>
<p>Here is the information provided by the script:</p>
<hr />
<pre>Error code: 2
Error message: Wrong parameter count for explode()
Script name and line number of error: C:\directory\12.php:17
Variable state when error occurred: string</pre>
<hr /></blockquote>
<p><span style="font-family: &quot;mceinline&quot;;">The errors.txt will apear slightly differently but will include the same data plus time and date. Anyways, that&#8217;s it. Thank you for reading, and I hope you enjoyed this rather simple tutorial on error reporting. </span></p>

<p><span style="font-family: &quot;mceinline&quot;;"> </span></p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;partner=sociable" title="Print"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;title=PHP%20error%20reporting%20script%20&amp;bodytext=We%27ve%20all%20encountered%20errors%2C%20especially%20during%20the%20synthesis%20of%20a%20new%20code.%20This%20is%20what%20a%20typical%20error%20looks%20like%20when%20you%20run%20it%20at%20a%20server%20at%20home%3A%0D%0AParse%20error%3A%20%20parse%20error%20in%20C%3A%5Cdirectory%5C10_3.php%20on%20line%204%0D%0A%20Here%2C%20we%20know%20that%20the%20error%20was" title="Digg"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;title=PHP%20error%20reporting%20script%20&amp;notes=We%27ve%20all%20encountered%20errors%2C%20especially%20during%20the%20synthesis%20of%20a%20new%20code.%20This%20is%20what%20a%20typical%20error%20looks%20like%20when%20you%20run%20it%20at%20a%20server%20at%20home%3A%0D%0AParse%20error%3A%20%20parse%20error%20in%20C%3A%5Cdirectory%5C10_3.php%20on%20line%204%0D%0A%20Here%2C%20we%20know%20that%20the%20error%20was" title="del.icio.us"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;t=PHP%20error%20reporting%20script%20" title="Facebook"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;title=PHP%20error%20reporting%20script%20&amp;annotation=We%27ve%20all%20encountered%20errors%2C%20especially%20during%20the%20synthesis%20of%20a%20new%20code.%20This%20is%20what%20a%20typical%20error%20looks%20like%20when%20you%20run%20it%20at%20a%20server%20at%20home%3A%0D%0AParse%20error%3A%20%20parse%20error%20in%20C%3A%5Cdirectory%5C10_3.php%20on%20line%204%0D%0A%20Here%2C%20we%20know%20that%20the%20error%20was" title="Google Bookmarks"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;title=PHP%20error%20reporting%20script%20&amp;source=Dave+PC+Guy+Computers+and+Technology&amp;summary=We%27ve%20all%20encountered%20errors%2C%20especially%20during%20the%20synthesis%20of%20a%20new%20code.%20This%20is%20what%20a%20typical%20error%20looks%20like%20when%20you%20run%20it%20at%20a%20server%20at%20home%3A%0D%0AParse%20error%3A%20%20parse%20error%20in%20C%3A%5Cdirectory%5C10_3.php%20on%20line%204%0D%0A%20Here%2C%20we%20know%20that%20the%20error%20was" title="LinkedIn"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;title=PHP%20error%20reporting%20script%20" title="Reddit"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;t=PHP%20error%20reporting%20script%20&amp;s=We%27ve%20all%20encountered%20errors%2C%20especially%20during%20the%20synthesis%20of%20a%20new%20code.%20This%20is%20what%20a%20typical%20error%20looks%20like%20when%20you%20run%20it%20at%20a%20server%20at%20home%3A%0D%0AParse%20error%3A%20%20parse%20error%20in%20C%3A%5Cdirectory%5C10_3.php%20on%20line%204%0D%0A%20Here%2C%20we%20know%20that%20the%20error%20was" title="Tumblr"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=PHP%20error%20reporting%20script%20%20-%20http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F" title="Twitter"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=PHP%20error%20reporting%20script%20&amp;body=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F" title="email"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=PHP%20error%20reporting%20script%20&amp;url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F" title="Slashdot"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.davepcguy.com%2Farchive%2Fphp-error-reporting-script%2F&amp;title=PHP%20error%20reporting%20script%20" title="StumbleUpon"><img src="http://www.davepcguy.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.davepcguy.com/archive/php-error-reporting-script/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
