<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6004319037492332803</id><updated>2011-11-27T19:55:27.075-05:00</updated><category term='PHP Tutorials'/><category term='jQuery'/><category term='cakePHP'/><category term='JavaScript'/><category term='Database'/><category term='Marketo'/><category term='web design'/><title type='text'>WebTechStuff</title><subtitle type='html'>Find information about web design, graphic design, database design and Information System development.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-2649565195569894780</id><published>2011-05-23T15:55:00.000-05:00</published><updated>2011-05-23T15:55:10.604-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Marketo'/><title type='text'>Marketo - Working with the Absolute Positioning...</title><content type='html'>Landing pages in &lt;a href="http://www.marketo.com/"&gt;Marketo&lt;/a&gt; use absolute positions for the HTML and rich text blocks you add to the page.&amp;nbsp; Some people have struggled to get the landing page to render and stay in the wrappers specified in the Landing Page Template...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Piece of cake.&amp;nbsp; Often the simple fix is just to move a single php code block.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;?php echo $mContext['bodyElements']; ?&amp;gt;&lt;/div&gt;&lt;br /&gt;down into the wrapper where the body elements belong...&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;div id="mktContent" class="mktEditable"&amp;gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;?php echo $mContext['bodyElements']; ?&amp;gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Now for a word of caution...&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;When we are editing the landing page in the landing page editor, the editor thinks that absolute 0,0 is in the upper left corner of the window.&amp;nbsp; Actually it's not, now it is in the mktContent DIV now.&amp;nbsp; So when you drop an element into the landing page it sets the top and left propertied based on the window, not our DIV.&amp;nbsp; A simple refresh will now show us where the element will render when the landing page template code is applied.&amp;nbsp; Just try not to forget this step so you can "fix" the top and left values to get the HTML or rich text block in the right place.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;i&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-2649565195569894780?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/2649565195569894780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=2649565195569894780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2649565195569894780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2649565195569894780'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2011/05/marketo-working-with-absolute.html' title='Marketo - Working with the Absolute Positioning...'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-7550301322349493294</id><published>2011-05-23T15:30:00.000-05:00</published><updated>2011-05-23T15:30:51.677-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Marketo'/><title type='text'>Marketo - Marketing Automation For Anyone</title><content type='html'>&lt;b&gt;Marketo Introduction&lt;/b&gt;&lt;br /&gt;Marketo is a marketing automation platform that allows marketing teams to build a sophisticated marketing process including lead scoring and organization, automated messages tailored to the user behavior and much more.&amp;nbsp; Find out more at &lt;a href="http://marketo.com/"&gt;Marketo.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Working with some very amazing people at The Pedowitz Group has given me a chance to really dig into some great marketing automation tools and CRM systems.&amp;nbsp; One of those in particular is &lt;a href="http://marketo.com/"&gt;Marketo&lt;/a&gt;.&amp;nbsp; This is a great platform for a company that is interested in owning their marketing automation process as it is easy to learn and very powerful.&amp;nbsp; To combine power and simplicity is not easy task but they have surpassed those requirements and made it very flexible by allowing JavaScript and jQuery functionality.&amp;nbsp; Many of the posts in this category will be based on my experiences working in Marketo.&lt;br /&gt;&lt;br /&gt;Sit back and enjoy...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;i&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-7550301322349493294?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/7550301322349493294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=7550301322349493294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/7550301322349493294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/7550301322349493294'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2011/05/marketo-marketing-automation-for-anyone.html' title='Marketo - Marketing Automation For Anyone'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-707563568243194019</id><published>2011-03-24T12:54:00.015-05:00</published><updated>2011-03-24T13:07:29.534-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><title type='text'>IE JavaScript Problem with JavaScript Opening Tag</title><content type='html'>I hope to save some time for those struggling with a JavaScript problem.&amp;nbsp; I could not get my Javascript snippet to work and I knew there were no errors.&amp;nbsp; &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Here is the issue.&amp;nbsp; I couldn't figure out why my Javascript was not executing even a simple alert() function.&amp;nbsp; After blaming all the complicated code and double checking my trailing comma's I finally broke it down into simple terms.&lt;br /&gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;&amp;nbsp;alert("hello");&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;and it worked.&amp;nbsp; So I began digging into why.&amp;nbsp; My editor generated the tag so I didn't question it until I noticed the difference.&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="javascript" type="application/javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;That led me here:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/1288263/why-doesnt-ie8-recognize-type-application-javascript-in-a-script-tag"&gt;http://stackoverflow.com/questions/1288263/why-doesnt-ie8-recognize-type-application-javascript-in-a-script-tag&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I hope this helps someone when their JavaScript is not executing and their editor is the cause.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-707563568243194019?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/707563568243194019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=707563568243194019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/707563568243194019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/707563568243194019'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2011/03/ie-javascript-problem-with-javascript.html' title='IE JavaScript Problem with JavaScript Opening Tag'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-5123925450268596853</id><published>2010-08-24T15:09:00.000-05:00</published><updated>2010-08-24T15:09:39.930-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Application Development</title><content type='html'>Building an application is not easy. &amp;nbsp;The more complex the application, the more experience the developers need to have with the technologies (languages, DB, servers) since anything that can go wrong, will go wrong.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;I have built a number of applications and been part of a team that has built some. &amp;nbsp;I wanted to discuss some things I have noticed in case anyone is planning a project, or might find comfort in the revelation that projects share the same headaches.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Rule 1: The More complex the system, the more sensitive it will be to modifications.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;As a system grows there are hacks and fixes in place either as a result of a technical glitch, new business requirement, or that a developer just didn't know a better way. &amp;nbsp;As each part becomes dependent on others it is difficult to know if a change in one place will have a negative ripple effect. &amp;nbsp;Some ways to help is to have a solid stable framework, assign one developer to sections so that code can be modified properly instead of redundant code for each little modification for fear of breaking something.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Rule 2: Fancy or Fast?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;I like Ajax, I like jQuery and YUI tools. &amp;nbsp;I think they make coding easy and the UI tools make fancy interfaces but some of these have consequences. &amp;nbsp;Most notably is the performance hit. &amp;nbsp;Ajax calls, JSON encoding and decoding, all &amp;nbsp;of this takes time. &amp;nbsp;Second is stability and compatibility. &amp;nbsp;I try to weigh pretty and fast and decide where I can enhance a UI and where I just want great performance.&amp;nbsp; &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:DontVertAlignCellWithSp/&gt;    &lt;w:DontBreakConstrainedForcedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:Word11KerningPairs/&gt;    &lt;w:CachedColBalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;    &lt;m:smallFrac m:val="off"/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val="0"/&gt;    &lt;m:rMargin m:val="0"/&gt;    &lt;m:defJc m:val="centerGroup"/&gt;    &lt;m:wrapIndent m:val="1440"/&gt;    &lt;m:intLim m:val="subSup"/&gt;    &lt;m:naryLim m:val="undOvr"/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;}&lt;/style&gt; &lt;![endif]--&gt;  &lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;I usually settle for a mixture depending on the traffic expectations and usage of a site.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;Rule 3: Support - a system is never done.&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Anyone who has maintained multiple sites will understand how difficult it is to recall all those lines of code, where they are, and what they do.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Using or finding some standards or frameworks can help with that.&lt;span&gt;&amp;nbsp; &lt;/span&gt;I have been developing for a few years and do not recognize my own code from several months ago.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Be sure to document in the code any issues and their solutions.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Try to organize the code in folders that make sense.&lt;span&gt;&amp;nbsp; &lt;/span&gt;I will admit I love to build and view support as a necessity so I am very diligent about documenting code and making it intuitive so I can someday pass it along to someone else to support.&lt;span&gt;&amp;nbsp; &lt;/span&gt;I have used several frameworks including a homegrown one.&lt;span&gt;&amp;nbsp; &lt;/span&gt;I believe in the right tool for the right job so there is never one perfect solution.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;i&gt;&lt;b&gt;Rule 4: Finish what you start.&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Systems can grow to exceed the initial size very quickly.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Don’t get frustrated as your system continues to become more complex and you are getting further from ever getting it done.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Start to break it into milestones and focus only on particular pieces or functions.&lt;span&gt;&amp;nbsp; &lt;/span&gt;These are your mini-goals and you will gain momentum as each one can be crossed off the list.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Well I hope this helps anyone looking to build or who is feeling any of the side effects of building web based applications and systems.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Be sure to contribute any thoughts or additional guidance in the comments.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Thanks for reading, now get back to work.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;i&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-5123925450268596853?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/5123925450268596853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=5123925450268596853' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/5123925450268596853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/5123925450268596853'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2010/08/application-development.html' title='Application Development'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-986662130559824613</id><published>2010-07-13T00:18:00.000-05:00</published><updated>2010-07-13T00:18:31.857-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Flexigrid PHP Implementation</title><content type='html'>I successfully implemented Flexigrid into my MVC Framework. &amp;nbsp;I am pleased with the results. &amp;nbsp;I still need to add some&amp;nbsp;JavaScript&amp;nbsp;to manipulate some DOM elements but it looks good so far...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;I decided to use Flexigrid because it seemed to accomplish what I wanted, at the right price. &amp;nbsp;I am always looking for ways to help meet client budgets while still providing a great system. &amp;nbsp;There are some great tutorials on Flexigrid so this is not intended to replace those. &amp;nbsp;I wanted just to show a sample of how it can be implemented in an MVC framework using the AJAX/JSON method.&lt;br /&gt;&lt;br /&gt;So I was adding a datagrid to my list views and after some prototyping I decided against using PEAR Structured DataGrid because it required so many other packages to manipulate columns and the html and Flexigrid did all of that quickly.&lt;br /&gt;&lt;br /&gt;I generate seperate JavaScript code in each view instead of just including a dynamically generated one with PHP since I can customize the columns and button functions to give an enhanced user experience and will manipulate DOM elements to improve various&amp;nbsp;aesthetics.&lt;br /&gt;&lt;br /&gt;For the AJAX call I call a file in my root called ajax.php with is basically just this:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;include_once("includes/includes.php"); &amp;nbsp;//DB Connections and required files&lt;/i&gt;&lt;br /&gt;&lt;i&gt;include_once('models/'.$_REQUEST['module'].'.inc.php');&lt;/i&gt;&lt;br /&gt;&lt;i&gt;include_once('controllers/'.$_REQUEST['module'].'.php');&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;A sample call looking like:&lt;br /&gt;&lt;i&gt;ajax.php?module=MODULE&amp;amp;action=JSON&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Then in the controller I add a case to my "action" switch statement:&lt;br /&gt;&lt;i&gt;case 'JSON': include_once(views/MODULE_list_JSON.php); break;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Which returns JSON data only. &amp;nbsp;I found helpful information here:&lt;br /&gt;&lt;a href="http://www.kenthouse.com/blog/2009/07/fun-with-flexigrids/"&gt;http://www.kenthouse.com/blog/2009/07/fun-with-flexigrids/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And for those just learning web development I added buttons that navigate to my "add/edit" and "details" views inside the button commands.&lt;br /&gt;&lt;i&gt;window.location.href="?module=MODULE&amp;amp;action=edit&amp;amp;id="+id;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;I hope this helps anyone looking for a good Datagrid tool for PHP. &lt;br /&gt;&lt;br /&gt;So far the only issues I have encountered were:&lt;br /&gt;- Column widths. &amp;nbsp;I was setting the heading width but the rows don't always match up so I played with the values to get it looking good.&lt;br /&gt;- I still haven't figured out how to access some of the DOM elements to replace some boolean values with a red bullet or green bullet image.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;em&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-986662130559824613?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/986662130559824613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=986662130559824613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/986662130559824613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/986662130559824613'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2010/07/flexigrid-php-implementation.html' title='Flexigrid PHP Implementation'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-2913417308749884188</id><published>2010-06-29T15:41:00.000-05:00</published><updated>2010-06-29T15:41:49.320-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP Tutorials'/><title type='text'>Speeding up nuSoap Web Services - Caching wsdl files.</title><content type='html'>Good trick for speeding up Web Services Using nuSoap.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;The latest project I worked on required the use of web services.  If anyone has needed to interface with a web service who's wsdl file is massive this will help.  I came across this...&lt;br /&gt;&lt;a href="http://www.norio.be/blog/2008/09/wsdl-caching-nusoap"&gt;http://www.norio.be/blog/2008/09/wsdl-caching-nusoap&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;require_once('/lib/nusoap.php');&lt;br /&gt;$url = 'http://example.com/test.wsdl';&lt;br /&gt;$client = new nusoap_client($url, 'wsdl', '', '', '', '');&lt;br /&gt;&lt;br /&gt;require_once('lib/nusoap.php');&lt;br /&gt;require_once('lib/class.wsdlcache.php');&lt;br /&gt;&lt;br /&gt;$url = 'http://example.com/test.wsdl';&lt;br /&gt;$cache = new nusoap_wsdlcache('tmp', 86400);&lt;br /&gt;$wsdl = $cache-&gt;get($url);&lt;br /&gt;if(is_null($wsdl))&lt;br /&gt;{&lt;br /&gt;  $wsdl = new wsdl($url, '', '', '', '', 5);&lt;br /&gt;  $cache-&gt;put($wsdl);&lt;br /&gt;}&lt;br /&gt;$client = new nusoap_client($wsdl,'wsdl','','','','');&lt;br /&gt;----------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Be sure the tmp dir is correct and writable.  You can always do the simple check var_dump(is_dir(tmp));&lt;br /&gt;&lt;br /&gt;This cut a few seconds off each web service call I made. I hope this helps!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;em&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-2913417308749884188?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/2913417308749884188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=2913417308749884188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2913417308749884188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2913417308749884188'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2010/06/speeding-up-nusoap-web-services-caching.html' title='Speeding up nuSoap Web Services - Caching wsdl files.'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-6104858658873213127</id><published>2010-06-25T12:02:00.000-05:00</published><updated>2010-06-25T12:02:43.613-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Pear MDB2 - Multiple DB Connections</title><content type='html'>So recently I needed to connect to separate DB's simultaneously using PEAR MDB2.&amp;nbsp; &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;There are 2 tricks to this.&amp;nbsp; I needed to keep both connections alive and make queries and inserts to both.&amp;nbsp; Using factory() alone will still not keep the dbname's seperate.&amp;nbsp; My connections looked good but on executing a query I would return an error "Table Does Not Exist"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The other trick to this is in your dsn.&amp;nbsp; Use 'new_link' =&amp;gt; true&lt;br /&gt;&lt;a href="http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php"&gt;http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope this helps.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;i&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-6104858658873213127?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/6104858658873213127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=6104858658873213127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/6104858658873213127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/6104858658873213127'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2010/06/pear-mdb2-multiple-db-connections.html' title='Pear MDB2 - Multiple DB Connections'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-6033568064622096119</id><published>2010-05-05T17:11:00.000-05:00</published><updated>2010-05-05T17:11:48.536-05:00</updated><title type='text'>SugarCRM SOAP Examples</title><content type='html'>Digging into SugarCRM API.  This is a MUST for getting started!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://systemsconsciousness.com/2009/04/10/sugarcrm-soap-examples/?sms_ss=blogger"&gt;SugarCRM SOAP Examples&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;p&gt;&lt;em&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-6033568064622096119?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://systemsconsciousness.com/2009/04/10/sugarcrm-soap-examples/?sms_ss=blogger' title='SugarCRM SOAP Examples'/><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/6033568064622096119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=6033568064622096119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/6033568064622096119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/6033568064622096119'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2010/05/sugarcrm-soap-examples.html' title='SugarCRM SOAP Examples'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-6754124933882655879</id><published>2010-03-31T14:59:00.000-05:00</published><updated>2010-03-31T14:59:30.547-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='cakePHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Learning cakePHP</title><content type='html'>Many years ago, when frameworks were emerging for PHP I took a look at them.&amp;nbsp; I adapted a framework and code generator based on my findings but decided to revisit cakePHP since more companies are looking for this particular skill...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Here are some of my findings.&amp;nbsp; You can see my current project at:&lt;br /&gt;&lt;a href="http://blog.tvcsweb.com/"&gt;http://blog.tvcsweb.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I first learned the typical way of building controllers but now the scaffold option seems like the way to go.&amp;nbsp; Granted there is more flexibility if you use the manual method but if you need your project to be up in a hurry, you can't beat it.&lt;br /&gt;&lt;br /&gt;So take a look at the project and keep an eye out for some posts about baking cakes.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;i&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-6754124933882655879?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/6754124933882655879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=6754124933882655879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/6754124933882655879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/6754124933882655879'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2010/03/learning-cakephp.html' title='Learning cakePHP'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-2075178789642812189</id><published>2010-03-29T01:10:00.008-05:00</published><updated>2010-03-29T04:02:15.153-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP Tutorials'/><title type='text'>phpFlickr meets JQFlickr</title><content type='html'>Here is the story of me and the Flickr API.  Once upon a midnight dreary, while I pondered, weak and weary, over many a quaint and curious volume of code...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;First a little background, I have decided to find interesting ways of saving my clients money.  Sure building a custom database, interface, and all the wonderful validation code that would be required to manage an online gallery would be straight forward and tons of fun but I think Flickr will work just fine.  It also should be mentioned that their UI is pretty slick.  Well let's dive in.&lt;br /&gt;&lt;br /&gt;First my tools.&lt;br /&gt;- PHP (of course)&lt;br /&gt;- phpFlickr: &lt;a href="http://phpflickr.com/"&gt;phpFlickr Website&lt;/a&gt;&lt;br /&gt;- Open Source Flickr Photo Gallery Using jQuery from Steve Dugas: &lt;a href="http://www.userfriendlythinking.com/Blog/BlogDetail.asp?p1=7013&amp;p2=101&amp;p7=3001"&gt;Implementation of a sweet Flickr Gallery with jQuery&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now here's what I was looking to do.  I wanted to be able to embed the photo album in a page but also have another page with a datagrid to show off my albums (sets to Flickr) to chose from.  There are some products that do this but by using these tools I have total control over the css and layouts.&lt;br /&gt;&lt;br /&gt;I am still working with a prototype but have some of the code in place so I will walk through the implementation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 1:&lt;br /&gt;Download/extract all the stuff.&lt;br /&gt;&lt;br /&gt;Step 2: &lt;br /&gt;start cutting and pasting and modifying until the code fits your style and frameworks. Ok here is how I did it. Since I run a MVC style navigation framework I decided to make 2 view files. "photosets.php" to show my sets and "photos.php" to show the photos in that set.  These are very basic and hold my css data.  &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;photosets.php&lt;br /&gt;$f = new phpFlickr($api_key, $secret, 1);&lt;br /&gt;$nsid = $f-&amp;gt;people_findByUsername($username);&lt;br /&gt;$photosets = $f-&amp;gt;photosets_getList($nsid['id']);&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;div id=&amp;quot;Photosets&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;h4&amp;gt;&amp;lt;em&amp;gt;Please Select an Album to View&amp;lt;/em&amp;gt;&amp;lt;/h4&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;lt;?&lt;br /&gt;foreach ($photosets['photoset'] as $set) {&lt;br /&gt;$pid = $set['primary'];&lt;br /&gt;$photo = $f-&amp;gt;photos_getInfo($pid,NULL);&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;th align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;?nav1=&amp;lt;?=$_GET['nav1'];?&amp;gt;&amp;amp;photoset=&amp;lt;?=$set['id'];?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?=$set['title'];?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;?nav1=&amp;lt;?=$_GET['nav1'];?&amp;gt;&amp;amp;photoset=&amp;lt;?=$set['id'];?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;img src='&amp;lt;?=$f-&amp;gt;buildPhotoURL($photo, &amp;quot;thumbnail&amp;quot;);?&amp;gt;' alt=&amp;quot;&amp;lt;?=$set['title'];?&amp;gt;&amp;quot; name=&amp;quot;&amp;lt;?=$set['title'];?&amp;gt;&amp;quot; border='0' id=&amp;quot;&amp;lt;?=$set['title'];?&amp;gt;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;?    &lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;photos.php&lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;$().ready(function(){&lt;br /&gt;$('#Photos').flickrGallery({ &lt;br /&gt;galleryHeight : 'auto',&lt;br /&gt;useFlickr: 'true',&lt;br /&gt;useFlickrLargeSize: 'true',&lt;br /&gt;flickrAPIKey: '&amp;lt;?=$api_key;?&amp;gt;',&lt;br /&gt;photosetID: '&amp;lt;?=$photoset;?&amp;gt;',&lt;br /&gt;per_page: 50,&lt;br /&gt;useHoverIntent: 'true',&lt;br /&gt;useLightBox: 'true'&lt;br /&gt;}); &lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;?nav1=&amp;lt;?=$_GET['nav1'];?&amp;gt;&amp;quot;&amp;gt;Return to Albums&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;div id=&amp;quot;Photos&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Now for the engine I created a file "gallery.php" to toggle the views.  It was very easy to instantiate the phpFlickr class and get our photosets.  Remember to include all your files and be sure to check the path if something isn't working.  Since both of these tools have great support sites I did not go into great detail about install and setup.  This was just showing how simple it is to display all your Flickr albums and then use a nice jQuery plug-in to view the photos in that album in case you are looking for an easy way to do this.&lt;br /&gt;&lt;br /&gt;I will post the url to my final implementation when it's complete.&lt;br /&gt;&lt;br /&gt;I hope this was helpful and as always, good luck!&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-2075178789642812189?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/2075178789642812189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=2075178789642812189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2075178789642812189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2075178789642812189'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2010/03/phpflickr-meets-jqflickr.html' title='phpFlickr meets JQFlickr'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-208874802768788155</id><published>2010-02-20T10:27:00.013-05:00</published><updated>2010-03-29T04:15:59.712-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP Tutorials'/><title type='text'>Session Based Shopping Cart</title><content type='html'>Here is a session based cart I used for a site where it was not beneficial to have a database driven cart.  This client used a merchant service for credit card processing but the basic account only provided the check out process...&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All I needed to do was pass the cart contents and the client can print the invoice and store the order details at the merchant's site. There is a data-driven portion holding the inventory. Hope this is helpful for someone else.  For more information look into using multi-dimensional arrays.&lt;br /&gt;&lt;br /&gt;This tutorial assumes you have an understanding of PHP and some basic functions.  This is the section of the code that manages the cart itself. We created the variable at the start of the session to hold the cart. The second variable interprets the action we want to perform.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$cart = $_SESSION['cart'];&lt;br /&gt;$action = $_GET['action'];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The next part of the code handles all the cart actions.  It also handles the case that someone clicked on a product already in the cart, in this case it will simply add 1 to the quantity. Also, we are getting the item id passed to us in the url or via a form post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;switch ($action) {&lt;br /&gt;case 'clear':&lt;br /&gt;unset($_SESSION['cart']);&lt;br /&gt;unset($cart);&lt;br /&gt;break;&lt;br /&gt;case 'add':&lt;br /&gt;$newitem = $_GET['item'];&lt;br /&gt;//check to see if I already have this key&lt;br /&gt;if(array_key_exists($newitem, $cart)){&lt;br /&gt;++$cart[$newitem];&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;$cart[$newitem] = 1;&lt;br /&gt;}    &lt;br /&gt;break;&lt;br /&gt;&lt;br /&gt;case 'delete':&lt;br /&gt;unset($cart[$_GET['item']]);&lt;br /&gt;break;&lt;br /&gt;&lt;br /&gt;case 'update':&lt;br /&gt;if ($cart) {&lt;br /&gt;foreach ($_GET as $key=&amp;gt;$value) {&lt;br /&gt;if (stristr($key,'qty')) { //this is our qty and id&lt;br /&gt;$id = str_replace('qty','',$key);&lt;br /&gt;$qty = $_GET[$key];&lt;br /&gt;$cart[$id] = $qty;    &lt;br /&gt;}&lt;br /&gt;} // end foreach&lt;br /&gt;} // end if&lt;br /&gt;break;&lt;br /&gt;&lt;br /&gt;} //end switch&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The cart I implemented is a bit more advanced than this but I tried to make this basic to serve as a starting point.  I tweaked a few things to improve validation but using this method you can pass the price, qty, and any other variables necessary for the checkout process.  Be careful of URL injections so if you are passing all the parameters consider serializing and unserializing the variables. For more information check out these articles.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://us2.php.net/manual/en/function.serialize.php"&gt;http://us2.php.net/manual/en/function.serialize.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://us2.php.net/manual/en/function.unserialize.php"&gt;http://us2.php.net/manual/en/function.unserialize.php&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As for showing the display of the cart contents, I left that part out since each person will probably be managing that aspect in a specific way.  A simple foreach statement will iterate through the cart. A few notes to help with this...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$itemarray = array_keys($cart)&lt;/span&gt; will give us our items array&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;foreach($itemarray as $itemid)&lt;/span&gt; will iterate our item id's&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$cart[$itemid]&lt;/span&gt; will give you the quantity.&lt;br /&gt;&lt;br /&gt;For a visual representation of your cart while learning or debugging consider using the &lt;span style="font-style: italic;"&gt;var_dump()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let me know if you have any questions.  Thanks for checking this tutorial out.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;i&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-208874802768788155?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/208874802768788155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=208874802768788155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/208874802768788155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/208874802768788155'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2010/02/session-based-shopping-cart.html' title='Session Based Shopping Cart'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-4746995419112665585</id><published>2007-06-21T23:24:00.001-05:00</published><updated>2010-03-29T04:16:33.119-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><title type='text'>Id Selectors  in CSS</title><content type='html'>This is intended for beginners and demonstrates very basic CSS principles.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;CSS is by no means my specialty but I will cover a few basic elements that can really make a difference.&amp;nbsp;  Since CSS and style sheets are the topic of several books and I am not  prepared to write a book here I will try cover and illustrate particular  topics.&amp;nbsp; Today’s topic is adding some  style to tables using ID selectors.&amp;nbsp; It is safe to assume  there are several different types of tables on a site or system so I want to be  able to control each table's style independently.&amp;nbsp; So let’s begin.&lt;br /&gt;&lt;br /&gt;First our file with the tables and our style sheet:&lt;br /&gt;&lt;a href="http://truevisioncs.com/sample_page.html" target="_blank"&gt;sample_page.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://truevisioncs.com/sample.css" target="_blank"&gt;sample.css&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now lets step through and start explaining some basics.&lt;br /&gt;&lt;br /&gt;Notice the &amp;lt;table id="report" for the first table. The corresponds to all the #report in the stylesheet. Now I can modify the tag properties if I want to using the id selector.&lt;br /&gt;&lt;br /&gt;#report tr { (That would change all the &amp;lt;tr&amp;gt; tags)&lt;br /&gt;&lt;br /&gt;#report .odd { (this controls the class="odd" property of the &amp;lt;td&amp;gt; tag to make an alternating row color background.&lt;br /&gt;&lt;br /&gt;Now i can make a new parent for a different type of table. I use the list_table id to tell me its a list of something. The same applies here in that I can manage tags and properties by referencing the #list_table parent.&lt;br /&gt;&lt;br /&gt;Now I have shown something very basic here. Some books and tutorials are out there will help you make some very professional designs but this will hopefully get you started. I put a few on here that I like to spend time reading through.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://alistapart.com/" target="_blank"&gt;A List Apart&lt;/a&gt; (Website)&lt;br /&gt;&lt;br /&gt;A great book for learning CSS. I bought it and recommend it. &lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=truviscomseri-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=1590596145&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 240px; width: 120px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Do a search for free css templates.  They are probably not that great and professional looking but they will help you see how to build style sheets of your own.  You can even modify just the colors and make minor improvements sometimes and get a great outcome.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;i&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-4746995419112665585?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/4746995419112665585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=4746995419112665585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/4746995419112665585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/4746995419112665585'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2007/06/id-selectors-in-css.html' title='Id Selectors  in CSS'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-7209458683586199062</id><published>2007-06-14T02:10:00.002-05:00</published><updated>2010-03-29T04:16:51.258-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><title type='text'>Organizing Web Applications</title><content type='html'>Putting Order To Your Code...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;In my experience with coding and fellow programmers, I have noticed the hardest part of integrating with each other is coding standards.  I don&amp;rsquo;t just mean writing the endless lines of code.  In this article I want to discuss organizing the files and common practice principles that can help others decipher your code.  This is by no means the right way or the best way, its merely a way.  I have developed many of these practices through time and experience so these are suggestions.  This is written from the perspective of PHP and MySQL web applications.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I will break this down into navigation and the management of an entity.  Navigation will be where the visitor is and where they can go.  Management of an entity is handled with a class that performs tasks on the tables associated with that entity.  This is common in applications such as ecommerce and information management sites.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Navigation:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In my sites and applications navigation is controlled by a driver.  The drivers are located at the various levels of the application and decide the path of travel.  They interpret the navigation parameters and direct the visitor to their destination.  The use of navigation levels correlate to the menu items.  Top level menus are referred to with nav1, submenus are referred to with nav2 and so forth.  This allows infinite number of navigation in menus and submenus.  It will not confuse actions with navigation.  A crumb trail is available using this method and iterating the navigation variable.  A nav1 driver will be at the top level while a nav2 driver may be at a lower level such as a customer interface for managing customers.  This would include the submenu and logic to determine the controller to use.  The Controller will be covered later.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Actions:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Actions are different than navigation because they tell the controller what to do.  Possible actions are add, edit, delete, list, select.  The controller will perform the specific action using a model for that entity, may set a message variable, and then display the proper view.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Models:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;These are not as sexy as the ones in the magazines but may be more important.  I generally use a class or several classes to manage an entity.  Most of the time I have a class for each table in my database and that class will add new records, edit or save changes to a record, or even delete records.  I write a few public methods to return lists for pages as well.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Controllers:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Controllers do the dirty work.  They instantiate the classes and execute the methods based on the action defined.  The are even in charge of displaying the proper file before or after the action is performed.  For instance, by default most times my controller will point to a page with a table list of records.  Once you click on a delete or edit button I may either delete the record, display an &amp;quot;Are you sure?&amp;quot; prompt, or display an edit form filled in with the current values and then save those changes with an &amp;quot;Apply Changes&amp;quot; action.  Our action may tell us to make a new record, I show the new record form and if my action is &amp;quot;Save&amp;quot; then I write that new record to the database.  The controller may even call functions to validate data.  As you can see, it&amp;rsquo;s a central location for much of the control logic and operations of the application.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Views:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Finally I want to talk about views.  I use these as basic display files.  They are the forms, table lists, and general html pages with a little dynamic content mixed in.  Keeping these isolated has allowed me to turn over the entire views directory to a CSS master and those are the only files they need to edit.  Since there is not much code and mostly html they are easy for almost any web developer or layout specialist to manage.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So that&amp;rsquo;s it.  Hopefully this was helpful and you can start to organize your code in a way that can be passed on to others.  Most of the inspiration was from my limited experience with &lt;a href="http://www.cakephp.org/" target="_blank"&gt;CakePHP&lt;/a&gt;.  I did enjoy their framework but many of my applications have extensive custom coding and have been easier to work with outside of a full framework.  I found the need for standards more than a completed framework.  Feel free to elaborate more on these suggestions.  I am always innovative and inquisitive at the same time.  Now get back to work.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-7209458683586199062?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/7209458683586199062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=7209458683586199062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/7209458683586199062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/7209458683586199062'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2007/06/organizing-web-applications.html' title='Organizing Web Applications'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-7360810532926715636</id><published>2007-05-16T01:21:00.001-05:00</published><updated>2010-03-29T04:17:08.960-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP Tutorials'/><title type='text'>PHP Tutorial</title><content type='html'>PHP Tutorial: This is a quick little tutorial on getting PHP form elements and making dynamic textboxes and mapping their values...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Getting the value of a form element using PHP&lt;br /&gt;Hah! Simple.  Depending on your form post method…&lt;br /&gt;&lt;br /&gt;$fieldname = $_GET[fieldname];&lt;br /&gt;Or&lt;br /&gt;$fieldname = $_POST[fieldname];&lt;br /&gt;&lt;br /&gt;Dynamic Textbox Arrays with PHP&lt;br /&gt;&lt;br /&gt;input name="field_values[]" id=" field_values[]" size="5" maxlength="5" type="text"&lt;br /&gt;input name="field_name[]" id="field_name[]" value="fieldname" type="hidden"&lt;br /&gt;&lt;br /&gt;Let me explain what’s going on here.  I am taking field values and making a hidden array of the field names they belong to:&lt;br /&gt;&lt;br /&gt;Field_name=&gt; Field1: [ textbox ] &lt;= field_value Field2: [ textbox ] Field3: [ textbox ]  On another page I want to go through those and insert values according to what value I had for each field.  This builds an indexed array of values and the field that they map to.  Now I use a little array function  &lt;a href="http://us2.php.net/array_combine" target="blank"&gt;array_combine()&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;$combine = array_combine($_GET[fieldname],$_GET[field_values];&lt;br /&gt;&lt;br /&gt;This builds an array like $combine[field_name][field_value]  &lt;br /&gt;&lt;br /&gt;Now I can reference the value that belongs to a particular field.  &lt;br /&gt;&lt;br /&gt;Hope you like this.  It was pretty much my first attempt at a tutorial.  I will get better.  &lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Brian J. has been involved in web design since 1997.  He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-7360810532926715636?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/7360810532926715636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=7360810532926715636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/7360810532926715636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/7360810532926715636'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2007/05/php-tutorial.html' title='PHP Tutorial'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-2061488007597261614</id><published>2007-05-08T01:45:00.001-05:00</published><updated>2010-03-29T04:17:26.203-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Should I upgrade to MySQL 5?</title><content type='html'>So we recently installed a server with MySQL 5.1 and this  prompted me to write an article about it...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Why did we do it? Well why not, we were starting a project from scratch so we could benefit from the  features without the worry of breaking something.&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Before you Upgrade&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;Do yourself a favor and find out what was added and what is  no longer supported.&lt;/p&gt;&lt;p&gt;Here is a link where  you can read what was added to MySQL 5.0:&lt;br /&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-5-0-nutshell.html" target="_blank"&gt;http://dev.mysql.com/doc/refman/5.0/en/mysql-5-0-nutshell.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;And how about what's new in MySQL 5.1:&lt;br /&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/mysql-5-1-nutshell.html" target="_blank"&gt;http://dev.mysql.com/doc/refman/5.1/en/mysql-5-1-nutshell.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If it aint broke don’t fix it.  If you do not need to upgrade then you  probably shouldn't.  Some performance  improvements may allow you to improve the speed of your application or you may take advantage  of added features but if you have already designed an application and version 4  is capable of handling the app then just plan it for your next release instead. Some subtle changes may cause some unexpected results. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;What I like about 5&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Personally I take advantage of the sub selects more now that MySQL 5 supports them. I know views are supported as well. Haven't had to use those yet. Stored procs is a huge addition. The optimizer seems to do a better job with joins and finding the best keys to use. Using the "EXPLAIN" in queries yielded the same performance results as forcing the index used. This almost eliminates the need for forcing the use of a particular index. If you notice something horribly wrong with the explain, check the data first. Check your query and table structures second and then maybe you can blame the optimizer. Most times when I would help people, it was a problem with redundant data, forgot to add index, rarely was it the query optimizer. The InnoDB storage engine was improved and based on some bad past experiences this is good news. The storage is more compact and recovery times do seem better.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Final Thoughts&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;If your using shared hosting and they are still using MySQL 4.1 for your server then ask them if they can move your account to a MySQL 5.0 server. My hosting company was happy to do so and i picked up PHP 5 while I was at it. Some companies are reluctant since they are using applications to manage shared hosting accounts on servers. Unexpected results can really cause problems when you have many hosting accounts on a server and decide to upgrade. It may not only cause problems for their applications but what about all the customers hosted on these servers that built code based on earlier versions. So don't expect them just to upgrade you without you asking.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;em&gt;Brian J. has been involved in web design since 1997. He is the founder of &lt;a href="http://www.truevisioncs.com/" target="_blank"&gt;True Vision Computer Services, Inc.&lt;/a&gt;  His recent focus has been on web applications and information systems development.&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-2061488007597261614?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/2061488007597261614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=2061488007597261614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2061488007597261614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2061488007597261614'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2007/05/should-i-upgrade-to-mysql-5.html' title='Should I upgrade to MySQL 5?'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-7140751680952958794</id><published>2007-05-07T16:06:00.001-05:00</published><updated>2010-03-29T04:17:45.319-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><title type='text'>Choosing a web designer</title><content type='html'>Choosing the right web designer is important.  Here are some tips to help...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;When you are choosing a web designer, there are several factors that should be considered.&lt;br /&gt;&lt;br /&gt;Skills and Talents&lt;br /&gt;Hiring a web designer for a project is not very different than interviewing someone for a position in a company. Ask the designer what his specialties are and particular skills that he is strong in.  Ask him for areas that he is less comfortable with.  Then determine if he’s telling the truth.&lt;br /&gt;&lt;br /&gt;You get what you pay for&lt;br /&gt;Be careful when you are deciding on which designer fits your budget.  Often a designer that seems to be less expensive may not have the expertise of another.  You may want to research all the services offered.  Find out the design process and any hidden costs.  Ask questions.  It is better to ask a question and risk offending a designer than spend money to find out he is not what you were hoping for.  You can often determine if the designer is interested in your project or your paycheck.&lt;br /&gt;&lt;br /&gt;Dependability&lt;br /&gt;If you are considering a web design company, research how long that company has been in business.  If you require updates and modifications to your site, it is best to have them performed by the company that did the original site design.  Not only will they have original versions of graphics and images used, they will be familiar with your site and able to make those modifications in less time than a new company.&lt;br /&gt;&lt;br /&gt;Bottom Line&lt;br /&gt;Get a web designer that you can build a great relationship with.  Once a designer gets familiar with your preferences, the direction you are taking, what is important to you, they should make your life easier.  Full service companies can be a good idea since you can build a relationship with the same company. Often these companies are proficient in a multitude of internet marketing areas and can build a strategy for taking your project where you want to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-7140751680952958794?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/7140751680952958794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=7140751680952958794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/7140751680952958794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/7140751680952958794'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2007/05/choosing-web-designer_07.html' title='Choosing a web designer'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6004319037492332803.post-2254121196109566594</id><published>2007-05-07T03:57:00.002-05:00</published><updated>2010-03-29T04:18:04.476-05:00</updated><title type='text'>Welcome...</title><content type='html'>Welcome to webtechstuff.com Blog&lt;br /&gt;&lt;br /&gt;This blog will be updated as much as possible.  I hope this can be informative.  Some articles may be based on my views and opinions but I will try to include sources (which may be unavailable by the time you read the article) of some of the information.  I hope this helps and that people check back frequently.&lt;br /&gt;&lt;br /&gt;Brian J.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6004319037492332803-2254121196109566594?l=webtechstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webtechstuff.blogspot.com/feeds/2254121196109566594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6004319037492332803&amp;postID=2254121196109566594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2254121196109566594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6004319037492332803/posts/default/2254121196109566594'/><link rel='alternate' type='text/html' href='http://webtechstuff.blogspot.com/2007/05/welcome.html' title='Welcome...'/><author><name>Brian J.</name><uri>http://www.blogger.com/profile/01085327903002386223</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
