<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.8 on Tue, 27 Apr 2004 15:56:50 GMT -->
<rss version="2.0" xmlns:icbm="http://postneo.com/icbm/">
	<channel>
		<title>mcgyver5: PHP</title>
		<link>http://radio.weblogs.com/0108008/categories/php/</link>
		<description>Diary of a late, late adopter</description>
		<copyright>Copyright 2004 mcgyver5</copyright>
		<lastBuildDate>Tue, 27 Apr 2004 15:56:50 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.0.8</generator>
		<managingEditor>tim@phpreports.com</managingEditor>
		<webMaster>tim@phpreports.com</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>2</hour>
			<hour>1</hour>
			<hour>3</hour>
			<hour>4</hour>
			<hour>5</hour>
			<hour>0</hour>
			<hour>6</hour>
			<hour>18</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<description>While every&amp;nbsp;article about application development&amp;nbsp;impresses upon us the importance of separating&amp;nbsp;the data, logic and presentation layers, &amp;nbsp;MS Excel gleefully mixes the three. While this gets sneers from most developers, it is precisely the reason that so many people use it and love it and get themselves into all kinds of trouble with it... and then ask me to help. So I was very excited to get my copy of &lt;A href=&quot;http://www.amazon.com/exec/obidos/tg/detail/-/059600625X/002-3844654-9917619?v=glance&quot;&gt;Excel Hacks&lt;/A&gt; today. Among other things, it has a lot of tips for separating the data from the formulas and the data from the presentation, making a complex Excel spreadsheet more maintainable.&amp;nbsp; Other things I was glad to see: 
