<?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>AmberWeinberg.com</title> <atom:link href="http://www.amberweinberg.com/feed/" rel="self" type="application/rss+xml" /><link>http://www.amberweinberg.com</link> <description>Design, Development and Freelance Articles and Tutorials</description> <lastBuildDate>Wed, 09 May 2012 11:18:42 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <item><title>Good Developer Conferences</title><link>http://www.amberweinberg.com/good-developer-conferences/</link> <comments>http://www.amberweinberg.com/good-developer-conferences/#comments</comments> <pubDate>Wed, 09 May 2012 11:12:16 +0000</pubDate> <dc:creator>Amber Weinberg</dc:creator> <category><![CDATA[blog]]></category> <category><![CDATA[development]]></category> <category><![CDATA[design]]></category> <category><![CDATA[events]]></category> <category><![CDATA[reviews]]></category><guid
isPermaLink="false">http://www.amberweinberg.com/?p=5458</guid> <description><![CDATA[Last week I wrote about overpriced conferences, so this week I thought I&#8217;d write about the other side of the coin. I’m sitting on a train in Brighton that was supposed to be in London by now, but am happy as a peach. I’ve just come from a fantastic conference, Points Brighton, that I was asked [...]<br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5458&c=1010887084' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5458&c=1010887084' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></description> <content:encoded><![CDATA[<p>Last week I wrote about <a
title=\"Overpriced Developer Conferences\" href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5hbWJlcndlaW5iZXJnLmNvbS9vdmVycHJpY2VkLWRldmVsb3Blci1jb25mZXJlbmNlcy8=">overpriced conferences</a>, so this week I thought I&#8217;d write about the other side of the coin. I’m sitting on a train in Brighton that was supposed to be in London by now, but am happy as a peach. I’ve just come from a fantastic conference, <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5wb2ludHNicmlnaHRvbi5jby51ay8=" target=\"_blank\">Points Brighton</a>, that I was asked to speak at last minute due to one of their speakers being sick.</p><p>It was a mini-conference and I had to leave it early, in order to not be stuck from the tube closing. Tickets were about £6 and this was their second one.</p><p>They had a FANTASTIC raffle, in which I won one of the tees (<a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL21heHZvbHRhci5jb20v" target=\"_blank\">Tim Van Damme</a>&#8216;s <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3dlYXJ5b3ViZWxvbmcuY29tLw==" target=\"_blank\">PxlFucker</a>) AND books (<a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3JlbXlzaGFycC5jb20v" target=\"_blank\">Remy Sharp</a>&#8216;s <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5hbWF6b24uY29tL2dwL3Byb2R1Y3QvMDMyMTc4NDQyMS9yZWY9YXNfbGlfc3NfdGw/aWU9VVRGOCZhbXA7dGFnPXBvcnRvZmFtYmV3ZWktMjAmYW1wO2xpbmtDb2RlPWFzMiZhbXA7Y2FtcD0xNzg5JmFtcDtjcmVhdGl2ZT0zOTA5NTcmYW1wO2NyZWF0aXZlQVNJTj0wMzIxNzg0NDIx" target=\"_blank\">HTML5</a>) I’ve been wanting for awhile. I also won the entire set of the <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5hYm9va2FwYXJ0LmNvbS8=" target=\"_blank\">A Book Apart</a> series, although I gave them back and allowed them to be raffled off to someone else since I already had the whole series. Oh, and did I mention the beautifully designed set of postcards that will be making its way to my office walls? Or the free drinks?</p><p>All of these items, including the venue, The Skiff, were donated to Points. All of the ticket and raffle proceeds go to <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3VrLnZpcmdpbm1vbmV5Z2l2aW5nLmNvbS9mdW5kcmFpc2VyLXdlYi9mdW5kcmFpc2VyL3Nob3dGdW5kcmFpc2VyUHJvZmlsZVBhZ2UuYWN0aW9uP3VzZXJVcmw9dGlhc3RyZWVz" target=\"_blank\">Tia’s Charity</a>, set up by <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3JlbXlzaGFycC5jb20v" target=\"_blank\">Remy Sharp</a>, which is a charity I love supporting and have always tried to donate when possible.</p><p>The speakers were fantastic and engaging. <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NpbXBsZWFzbWlsay5jby51ay8=" target=\"_blank\">James Seymour-Lock</a> spoke about achieving client goals and wireframing with content. <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2JvemJvei5jby51aw==" target=\"_blank\">Krystian Szastok</a> spoke about real SEO. And although I had to miss it, I heard <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NpbXBsZWFzbWlsay5jby51aw==" target=\"_blank\">David Pomfret</a>&#8216;s talk about typography was the best of all of us.</p><p>The people who attended were awesome and it was great to see a ton of those that i had been talking to on twitter for so long. You guys absolutely rock. I think Nikita (my hubby) enjoyed it as well and even made new friends with James. He needs new nerd friends.</p><p>All of this awesomeness for only £6 and the good feeling that it was all being donated to a charity.<strong> You can’t make a better conference than this</strong>.</p><p>When’s the next one, <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cHM6Ly90d2l0dGVyLmNvbS8jIS9taWtlc3RyZWV0eQ==" target=\"_blank\">Mike</a>?</p> <img
src="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=5458" width="1" height="1" style="display: none;" /><br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5458&c=1756551453' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5458&c=1756551453' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded> <wfw:commentRss>http://www.amberweinberg.com/good-developer-conferences/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Overpriced Developer Conferences</title><link>http://www.amberweinberg.com/overpriced-developer-conferences/</link> <comments>http://www.amberweinberg.com/overpriced-developer-conferences/#comments</comments> <pubDate>Fri, 04 May 2012 10:17:05 +0000</pubDate> <dc:creator>Amber Weinberg</dc:creator> <category><![CDATA[blog]]></category> <category><![CDATA[development]]></category> <category><![CDATA[culture]]></category> <category><![CDATA[events]]></category> <category><![CDATA[rant]]></category> <category><![CDATA[reviews]]></category><guid
isPermaLink="false">http://www.amberweinberg.com/?p=5442</guid> <description><![CDATA[Yesterday I attended and spoke at the Sourc{ conference in southern London. I did it completely free of charge, because I&#8217;d only had one other conference under my belt and have been wanting to get some more experience. I enjoyed being able to hang out with Remy Sharp, Paul Davis and my new best buddy, [...]<br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5442&c=1487782841' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5442&c=1487782841' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></description> <content:encoded><![CDATA[<p>Yesterday I attended and spoke at the <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5zb3VyY2VkZXZjb24uZXUv" target=\"_blank\">Sourc{ conference</a> in southern London. I did it completely free of charge, because I&#8217;d only had one other conference under my belt and have been wanting to get some more experience.</p><p>I enjoyed being able to hang out with <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tLyMhL3JlbQ==" target=\"_blank\">Remy Sharp</a>, <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tLyMhL3BhdWxhZGFtZGF2aXM=" target=\"_blank\">Paul Davis</a> and my new best buddy, <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tLyMhL2thdHNraWk=" target=\"_blank\">Kat Thompson</a>. I even meet a new friend who does some fantastic Sencha work, <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tL0ZyZWRyaWNCZXJsaW5n" target=\"_blank\">Fredric Berling</a>. However I was very. very disappointed in the conference itself.</p><p>First of all, even though the conference had some major sponsors, like O&#8217;Reilly and Sencha, they still priced their tickets at a whopping £799 &#8211; which is a whole lot more than most people can afford. I&#8217;m a huge proponent against expensive conferences, as I feel that the point of these conferences in the first place is to get the community together to learn and meet each other. Hard to do that when the only people who can afford it are the people who already know everything you&#8217;d need to know about the presented topics. What about the high schoolers, college students and newbies to our industry?</p><p>Moving on, even though I didn&#8217;t pay for my ticket since I was a speaker, I expected to have my socks knocked off for a conference that could charge that amount. Ive attended several Barcamp Nashvilles that were free, and Aral Balkan&#8217;s Update Conference that was around £300, and both provided not only a fantastic conference with great speakers, but a great show as well. Talking about development and design and sitting around all day can get a bit boring, so it&#8217;s to a conference&#8217;s credit when they can provide some much needed entertainment, as Aral did last year.</p><p>However, nothing about this conference said it was worth £799 per ticket. Heck, I would&#8217;ve been hard pressed to pay anything at all (or even really come) for this conference. I hate talking bad about someone who takes their time to set up these things, and also invites me on as a speaker, but I feel like something needs to be said, as it was such a terrible experience (as me and a few other speakers thought about just leaving before our talks even came up).</p><p>These conference would&#8217;ve been great for every conference maker to go to &#8211; as it was a great example of what <em>not</em> to do. Here are several major issues I felt really ruined the experience:</p><ul><li>There was absolutely no guidance at all. Speakers were not announced, no one was there to help us figure out where we should go, breaks were not announced, nothing. People generally walked around with no guidance at all and had to figure out what to do on their own. Where were the people planning this thing? We even heard one angry person yelling because he was trying to figure out who was in charge and no one was around.</li><li>There was also no guidance for the speakers. Emails from multiple speakers to the organisers went unanswered, and we weren&#8217;t told what to do upon arriving or where to go. We just had to guess. Especially questions about paying for travel expenses. We didn&#8217;t even get the normal speaker goody bag. Hmmm.</li><li>The major sponsor was Sencha &#8211; and guess what the majority of talks were centred around? Yep, Sencha. This conference should&#8217;ve just been labeled as Sencha based instead of mobile based.</li><li>There was no preparation involved. No real decoration or set up of the area or the stage. It look like they just waited until the day of before setup and preparation.</li><li>Now for the speakers. I&#8217;m hesitant to comment on this at all, because this was my first alone talk ever and I&#8217;m pretty sure it bombed a bit &#8211; after all, somehow my &#8220;hour&#8221; long mobile talk ended in 20 minutes. However, the speakers were pretty amateur and boring (most likely myself included). I think Remy was the only professional among us. For £799, I&#8217;d think they&#8217;d have spent more time vetting speakers and at least getting some more pros to talk. Or perhaps it was just the fact that none of us was given any help, guidance, or really any rules that ruined us. Oh boy.</li></ul><p>The next conference of the day is Future of Web Design. I believe these tickets are well above £1000. Ridiculous. Who, exactly, are their target audience? Not the web world. Or just people with employers daft enough to pay that amount? I know they have several major sponsors as well and it reminds me of the paid iPhone apps that still serve up ads. You can only have one or the other &#8211; not both.</p><p>I&#8217;d like to hear from the people who actually came (Paul, Kat, Remy, Fredric?) and what they thought. Was the money worth it? How could&#8217;ve been improved? Am I just being too harsh?</p> <img
src="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=5442" width="1" height="1" style="display: none;" /><br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5442&c=1831125139' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5442&c=1831125139' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded> <wfw:commentRss>http://www.amberweinberg.com/overpriced-developer-conferences/feed/</wfw:commentRss> <slash:comments>84</slash:comments> </item> <item><title>This Industry Is Full of Crap</title><link>http://www.amberweinberg.com/this-industry-is-full-of-crap/</link> <comments>http://www.amberweinberg.com/this-industry-is-full-of-crap/#comments</comments> <pubDate>Wed, 25 Apr 2012 09:33:14 +0000</pubDate> <dc:creator>Amber Weinberg</dc:creator> <category><![CDATA[blog]]></category> <category><![CDATA[whateververse]]></category> <category><![CDATA[business]]></category> <category><![CDATA[design]]></category> <category><![CDATA[development]]></category> <category><![CDATA[rant]]></category><guid
isPermaLink="false">http://www.amberweinberg.com/?p=5429</guid> <description><![CDATA[Forgive me for my harsh tone of voice today, I&#8217;ve had a rough week dealing with a stupid site with stupid code (my own). My mood became worse when I read my Twitter feed at the end of the day &#8211; to realize that our industry is simple, and utterly full of crap. I fully [...]<br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5429&c=1731188422' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5429&c=1731188422' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></description> <content:encoded><![CDATA[<p>Forgive me for my harsh tone of voice today, I&#8217;ve had a rough week dealing with a stupid site with stupid code (my own). My mood became worse when I read my Twitter feed at the end of the day &#8211; to realize that our industry is simple, and utterly full of crap.</p><p>I fully realize that by calling it out and complaining about it, I&#8217;m most likely adding to the issue at hand, but I can&#8217;t stand it anymore &#8211; I must say <em>something</em>. I&#8217;ve been making websites since I was 13, which (I&#8217;m sad to say) was 13 years ago. I&#8217;ve been in &#8220;the industry&#8221; for 6 years now. I&#8217;ve met some fantastic people, while also coming across some people that are meaner than the popular kids in middle school.</p><h3>Tools</h3><p>First off, I&#8217;m tired of people coming out and say &#8220;OMG YOU MUST DO THIS!1!1!!11!&#8221;. I&#8217;m been in the industry long enough to know, that there&#8217;s nothing in the web world that you <em>must</em> do, in terms of coding or design techniques. Technically, you <em>could</em> still eek out a living building static sites in tables. Yep, that still happens.</p><p>Just because a developer doesn&#8217;t want to use that fancy framework or new gidjit, doesn&#8217;t make them stupid, or less of an &#8220;expert&#8221; as you are. I&#8217;ve actually been called stupid because I refuse to use LESS or SASS. I&#8217;ll be the first to tell you right now &#8211; even if the practice of using preprocessors does stick around for the long run, I doubt you&#8217;ll even run into clients who won&#8217;t hire you because you don&#8217;t use it. Or at least, I don&#8217;t want to work with clients who insist on using buzzword technologies when having no clue what they&#8217;re for or do (I once had a client who insisted on using responsive design, and when they saw the site &#8220;moved&#8221; around, were upset it didn&#8217;t match the full version PSD exactly).</p><p>It&#8217;s important that you constantly improve yourself and what you do. It&#8217;s not important what everyone else says you should be doing. Same goes for responsive vs set pixels, pixels versus ems, browser versus Photoshop and multiple versus singles H1s. Find what works for you and what YOU feel is the correct way of doing things and just do it.</p><h3>Freelancers</h3><p>I love the fact that as a freelancer, I can choose who ever I want to work with &#8211; both in terms of clients and other freelancers. I&#8217;m no longer stuck with a coworker I hate. I&#8217;ve worked with so many freelancers that it&#8217;s easy for me to see just how different we all do things and run our business.</p><p>I will say that the number one complaint new clients have when they come to me is that the freelancer never delivered on-time. I&#8217;m not just talking about pure product deadlines but also about actual timely conversation.</p><p>Pure and simple: if you&#8217;re going to run a business, act like a business. If you promise to stay up every single night and work 24/7 until you finish that project, then by god, you better do it.</p><p>And dont&#8217; disappear from a project for days and weeks on end. While I try to only answer and empty my inbox once a day, I do do it at least once a day and do my best to send an answer back to everyone within 24-48 hours, even if I don&#8217;t have any new news for them. At least they&#8217;ll know I&#8217;m not out partying or sitting at my desk twiddling my thumbs. They know I&#8217;m still on it.</p><h3>People</h3><p>Perhaps my overarching issue today is the issue with people. We&#8217;re an industry of spoiled people. We get to sit at our desks everyday doing something really cool. We don&#8217;t have to stand all day, work in the sun or break our backs with manual labor. We get to do something that regular people can&#8217;t understand so we&#8217;re think we&#8217;re cool. We&#8217;re not.</p><p>I&#8217;m tired of hearing from all the fellow females in our industry about the disgusting hate mail they get. As a matter of fact, I don&#8217;t think I&#8217;ve ever heard any of my male colleagues tell me they get hate mail that tells them they&#8217;re stupid bitches and their work sucks and they hope this email makes them cry. Nor have they told me that they get emails telling them how pretty and sexy they are. Let&#8217;s stop that. <em>Edit: This paragraph was apparently unclear to a few &#8211; I&#8217;m tired of hearing that this is happening in our industry because I think it&#8217;s disgraceful that people send them &#8211; I&#8217;m not hating on the people who receive these emails and talk about them at all&#8230;.</em></p><p>Let&#8217;s also stop whining, ok? Every time a company does something that we don&#8217;t like, we run around crying. This world (mostly) runs on a free market, and if you don&#8217;t like Apple&#8217;s policies, or Googles TOS or Adobe&#8217;s attitude, etc, etc, don&#8217;t buy from them. There are <em>always</em> alternatives and you need to weigh the pros and cons of what&#8217;s more important: the product you need, or being able to smugly say you stuck it to the company. Let me tell you something: <em>they don&#8217;t care</em>.</p><p>Twitter doesn&#8217;t care, Facebook doesn&#8217;t care &#8211; none of these guys care. They have enough people who are happy enough to use their services. Move on. Find something else more important to whine about &#8211; like stupid Firefox being the ONLY browser to not render properly *glare*.</p><p>Every week there&#8217;s something totally unimportant that people have to whine about like it&#8217;s the end of the world. Also, please stop passing judgement and calling someone who does things different from you &#8220;stupid&#8221; or &#8220;wrong&#8221;.</p><p><strong>&lt;/rant&gt;</strong></p> <img
src="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=5429" width="1" height="1" style="display: none;" /><br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5429&c=1641841730' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5429&c=1641841730' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded> <wfw:commentRss>http://www.amberweinberg.com/this-industry-is-full-of-crap/feed/</wfw:commentRss> <slash:comments>30</slash:comments> </item> <item><title>Developing Custom WooCommerce Themes</title><link>http://www.amberweinberg.com/developing-custom-woocommerce-themes/</link> <comments>http://www.amberweinberg.com/developing-custom-woocommerce-themes/#comments</comments> <pubDate>Wed, 11 Apr 2012 15:31:55 +0000</pubDate> <dc:creator>Amber Weinberg</dc:creator> <category><![CDATA[blog]]></category> <category><![CDATA[development]]></category> <category><![CDATA[eCommerce]]></category> <category><![CDATA[php]]></category> <category><![CDATA[reviews]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[wordpress]]></category><guid
isPermaLink="false">http://www.amberweinberg.com/?p=5412</guid> <description><![CDATA[I recently had a project that required working with WooCommerce. WooCommerce is a free eCommerce framework from the makers of WooThemes. I&#8217;ve never been a fan of working with premade themes or frameworks for WordPress, as the devs tend to code completely different than I do and it&#8217;s frustrating to have to learn someone else&#8217;s [...]<br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5412&c=471103171' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5412&c=471103171' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></description> <content:encoded><![CDATA[<p>I recently had a project that required working with <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy53b290aGVtZXMuY29tL3dvb2NvbW1lcmNlLw==" target=\"_blank\">WooCommerce</a>. WooCommerce is a free eCommerce framework from the makers of <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy53b290aGVtZXMuY29tLw==" target=\"_blank\">WooThemes</a>. I&#8217;ve never been a fan of working with premade themes or frameworks for WordPress, as the devs tend to code completely different than I do and it&#8217;s frustrating to have to learn someone else&#8217;s style. However, I&#8217;ve been a fan of <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2dldHNob3BwZWQub3JnLw==" target=\"_blank\">WP eCommerce </a>for simple cart needs, so I thought WooCommerce would be just as easy to use, but a bit more robust.</p><p>Turns out, as usual, things were quite a bit more difficult. WooCommerce doesn&#8217;t have great documentation, and a lot of what they do have is incorrect. Also, searching around Google, while always very, very helpful when trying to do crazy custom things in WordPress itself, didn&#8217;t yield very much in tutorials or help for WooCommerce. Bleh, me thinks.</p><p>Installing WooCommerce is just as easy as installing any other plugin, so I&#8217;ll skip the basic how-tos and jump right in to some of the more difficult items.</p><h3>Templating System</h3><p>In order to get custom templates for your cart, you&#8217;ll need to copy WooCommerce&#8217;s template files from the plugin to your theme. However, the information on their website is quite incorrect, or at least didn&#8217;t work the way they said it would.</p><p>On their site, they mention you need to move the files to <strong>yourtheme/woocommerce/templates</strong> in order for the cart to automatically pick up the new files. I tried this and nothing. I tried <strong>yourtheme/woocommerce</strong> and nothing. Finally, I just dumped all the template files directly into <strong>yourtheme/</strong> and it worked like a charm.</p><h2>Show Cart Details</h2><p>My client wanted a little cart amount and total in the header of their site, which is something very basic to want on an eCommerce site. However, looking through their documentation again proved fruitless. The one article they had on the subject didn&#8217;t work, which was:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;">// Ensure cart contents update when products are added to the cart via AJAX (place the following in functions.php)
add_filter('add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment');
&nbsp;
function woocommerce_header_add_to_cart_fragment( $fragments ) {
	global $woocommerce;
&nbsp;
	ob_start();
&nbsp;
	?&gt;
	&lt;a class=&quot;cart-contents&quot; href=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$woocommerce</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_cart_url</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; title=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> _e<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'View your shopping cart'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'woothemes'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span>_n<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%d item'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'%d items'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$woocommerce</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart_contents_count</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'woothemes'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$woocommerce</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart_contents_count</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span> - <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$woocommerce</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_cart_total</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/a&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
	<span style="color: #000088;">$fragments</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'a.cart-contents'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">ob_get_clean</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$fragments</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div><p>This actually ended up completely breaking the site if I recall correctly. Fortunately after getting help from a dozen other developers, including one from WooCommerce itself, I was able to get the correct snippet (and they updated their site to reflect this as well)</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$woocommerce</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
&lt;a class=&quot;cart-contents&quot; href=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$woocommerce</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_cart_url</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; title=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> _e<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'View your shopping cart'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'woothemes'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span>_n<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%d item'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'%d items'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$woocommerce</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart_contents_count</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'woothemes'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$woocommerce</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart_contents_count</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span> - <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$woocommerce</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cart</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_cart_total</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/a&gt;</pre></div></div><h2>Custom Category Loops with Category Images</h2><p>Another search around the web and some quick coding and I was able to get a list of categories with their category image (a Woo function) to display on the homepage in the slider.</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$all_categories</span> <span style="color: #339933;">=</span> get_categories<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'taxonomy=product_cat&amp;hide_empty=0&amp;hierarchical=1'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
					<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$all_categories</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$cat</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
						<span style="color: #666666; font-style: italic;">//print_r($cat);</span>
&nbsp;
						<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cat</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">category_parent</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">23</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>							<span style="color: #000088;">$category_id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$cat</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">term_id</span><span style="color: #339933;">;</span>
							<span style="color: #000088;">$thumbnail_id</span> 	<span style="color: #339933;">=</span> get_woocommerce_term_meta<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$cat</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">term_id</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'thumbnail_id'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
							<span style="color: #000088;">$image</span> <span style="color: #339933;">=</span> wp_get_attachment_url<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$thumbnail_id</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
							<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;li&gt;&lt;a href=&quot;'</span><span style="color: #339933;">.</span> get_term_link<span style="color: #009900;">&#40;</span><span style="color: #000088;">$cat</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">slug</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'product_cat'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;&gt;&lt;img src=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$image</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; alt=&quot;'</span><span style="color: #339933;">.</span> <span style="color: #000088;">$cat</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;/&gt;&lt;div&gt;'</span><span style="color: #339933;">.</span> <span style="color: #000088;">$cat</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/div&gt;&lt;/a&gt;'</span><span style="color: #339933;">;</span>
						<span style="color: #009900;">&#125;</span>
					<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><h2>WooCommerce Documentation</h2><p>All in all, I think their documentation could use a healthy dose of updating and reorganization. They have their front-end code and basic functions which are separated into four different sections: Codex: Theming, and General: Snippets, General: Theming and General: Frontend &#8211; which all of these should really be together under one area.</p><p>They do have a free forum, but it wasn&#8217;t much use after searching around. I&#8217;m not sure if having a paid membership would help here, but since the client wasn&#8217;t up for paying for that, it wasn&#8217;t an option I was able to check out.</p><h2>Final Thoughts on WooCommerce</h2><p>It was a bit challenging finding the correct files for changing items the client wanted changed, particular the titles and headers. The files are split apart quite strange</p><p>I think WooCommerce has some potential, and I might be willing to check it out some more if I have time, but I&#8217;m also contemplating trying <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2ppZ29zaG9wLmNvbS8=" target=\"_blank\">Jigoshop</a>, which is based off very similar code, but supposedly works a lot nicer and has better support. We&#8217;ll see&#8230;</p> <img
src="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=5412" width="1" height="1" style="display: none;" /><br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5412&c=444636540' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5412&c=444636540' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded> <wfw:commentRss>http://www.amberweinberg.com/developing-custom-woocommerce-themes/feed/</wfw:commentRss> <slash:comments>31</slash:comments> </item> <item><title>March 12412: Creating a Custom Photo Submission Site in PHP</title><link>http://www.amberweinberg.com/march-12412-creating-a-custom-photo-submission-site-in-php/</link> <comments>http://www.amberweinberg.com/march-12412-creating-a-custom-photo-submission-site-in-php/#comments</comments> <pubDate>Fri, 30 Mar 2012 14:38:46 +0000</pubDate> <dc:creator>Amber Weinberg</dc:creator> <category><![CDATA[blog]]></category> <category><![CDATA[development]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[php]]></category> <category><![CDATA[tutorial]]></category><guid
isPermaLink="false">http://www.amberweinberg.com/?p=5411</guid> <description><![CDATA[For this month&#8217;s 12412 project, I wanted to create a simple submission site in order to play around with MySQL and PHP, which really isn&#8217;t something I&#8217;m too strong in right now. I ended up creating Royal United, a photo submission site for displaying photos of the UK (one of my favorite topics of photography!). [...]<br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5411&c=494406858' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5411&c=494406858' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></description> <content:encoded><![CDATA[<p>For this month&#8217;s <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovLzEyNDEyLm9yZw==" target=\"_blank\">12412 project</a>, I wanted to create a simple submission site in order to play around with MySQL and PHP, which really isn&#8217;t something I&#8217;m too strong in right now. I ended up creating <a
href="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3VrLmFtYmVyd2VpbmJlcmcuY29t" target=\"_blank\">Royal United</a>, a photo submission site for displaying photos of the UK (one of my favorite topics of photography!).</p><p>This site was actually a lot simpler to create than I anticipated and only needed a bit of help from Nikita (my PHP programmer hubby). This tutorial assumes a basic knowledge of PHP and aimed at beginners.</p><h3>The Structure</h3><p>You&#8217;ll need to start out by creating a new database, let&#8217;s call it &#8220;photosite&#8221;. You&#8217;ll then need to create a new table, called &#8220;photos&#8221;. You won&#8217;t need to enter any actual MySQL, as all of this can be done by following buttons in the standard PHPMyAdmin UI.</p><p>The structure for the table is quite simple. We want to give each photo a unique ID, we&#8217;ll need the image URL, plus we&#8217;d like to capture where the photo is located and when it was uploaded.</p><p>Create a column called &#8220;id&#8221; and give a type of int(eger) and make sure &#8220;auto_increment&#8221; is selected. This was auto assign a unique number to every photo that&#8217;s uploaded. Two more columns called &#8220;image&#8221; and &#8220;location&#8221; needed to be created, with the type of &#8220;text&#8221;. Finally add the last column called, &#8220;dateAdded&#8221; and give it a type of date.</p><h3>Connect to the Database</h3><p>You&#8217;ll need to start by connecting to the database. It&#8217;s important to put this information in it&#8217;s own PHP file so it&#8217;s more secure. Start a php file and called it &#8220;connect.php&#8221; and add your credentials to:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'database-username'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'database-password'</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;database-name&quot;</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><p>Create a new file called &#8220;index.php&#8221; and require this file at the very top:</p><pre lang ="PHP"><?php include_once('lib/connect.php');?></pre><h3>The HTML</h3><p>It&#8217;s now time to move on to the HTML. How you want to design this is completely up to you, and I recommend you get this down before you start programming. What you <em>must</em> have is a form for users to upload their photos and put in the location it&#8217;s been taken from. You can do this with a very basic HTML form:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>form action<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;index.php&quot;</span> method<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;post&quot;</span> enctype<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;multipart/form-data&quot;</span><span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;hidden&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;xsubmit&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;y&quot;</span><span style="color: #339933;">/&gt;</span>
	<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;file&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;file&quot;</span> id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;file&quot;</span> <span style="color: #339933;">/&gt;</span> 
	<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;location&quot;</span> id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;location&quot;</span> placeholder<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;Click to add location&quot;</span> <span style="color: #339933;">/&gt;</span> 
	<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;submit&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;submit&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;Upload&quot;</span> <span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;/</span>form<span style="color: #339933;">&gt;</span></pre></div></div><p>We&#8217;ll set the form&#8217;s action to index.php, because we want the site to stay on the same page after the photo&#8217;s uploaded. In order to do this, we&#8217;ll need to add a hidden input field so we can check if the form has been submitted. Then we&#8217;ll just add basic file inputs and text fields.</p><h3>Uploading Photos</h3><p>Using the hidden field, we&#8217;ll check to see if the form has been submitted, if it has, we&#8217;ll then need to make sure it&#8217;s an actual image (so no hackers or spammers!) and then make sure it&#8217;s not over a certain file size. If the uploaded information passes all of those checks, it then needs to save into the database so we can retrieve and display it later. Create a file called &#8220;upload.php&#8221;.</p><p>Firsts add the checks:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Checks to see if the form has been submitted</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'xsubmit'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'y'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Checks to see if the file is a gif, png, or jpg, and if it's under 2MB</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;type&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;image/gif&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;type&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;image/jpeg&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;type&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;image/jpg&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;type&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;image/png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;size&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">2000000</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	    <span style="color: #666666; font-style: italic;">// If file passes checks, do something	</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><p>Now let&#8217;s save the image into the database. In order to avoid overwriting files if users upload an image with the same name, we&#8217;re going to append the date to the name of the file:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #666666; font-style: italic;">//This is the directory where images will be saved</span>
	<span style="color: #000088;">$target</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;images/&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$target</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$target</span> <span style="color: #339933;">.</span> <span style="color: #990000;">basename</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$target</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$target</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.'</span><span style="color: #339933;">.</span><span style="color: #990000;">array_pop</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><p>We&#8217;ll now assign variables to the location and image</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #666666; font-style: italic;">//This gets all the other information from the form</span>
<span style="color: #000088;">$location</span><span style="color: #339933;">=</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'location'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$image</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">&lt;?</span>php<span style="color: #339933;">&gt;</span></pre></div></div><p>Now we&#8217;ll need to connect to the database by including our connect.php file. We&#8217;ll write a msql_query to insert our variables ($location, $target) into the database. We&#8217;ll also add the date with the appropriate timezone into the &#8220;dateAdded&#8221; field.</p><p>If the file has been added successfully, you&#8217;ll get an ok message, or an error if something went wrong:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'lib/connect.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//Writes the information to the database</span>
		<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;INSERT INTO photos (location,image,dateAdded)
		VALUES ('<span style="color: #006699; font-weight: bold;">$location</span>', '<span style="color: #006699; font-weight: bold;">$target</span>',DATE_ADD(NOW(), INTERVAL 5 HOUR))&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//Writes the photo to the server</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">move_uploaded_file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tmp_name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'images/'</span><span style="color: #339933;">.</span> <span style="color: #000088;">$target</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//Tells you if its all ok</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;The file &quot;</span><span style="color: #339933;">.</span> <span style="color: #990000;">basename</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'uploadedfile'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; has been uploaded, and your information has been added to the directory&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//Gives and error if its not</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Sorry, there was a problem uploading your file.&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span></pre></div></div><p>The entire upload.php file should look like:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'xsubmit'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'y'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;type&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;image/gif&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;type&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;image/jpeg&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;type&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;image/jpg&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;type&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;image/png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;file&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;size&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">2000000</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//This is the directory where images will be saved</span>
		<span style="color: #000088;">$target</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;images/&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$target</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$target</span> <span style="color: #339933;">.</span> <span style="color: #990000;">basename</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$target</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">//print_r($target);</span>
		<span style="color: #666666; font-style: italic;">//die;</span>
		<span style="color: #000088;">$target</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.'</span><span style="color: #339933;">.</span><span style="color: #990000;">array_pop</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//This gets all the other information from the form</span>
		<span style="color: #000088;">$location</span><span style="color: #339933;">=</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'location'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$image</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'lib/connect.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//Writes the information to the database</span>
		<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;INSERT INTO photos (location,image,dateAdded)
		VALUES ('<span style="color: #006699; font-weight: bold;">$location</span>', '<span style="color: #006699; font-weight: bold;">$target</span>',DATE_ADD(NOW(), INTERVAL 5 HOUR))&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//Writes the photo to the server</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">move_uploaded_file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tmp_name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'images/'</span><span style="color: #339933;">.</span> <span style="color: #000088;">$target</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//Tells you if its all ok</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;The file &quot;</span><span style="color: #339933;">.</span> <span style="color: #990000;">basename</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'uploadedfile'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; has been uploaded, and your information has been added to the directory&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//Gives and error if its not</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Sorry, there was a problem uploading your file.&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><h3>Displaying the Items</h3><p>Displaying the photos is actually quite simple. We&#8217;ll connect again to the database and create a foreach loop to go through every item in the database to display the information. I&#8217;ve added comments to the code to explain what each section does.</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// Select the items from the database</span>
<span style="color: #000088;">$query</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;SELECT * FROM photos ORDER BY dateAdded DESC, id DESC&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$result2</span><span style="color: #339933;">=</span><span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Close the connection</span>
<span style="color: #990000;">mysql_close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Add the items to an array</span>
<span style="color: #000088;">$datePhotos</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$datePhotos</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dateAdded'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Go through array and display each photo</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$datePhotos</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$date</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$photos</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$photos</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$photo</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$imageURL</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$photo</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'image'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$locationText</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$photo</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'location'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #666666; font-style: italic;">// display the image and location</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;a rel=<span style="color: #000099; font-weight: bold;">\&quot;</span>group1<span style="color: #000099; font-weight: bold;">\&quot;</span> title=<span style="color: #000099; font-weight: bold;">\&quot;</span>Taken in <span style="color: #006699; font-weight: bold;">$locationText</span><span style="color: #000099; font-weight: bold;">\&quot;</span> class=<span style="color: #000099; font-weight: bold;">\&quot;</span>photo<span style="color: #000099; font-weight: bold;">\&quot;</span> href=<span style="color: #000099; font-weight: bold;">\&quot;</span>images/<span style="color: #006699; font-weight: bold;">$imageURL</span><span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&lt;img src=<span style="color: #000099; font-weight: bold;">\&quot;</span>images/<span style="color: #006699; font-weight: bold;">$imageURL</span><span style="color: #000099; font-weight: bold;">\&quot;</span> alt=<span style="color: #000099; font-weight: bold;">\&quot;</span>Taken in <span style="color: #006699; font-weight: bold;">$locationText</span><span style="color: #000099; font-weight: bold;">\&quot;</span>/&gt;&lt;span&gt;<span style="color: #006699; font-weight: bold;">$locationText</span>&lt;/span&gt;&lt;/a&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><h3>What&#8217;s Next</h3><p>That&#8217;s pretty much it! This project was a lot simpler than I originally thought it was going to be. April&#8217;s 12412 is going to be dedicated to adding pagination and some kind of loading so the site can load a lot faster than it does now.</p> <img
src="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=5411" width="1" height="1" style="display: none;" /><br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5411&c=708442210' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5411&c=708442210' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded> <wfw:commentRss>http://www.amberweinberg.com/march-12412-creating-a-custom-photo-submission-site-in-php/feed/</wfw:commentRss> <slash:comments>18</slash:comments> </item> <item><title>The Death of a Freelancer</title><link>http://www.amberweinberg.com/the-death-of-a-freelancer/</link> <comments>http://www.amberweinberg.com/the-death-of-a-freelancer/#comments</comments> <pubDate>Wed, 21 Mar 2012 19:57:19 +0000</pubDate> <dc:creator>Amber Weinberg</dc:creator> <category><![CDATA[blog]]></category> <category><![CDATA[business]]></category> <category><![CDATA[finances]]></category> <category><![CDATA[improvement]]></category> <category><![CDATA[personal stories]]></category> <category><![CDATA[productivity]]></category> <category><![CDATA[strategy]]></category> <category><![CDATA[time management]]></category><guid
isPermaLink="false">http://www.amberweinberg.com/?p=5406</guid> <description><![CDATA[If you follow me on Twitter you&#8217;ll notice that I&#8217;ve been talking about redoing the way I run my business for a long time. I feel like that time has finally come, especially as things have gotten much more complicated since I moved to London. I&#8217;ve been freelancing for well over two years now and [...]<br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5406&c=1317347508' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5406&c=1317347508' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></description> <content:encoded><![CDATA[<p>If you follow me on Twitter you&#8217;ll notice that I&#8217;ve been talking about redoing the way I run my business for a long time. I feel like that time has finally come, especially as things have gotten much more complicated since I moved to London.</p><p>I&#8217;ve been freelancing for well over two years now and over the years I&#8217;ve continued to raise my rates to offset my schedule, but it seems I&#8217;m still having issues with over-scheduling myself. I&#8217;ve now started sending work off as referrals, as well as managing projects with subcontractors, which isn&#8217;t something wanted to deal with.</p><h3>Scheduling</h3><p>I&#8217;ve always scheduled projects in week long blocks and have gone from one client a week to two, to three and now to four or more. Normally only half the clients I&#8217;d schedule in for the week would actually be ready to start work, so it always worked out well &#8211; until I moved to London. I&#8217;m pretty sure it&#8217;s the combination of over-scheduling and not being productive in my first month or two of my move, but suddenly things have gotten out of hand. I&#8217;ve been working 13 hour days and have given away half my work and I still haven&#8217;t been able to catch up. Now it&#8217;s halfway into week 1 of my holiday and guess what? Yep, I&#8217;m working full days.</p><p>From now on, I&#8217;m going back to work with 1 client a week. I&#8217;ll still schedule in week blocks, which means I&#8217;ll most likely end up working on revisions of the previous week&#8217;s work while starting a new project, but it should free up a lot of time and make things less stressful. More free time means more time I can spend learning new development practices and finally being able to enjoy England. I&#8217;d also like to be able to spend more one-on-one and in-person time with clients.</p><h3>New Rates</h3><p>Reducing my workload means I&#8217;ll need to raise my rates. Project/weekly rates will now start at $2,000. If you&#8217;re thinking about doing the same, all you need to do is figure out how much you need to charge with the new amount of client work to make the same as you do now. Don&#8217;t forget to subtract some weeks for taking holiday as well.</p><p>Charging a bit more will give me more time to spend on the client, producing better code and in turn, producing a better website. Especially since responsive development and mobile testing now take up a lot of time. I&#8217;m also hoping it will help to filter out undesirable projects and clients and leave space for the really enjoyable ones.</p><h3>What I Want To Do</h3><p>I&#8217;ve realized that I&#8217;m no longer excited about the work I do anymore. I wake up and groan and have to drag myself to my office. I&#8217;ve realized that I haven&#8217;t been as picky as I should be when selecting projects and instead having been taking projects solely based on price. The majority of the designs I work with aren&#8217;t good enough for my portfolio, or exciting. This has to change in order to avoid burning out. This means I&#8217;ll most likely end up losing a lot of my current client base, but I feel it&#8217;s for the best. I feel like I can&#8217;t give my best work if I&#8217;m not excited about the project.</p><p>I&#8217;ve recently gotten contacted for doing work for several large brands and this is an avenue I&#8217;d like to pursue more. They normally have bigger budgets, which means better designers and sites that are more fun to code. Another perk to freeing up my schedule is allowing time to focus on these clients and to ensure I can get them scheduled when they need it.</p><p>I also want to work on more industry projects with some of my favorite designers and developers. I&#8217;ve already signed up to talk at a couple of conferences and am excited to move into this stage of my career. I&#8217;ve been thinking about setting up a co-op in London to team up with others. I&#8217;ve already got a great list of developers and designers I work with daily, it would be great if we could all rent office space together and continuing referring work to each other. But this is more in the future.</p><h3>What I&#8217;m Looking For</h3><p>My niche has always been working with designers and agencies only. I love this niche and want to continue in this field, but I also want to work on some projects that fall in my range of hobbies, especially for knitting, interior design and reading. I know I would love to be able to wake up in the morning and stare at photos of beautiful books and yarn all day! I&#8217;ve already got a large author focused client, but this is a niche I&#8217;m probably going to have to actively get out and find work in.</p><p>I no longer want to manage subcontractors. I&#8217;ve never been a good project manager anyways. Instead I&#8217;ll simply send all of the projects I don&#8217;t want to other developers and let them take over.</p><h3>Death of a Freelancer</h3><p>I love being self-employed. It allows me to make the kind of money and control the projects and schedule that I could never have working for someone else. But it&#8217;s time to graduate from freelance 101 and move into something more refined and more permanent. While I definitely don&#8217;t want to lose that personal feeling of my business, I no longer want to act like the typical &#8216;freelancer&#8217; who works all day and night, taking every project possible. I want something more focused and more enjoyable for both me and my client. I want a professional business.</p> <img
src="http://www.amberweinberg.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=5406" width="1" height="1" style="display: none;" /><br
/><p><a
href='http://rss.buysellads.com/click.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5406&c=1212595716' target='_blank' rel='nofollow'> <img
src='http://rss.buysellads.com/img.php?z=1274607&k=6f73a9d9a1f3fe1768234c792a77b1a2&a=5406&c=1212595716' border='0' alt='' /></a></p><p><a
href='http://buysellads.com/buy/sitedetails/pubkey/6f73a9d9a1f3fe1768234c792a77b1a2/zone/1274607' target='_blank'>Advertise here with BSA</a></p>]]></content:encoded> <wfw:commentRss>http://www.amberweinberg.com/the-death-of-a-freelancer/feed/</wfw:commentRss> <slash:comments>35</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching using disk: basic
Object Caching 631/710 objects using disk: basic

Served from: www.amberweinberg.com @ 2012-05-17 04:31:27 -->