&lt;UL&gt;
&lt;LI&gt;Chapter devoted to the SpreadsheetML, or the xml/xslt format used to describe spreadsheets. This facilitates generating spreadsheets using PHP and Java and other technologies that have nothing to do with Excel 
&lt;LI&gt;Lots of hints for overcoming limits imposed by Excel: For example, override the number of undos allowed and override the limit to criteria for conditional formatting of cells. 
&lt;LI&gt;Lots of easy to understand VBA code 
&lt;LI&gt;Ways to recover data from corrupt workbooks 
&lt;LI&gt;Long chapter on charts with some neato ideas for custom charts. I get asked a lot of questions about Excel charts and I never really learned more than basic charting skills. 
&lt;LI&gt;And a question I have tried to solve several times, never getting a graceful solution: How to fill in empty cells with values 
&lt;LI&gt;Solutions to pivot tables&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I am working my way through each of the 100 hacks and in almost every one, I am saying to myself, &quot;Gee, I didn&apos;t know excel could do that&quot;&amp;nbsp; In summary, the O&apos;Reilly hacks series has produced some excellent books and this one is one of the best.&amp;nbsp; It is clear, concise, error free, and doesn&apos;t assume you have the most recent version of Excel.&amp;nbsp; It is full of nuggets such as the fact that Excel purposely doesn&apos;t recognize that the year 1900 was a leap year (&lt;A href=&quot;http://support.microsoft.com/default.aspx?scid=kb;EN=US;q181370&quot;&gt;link&lt;/A&gt;&amp;nbsp;blames it all on Lotus!).&amp;nbsp; Who knows, you might encounter that some day.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2004/04/27.html#a873</guid>
			<pubDate>Tue, 27 Apr 2004 15:56:46 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=873&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F04%2F27.html%23a873</comments>
			</item>
		<item>
			<description>&lt;P&gt;You can put a &lt;A href=&quot;http://www.mozilla.org/projects/netlib/Link_Prefetching_FAQ.html#What_is_link_prefetching &quot;&gt;link tag&lt;/A&gt; on&amp;nbsp;your web page that tells the visiting browser to start downloading another page while it is idle so that your browsing seems faster:&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;lt; link rel=&quot;prefetch&quot; href=&quot;/images/big.jpeg&quot; &amp;gt;&lt;/P&gt;
&lt;P&gt;from &lt;A href=&quot;http://www.decafbad.com/blog/&quot;&gt;0xDECAFBAD&lt;/A&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2004/03/26.html#a820</guid>
			<pubDate>Fri, 26 Mar 2004 21:12:08 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=820&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F26.html%23a820</comments>
			</item>
		<item>
			<title>JavaScript Disable Links</title>
			<description>&lt;P&gt;Here is the javascript function I used to disable the link that people often click more than once:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;CODE&gt;function disable_links(){&lt;/CODE&gt;&lt;CODE&gt;&amp;nbsp;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; this function disables all the links on the page&amp;nbsp;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp; for(var i=0; i &amp;lt; document.links.length;i++) &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;CODE&gt;&amp;nbsp; { &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.links[i].onclick=function () { return false; }&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.links[i].title = &quot;The exam has been submitted. Please wait for results page&quot;; &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp; } &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp; return true; &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;} &lt;/CODE&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2004/03/15.html#a805</guid>
			<pubDate>Mon, 15 Mar 2004 17:52:50 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=805&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F15.html%23a805</comments>
			</item>
		<item>
			<description>&lt;P&gt;For two weeks I had this really frustrating problem: &lt;/P&gt;
&lt;P&gt;When users submitted the online fisheries exam, sometimes they would get an error page while the results would be emailed with no problems. I kept testing it and never got the error. I wondered if the database was crapping out because of too many open connections, I wondered about browsers caching error pages. &lt;/P&gt;
&lt;P&gt;Then I watched someone submit the exam. They were like, &quot;it sometimes takes several clicks before it submits&quot;..... click click click. It is second nature to me not to submit a form more than once, no matter how long it takes the server to process the form.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;So, when testing, click all the buttons more than once, because it&apos;s a sure bet your users will. &lt;/P&gt;
&lt;P&gt;In any case, there should be some code that handles this problem, but I didn&apos;t write the thing, I just inherited it.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2004/03/15.html#a802</guid>
			<pubDate>Mon, 15 Mar 2004 14:39:39 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=802&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F15.html%23a802</comments>
			</item>
		<item>
			<description>&lt;P&gt;I like the PHP function &lt;A href=&quot;http://us4.php.net/mysql_insert_id&quot;&gt;mysql_insert_id( )&lt;/A&gt;&amp;nbsp;.&amp;nbsp; I just found out about it.&amp;nbsp; It is good for when you just inserted on one table and you want to insert the autogenerated primary key into another table.&amp;nbsp; Almost serves as the equivalent of an Oracle sequence object, but not quite.&lt;/P&gt;
&lt;P&gt;Works as follows&lt;/P&gt;
&lt;P&gt;[ME]:&amp;nbsp; Damn.&amp;nbsp; I wonder&amp;nbsp;how to find&amp;nbsp;the user ID&amp;nbsp; for the brand new&amp;nbsp;user without doing another query?&lt;/P&gt;
&lt;P&gt;[Narrator from Dukes of Hazzard]:&amp;nbsp; &quot;Well, son just try&amp;nbsp; &lt;CODE&gt;$user_id = mysql_insert_id(); &quot;&lt;/CODE&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2004/01/31.html#a751</guid>
			<pubDate>Sun, 01 Feb 2004 02:01:06 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=751&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F01%2F31.html%23a751</comments>
			</item>
		<item>
			<title>Send Notepad Cruising!</title>
			<link>http://codewalkers.com/notepad.php</link>
			<description>&lt;P&gt;Help a guy who has been helping PHP programmers for free for a long while.&amp;nbsp; &lt;A href=&quot;http://notepad.codewalkers.com/&quot;&gt;Notepad&lt;/A&gt; hangs out at &lt;A href=&quot;http://www.codewalkers.com&quot;&gt;www.codewalkers.com&lt;/A&gt; answering people&apos;s questions for free.&amp;nbsp; He wants to go on the &lt;A href=&quot;http://www.phparch.com/cruise/&quot;&gt;PHPCruise&lt;/A&gt; and I daresay he deserves it.&amp;nbsp;&amp;nbsp;Codewalkers has set up a &lt;A href=&quot;http://codewalkers.com/notepad.php&quot;&gt;donation page&lt;/A&gt; for him and they&amp;nbsp;have already raised half of his trip cost.&amp;nbsp; Support the PHP community and thank an active participant!&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/11/29.html#a691</guid>
			<pubDate>Sat, 29 Nov 2003 15:54:42 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=691&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F11%2F29.html%23a691</comments>
			</item>
		<item>
			<title>Software Requirements Part I</title>
			<description>&lt;P&gt;The DNR Project Requirements Group meets for the first time today.&amp;nbsp; The assigment for the first meeting was to read part one of &quot;Software Requirements&quot; by Karl Weigers, a requirements guru.&amp;nbsp; Published by Microsoft Press.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The metrics should give pause to any developer.&amp;nbsp; The costs of not doing requirements well are staggering.&amp;nbsp; On average, rework consumes 30&amp;nbsp; - 50 percent of total costs and&lt;FONT color=maroon&gt; &lt;/FONT&gt;&lt;FONT color=red&gt;&lt;EM&gt;requirement errors account for 70 to 85 percent of reasons for rework&lt;/EM&gt;&lt;/FONT&gt; 
&lt;LI&gt;The first chapter gives the top reasons for requirements errors.&amp;nbsp; The one that jumped out at me was &quot;CREEP&quot; 
&lt;LI&gt;The author suggests using testing to constantly verify requirements.&amp;nbsp; This can be verbal.&amp;nbsp; You have a meeting with the customer and walk through what the software will do.&amp;nbsp; It can also involve a rigorous verification process where a team of people look at your requirements documents and try to find errors. 
&lt;LI&gt;After reading this, I know I want to create a project glossary so we can have a reference for all the crazy terms fisheries biologists throw around. 
&lt;LI&gt;Establish a baseline document that the customer agrees to.&amp;nbsp; This document serves to connect cost estimates, time estimates, requirements, basis for acceptance of completed project and a jumping off point for change management.&amp;nbsp; The first thing to strive towards is&amp;nbsp;a baseline for each of the following documents: 
&lt;OL&gt;
&lt;LI&gt;Vision and Scope statement&amp;nbsp; &quot;why are we building this?&quot; 
&lt;LI&gt;Use Case Document&amp;nbsp; &quot;Customers can make reservations&quot; 
&lt;LI&gt;Software Requirements Specification&amp;nbsp; &quot;The system shall send the customer an email verification of the reservation&quot;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;The book suggests creating user interface and technical prototypes, even a preliminary implementation.&amp;nbsp; This seems to fly in the face of all the cautions in the book, &quot;dont start coding until requirements are done&quot;&amp;nbsp; I question this. 
&lt;LI&gt;Version control on the requirements documents.&amp;nbsp; Book suggests using a requirements management tool.&amp;nbsp; Our analyst has a home grown one that he has developed over his career and it seems effective. 
&lt;LI&gt;hold facilitated elicitation workshops.&amp;nbsp; **Shudder**&amp;nbsp; We have tried several of these.&amp;nbsp; Without the other stuff in place, they didn&apos;t bring us to where we needed to be.&amp;nbsp; We didn&apos;t create usable requirements documents out of them and to do it again now may bring accusations that we are going over the same ground again.&amp;nbsp; 
&lt;LI&gt;Don&apos;t use sign off as a weapon.&amp;nbsp; Sign off means the customer has agreed to your estimates and requirements.&amp;nbsp; I guess this means don&apos;t wave the requirements in your customer&apos;s face and scream, &quot;You already bought it, sucker!!!&quot;&amp;nbsp; Use it instead as a basis for change management 
&lt;LI&gt;This section of the book leaves me wondering how estimates of time and money are connected to requirements.&amp;nbsp; It says &quot;Developers are in the best position to estimate costs&quot;&amp;nbsp; and then the next sentence says &quot;many developers are not skilled estimators&quot;&amp;nbsp; so, how do we do it? 
&lt;LI&gt;The book has a nice &quot;bill of rights for software customers&quot; followed by a &quot;bill of responsibilities for software customers&quot;&amp;nbsp; &quot;Make timely decisions&quot; is one of these... 
&lt;LI&gt;Finally, it has a list of good requirements characteristics.&amp;nbsp; &quot;Avoid lumping requirements into long narrative paragraphs.&amp;nbsp; &quot;&amp;nbsp; bullets, bullets bullets.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/11/04.html#a672</guid>
			<pubDate>Tue, 04 Nov 2003 13:31:43 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=672&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F11%2F04.html%23a672</comments>
			</item>
		<item>
			<title>A warning to ye...</title>
			<description>&lt;P&gt;I can&apos;t impress upon ye enough:&amp;nbsp; set error_handling to E_ALL (verbose)&amp;nbsp;when developing PHP.&amp;nbsp; You will cut your errors in half.&amp;nbsp; You can do this in three ways:&amp;nbsp; 
&lt;OL&gt;
&lt;LI&gt;uncomment the following line in your php.ini file: error_reporting = E_ALL .&amp;nbsp; This will affect all PHP scripts 
&lt;LI&gt;add the line &lt;CODE&gt;error_reporting = 2047&lt;/CODE&gt; in&amp;nbsp;an .htaccess file.&amp;nbsp; This will affect only php files in or below the directory of the .htaccess file. 
&lt;LI&gt;add a line of code at the start of every php page: &lt;CODE&gt;error_reporting (E_ALL);&lt;/CODE&gt;&amp;nbsp; This will affect only the files that you alter.&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;After you do this you may get a whole page of warnings about undeclared variables.&amp;nbsp; This is a good thing, since it forces you to declare all variables and lets you know when you introduce new ones into the mix by mistake.&amp;nbsp; You will &amp;nbsp;at some point&amp;nbsp;mis-type variable names.&amp;nbsp; Without error reporting turned verbose, PHP accepts these mistakes as real variables:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;STRONG&gt;$species_code&lt;/STRONG&gt; = &quot;&lt;FONT color=green&gt;WAE&lt;/FONT&gt;&quot;; 
&lt;P&gt;&lt;FONT color=blue&gt;if&lt;/FONT&gt;(&lt;STRONG&gt;$speces_code&lt;/STRONG&gt; == &quot;&lt;FONT color=green&gt;WAE&lt;/FONT&gt;&quot;){ &lt;a href=&quot;//do&quot;&gt;//do&lt;/a&gt; stuff}&lt;/P&gt;&lt;/CODE&gt;
&lt;P&gt;The above code exhibits a bad feature of PHP; that you don&apos;t need to declare variables before using them. I introduced a variable called speces_code to the PHP script and since it is blank it is not equal to &quot;WAE&quot;. It just skipped over this comparison without a blink!
&lt;P&gt;Also, set error reporting to zero when in production so that visitors cannot peer into the inner workings of your code and directory structure when they encounter an error.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/10/28.html#a663</guid>
			<pubDate>Tue, 28 Oct 2003 16:47:51 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=663&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F10%2F28.html%23a663</comments>
			</item>
		<item>
			<title>Google Hacks</title>
			<link>http://tcphp.org/modules.php?op=modload&amp;name=Reviews&amp;file=index&amp;req=showcontent&amp;id=1</link>
			<description>&lt;P&gt;&lt;A href=&quot;http://www.oreilly.com/catalog/googlehks/&quot;&gt;&lt;IMG src=&quot;http://radio.weblogs.com/0108008/images/googlehks.gif&quot; align=left&gt;&lt;/A&gt;I reviewed the Google Hacks book &lt;A href=&quot;http://tcphp.org/modules.php?op=modload&amp;amp;name=Reviews&amp;amp;file=index&amp;amp;req=showcontent&amp;amp;id=1&quot;&gt;here on the tcphp web site&lt;/A&gt;:&amp;nbsp; At first glance, it didn&apos;t seem that substantial because it starts out with a bunch of obvious things, but the more I look at it, the more interesting it gets.&amp;nbsp; And the more curious I become about Google.&amp;nbsp; The book is packed with Perl code that does interesting things with the Google API.&amp;nbsp; I am slowly translating all that into PHP in the &lt;A href=&quot;http://tcphp.org/modules.php?op=modload&amp;amp;name=Sections&amp;amp;file=index&quot;&gt;&quot;sections&quot; section&lt;/A&gt; of the TCPHP site.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/09/28.html#a617</guid>
			<pubDate>Mon, 29 Sep 2003 00:40:13 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=617&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F09%2F28.html%23a617</comments>
			</item>
		<item>
			<description>I posted the &lt;A href=&quot;http://www.tcphp.org&quot;&gt;meeting notes to the September PHP Meeting&lt;/A&gt;.&amp;nbsp; Before doing so, I installed Post Nuke, a PHP CMS system&amp;nbsp;on the site.&amp;nbsp; It took about 20 minutes.&amp;nbsp; Most of the time is spent pearing back the features you don&apos;t want.</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/09/11.html#a596</guid>
			<pubDate>Fri, 12 Sep 2003 04:59:15 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=596&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F09%2F11.html%23a596</comments>
			</item>
		<item>
			<description>&lt;P&gt;Notes from PHP mapscript session:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Presentation run on PHP slideshow software&lt;/LI&gt;
&lt;LI&gt;PHP slideshow software only runs well on Mozilla&lt;/LI&gt;
&lt;LI&gt;XML based&lt;/LI&gt;
&lt;LI&gt;PHP slideshow allows you to run PHP code within the slideshow for demonstration purposes&lt;/LI&gt;
&lt;LI&gt;No one is yet talking about putting PHPMapscript into PEAR&lt;/LI&gt;
&lt;LI&gt;slideshow online&amp;nbsp;soon.&lt;/LI&gt;
&lt;LI&gt;Paul Spencer of DMSolutions gave an excellent presentation&lt;/LI&gt;
&lt;LI&gt;Other mapscript implementations (perl java Tcl, etc) use SWIG.&amp;nbsp; PHP can&apos;t.&amp;nbsp; Why not?&lt;/LI&gt;
&lt;LI&gt;PHP must be run as CGI because the open source tools that mapserver depends on are&amp;nbsp;not all&amp;nbsp;threadsafe.&amp;nbsp; DMSolutions intends to get a threadsafe version of all of these tools available so that PHP can be run as&amp;nbsp;Apache module.&lt;/LI&gt;
&lt;LI&gt;What does mapscript allow you to do that regular mapserver doesn&apos;t?&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;build queries based on user input beyond zoom and pan.
&lt;LI&gt;mapscript really lets you build applications while mapserver allows you to&amp;nbsp; build dynamic maps.
&lt;LI&gt;Output in various formats like PDF and flash.&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;/LI&gt;&lt;/UL&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/06/08.html#a480</guid>
			<pubDate>Sun, 08 Jun 2003 21:57:21 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=480&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F06%2F08.html%23a480</comments>
			</item>
		<item>
			<description>&lt;A href=&quot;http://jeremy.zawodny.com/blog/&quot;&gt;Jeremy Zawodny&lt;/A&gt; has a good mysql related web log.&amp;nbsp; I saw him speak at PHPCON last week and he was excellent.&amp;nbsp; Anyway, he has a &lt;A href=&quot;http://jeremy.zawodny.com/blog/archives/000690.html&quot;&gt;neat little post&lt;/A&gt; about how to tell mysqldump to not use a buffer and not take up so much damn memory.&amp;nbsp; (the -q option)&amp;nbsp; </description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/05/01.html#a428</guid>
			<pubDate>Thu, 01 May 2003 21:40:07 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=428&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F05%2F01.html%23a428</comments>
			</item>
		<item>
			<description>&lt;P&gt;New:&lt;/P&gt;
&lt;P&gt;Twin Cities General Web Development Discussion List and web site:&amp;nbsp; &lt;A href=&quot;http://www.tcwebdev.org/&quot;&gt;&lt;a href=&quot;http://www.tcwebdev.org/&quot;&gt;http://www.tcwebdev.org/&lt;/a&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Many thanks to Allie Micka at &lt;A href=&quot;http://www.pajunas.com&quot;&gt;pajunas interactive&lt;/A&gt; for graciously providing the support, server space, and mailing list software.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/04/30.html#a422</guid>
			<pubDate>Wed, 30 Apr 2003 21:45:54 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=422&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F30.html%23a422</comments>
			</item>
		<item>
			<description>My PHP application has to be ported to an environment that has register globals turned off.&amp;nbsp; That means that all those variables in PHP that just pop onto the script in a request won&apos;t be there anymore!&amp;nbsp; Woe unto me for I have sloppy programming habits.&amp;nbsp; I could go through all my pages and manually fix everything.&amp;nbsp; This will take about&amp;nbsp;12 hours, I guess.&amp;nbsp; That might help beat in the message, but I really wouldn&apos;t be learning any new skills.&amp;nbsp; On the other hand,&amp;nbsp;I could write a unix&amp;nbsp;shell script that would find the offending variables and flag them in my code with comments.&amp;nbsp; At least I would learn something while I did that.</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/04/15.html#a415</guid>
			<pubDate>Tue, 15 Apr 2003 21:24:33 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=415&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F15.html%23a415</comments>
			</item>
		<item>
			<description>The May 14 &lt;A href=&quot;http://www.tcphp.org&quot;&gt;Twin Cities PHP users group&lt;/A&gt; will feature Steve Lime, creator of &lt;A href=&quot;http://mapserver.gis.umn.edu/&quot;&gt;mapserver&lt;/A&gt;.&amp;nbsp; He will speak about GIS, &lt;A href=&quot;http://opensourcegis.org/&quot;&gt;open source GIS tools&lt;/A&gt;, web based mapping solutions, and the extra functions that mapserver makes available to scripting languages like PHP.</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/04/09.html#a403</guid>
			<pubDate>Wed, 09 Apr 2003 21:29:49 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=403&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F09.html%23a403</comments>
			</item>
		<item>
			<description>&lt;P&gt;I downloaded &lt;A href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/A&gt; after reading about it in many places including &lt;A href=&quot;http://developers.slashdot.org/article.pl?sid=03/03/28/2254257&amp;amp;mode=thread&amp;amp;tid=108&quot;&gt;slashdot&lt;/A&gt;&amp;nbsp;and &lt;A href=&quot;http://www.linux-mag.com/&quot;&gt;linux magazine&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;It looks very nice so far.&amp;nbsp; It is exacly what I need for where I am in java development right now.&amp;nbsp; Reminds me of missing semicolons before I compile, but doesn&apos;t generate code automatically.&amp;nbsp; ANT and JUNIT are integrated and there is a &lt;A href=&quot;http://phpeclipse.sourceforge.net/&quot;&gt;PHP plug-in&lt;/A&gt; that I have yet to try.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/04/07.html#a393</guid>
			<pubDate>Mon, 07 Apr 2003 20:37:50 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=393&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F07.html%23a393</comments>
			</item>
		<item>
			<description>&lt;P&gt;&lt;STRONG&gt;Great PHP tip from the Twin Cities PHP mailing List:&lt;/STRONG&gt;&lt;BR&gt;mysql_unbuffered_query() can be a big help when you&apos;re pulling massive &lt;BR&gt;result sets from MySQL.&amp;nbsp; With mysql_unbuffered_query(), you can query &lt;BR&gt;the server and begin processing the results without the intermediate &lt;BR&gt;step of loading them into memory first.&lt;BR&gt;&lt;BR&gt;This is great for things like copying to a file or displaying huge &lt;BR&gt;result sets.&amp;nbsp; You&apos;ll gain performance improvements and reduce memory &lt;BR&gt;consumption!&amp;nbsp; But its not for every query - you&apos;ll tie up the MySQL &lt;BR&gt;server through the duration of the query processing and you can&apos;t run &lt;BR&gt;any further queries until you&apos;re finished.&lt;BR&gt;&lt;BR&gt;For more, see &lt;BR&gt;&lt;A href=&quot;http://www.php.net/manual/en/function.mysql-unbuffered-query.php&quot;&gt;&lt;a href=&quot;http://www.php.net/manual/en/function.mysql-unbuffered-query.php&quot;&gt;http://www.php.net/manual/en/function.mysql-unbuffered-query.php&lt;/a&gt;&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Posted by:&lt;/STRONG&gt;&lt;BR&gt;Allie Micka&lt;BR&gt;pajunas interactive, inc.&lt;BR&gt;&lt;A href=&quot;http://pajunas.com/&quot;&gt;&lt;a href=&quot;http://pajunas.com&quot;&gt;http://pajunas.com&lt;/a&gt;&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/04/07.html#a392</guid>
			<pubDate>Mon, 07 Apr 2003 20:31:02 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=392&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F07.html%23a392</comments>
			</item>
		<item>
			<description>&lt;P&gt;A &lt;A href=&quot;http://mapserver.gis.umn.edu/mum/index.html&quot;&gt;Mapserver Conference/ Users Group&lt;/A&gt; will be held&amp;nbsp;at the St. Paul Campus of the U of M&amp;nbsp;on June 6 and 7&lt;/P&gt;
&lt;P&gt;This event will feature a great deal of PHP, Postgresql, and apache info in addition to GIS.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/04/01.html#a385</guid>
			<pubDate>Wed, 02 Apr 2003 00:17:16 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=385&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F01.html%23a385</comments>
			</item>
		<item>
			<description>&lt;P&gt;Stupid PHP function of the day:&amp;nbsp; current();&amp;nbsp; returns the value of the&amp;nbsp;current element of an array.&amp;nbsp; Except if the element is empty or null or zero then it returns false.?$%&amp;amp;$&amp;nbsp; Also, if you add an element to an array, current() will never get the last element added.&amp;nbsp; It will return the second to last value unless you issue the end() command on the array.&lt;/P&gt;
&lt;P&gt;current() has a sister function called key() which returns the key instead of the value and has the same issues with adding an extra element.&lt;/P&gt;
&lt;P&gt;Hmmm.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/03/27.html#a383</guid>
			<pubDate>Fri, 28 Mar 2003 02:39:56 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=383&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F03%2F27.html%23a383</comments>
			</item>
		<item>
			<description>Stupid mysql behavior:&amp;nbsp; If any variable in the concat() function is null the resulting string will be null. Use&amp;nbsp;ifnull()&amp;nbsp;in the concat.&amp;nbsp; Are you serious?&amp;nbsp; How about, &quot;if any variables that are allowed to be null are null , concat will return null but if a non-null field is null (I mean empty string), then concat will work fine&quot;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/03/25.html#a379</guid>
			<pubDate>Wed, 26 Mar 2003 02:55:30 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=379</comments>
			</item>
		<item>
			<description>Archives of Twin Cities PHP mailing list.</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/03/24.html#a374</guid>
			<pubDate>Mon, 24 Mar 2003 21:05:31 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=374</comments>
			</item>
		<item>
			<description>I will try to explain the error I found on PHP for Windows before I post it to the bug report.&amp;nbsp; The base directory for xsl transformations is wrong.&amp;nbsp; The documentation says that &quot;Starting with PHP 4.3, the base directory is by default the directory of the active script.&quot;&amp;nbsp; This is not the case on Windows.</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/03/21.html#a372</guid>
			<pubDate>Sat, 22 Mar 2003 04:15:31 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=372</comments>
			</item>
		<item>
			<description>&lt;P&gt;Update to &lt;A href=&quot;http://radio.weblogs.com/0108008/categories/php/2003/03/07.html#a334&quot;&gt;phrame errors I was experiencing&lt;/A&gt;:&lt;/P&gt;
&lt;P&gt;Even after upgrading to PHP 4.3, I still got the following error:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;STRONG&gt;Warning&lt;/STRONG&gt;: Sablotron error on line none: cannot open file &apos;C:/sokkit/Apache2/bin/views/index.xsl&apos; in &lt;B&gt;C:sokkitsitephrameextXml.php&lt;/B&gt; on line &lt;B&gt;160&lt;/B&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;STRONG&gt;(this was just on windows)&lt;/STRONG&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;There are two ways to fix this.&amp;nbsp; One is to use the xsl_set_base() function.&amp;nbsp; I couldn&apos;t figure out how to do this yet, so I gave it a non-relative path to find the xml file:&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;near the bottom of hello/index.php fixed it as follows:&amp;nbsp; &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;$xsl = ($_GET[&apos;_VIEW&apos;]) ? $_GET[&apos;_VIEW&apos;] : &apos;../site/phrame_examples/hello/views/index.xsl&apos;;&lt;BR&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;that enabled it to find the correct xsl path on windows.&amp;nbsp; &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;So with that change, I finally got the simple hello example to display the first form where you enter your name.&amp;nbsp; Unfortunately, when I submit this first form, it doesn&apos;t work.&amp;nbsp; This is true both in a unix environment and in a windows environment.&amp;nbsp; The form submits and the url string reads:&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;A href=&quot;http://localhost/phrame_examples/hello/index.php?view=views/hello.xsl&quot;&gt;&lt;a href=&quot;http://localhost/phrame_examples/hello/index.php?view=views/hello.xsl&quot;&gt;http://localhost/phrame_examples/hello/index.php?view=views/hello.xsl&lt;/a&gt;&lt;/A&gt;&amp;amp;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;Which is the exact same url string that the example on the phrame site ends up with for this example.&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;I have no clue how to debug this!&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;I posted to the phrame user list and that list appears to be dead as doornail and there has been no updates to the project since November.&amp;nbsp; Is Phrame dead?&lt;/P&gt;&lt;/CODE&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/03/16.html#a361</guid>
			<pubDate>Sun, 16 Mar 2003 19:09:30 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=361</comments>
			</item>
		<item>
			<description>&lt;P&gt;I just found and posted the &lt;A href=&quot;http://www.tcphp.org/meeting_notes/2002/november.php&quot;&gt;meeting notes from last November&apos;s TCPHP meeting&lt;/A&gt;:&amp;nbsp; It covers a presentation about building your own session handling functions for when you want to store a session across several servers on the same application.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/03/14.html#a358</guid>
			<pubDate>Fri, 14 Mar 2003 21:07:33 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=358&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F03%2F14.html%23a358</comments>
			</item>
		<item>
			<description>I wrote up the notes for the latest twin city php users group and posted them &lt;A href=&quot;http://www.tcphp.org/meeting_notes/index.php&quot;&gt;here&lt;/A&gt;.&amp;nbsp; Another great meeting.&amp;nbsp; We always get into the idiosyncracies and hidden features of PHP and apache and mysql and I always learn something.&amp;nbsp; The &lt;A href=&quot;http://www.tcphp.org&quot;&gt;mailing list&lt;/A&gt; is also very valuable.</description>
			<guid>http://radio.weblogs.com/0108008/categories/php/2003/03/13.html#a352</guid>
			<pubDate>Fri, 14 Mar 2003 03:59:12 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=352&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F03%2F13.html%23a352</comments>
			</item>
		</channel>
	</rss>
