<?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-1270234807070399257</id><updated>2011-09-28T10:57:21.692-04:00</updated><category term='alternate'/><category term='flash'/><category term='css'/><category term='guide'/><category term='installation'/><category term='list'/><category term='issues'/><category term='browser'/><category term='formatting'/><category term='definition'/><category term='image'/><category term='xhtml'/><category term='jqgrid'/><category term='3.8'/><category term='book'/><category term='w3c'/><category term='newbie'/><category term='answer'/><category term='web development liquid centered display mode'/><category term='validation'/><category term='question'/><category term='excel VBA autofill open web page'/><category term='beta'/><title type='text'>Bits of WebDebris</title><subtitle type='html'>Things I have found of interest while creating websites</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://webdebris.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://webdebris.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>WebDebris</name><uri>http://www.blogger.com/profile/11663326267641677891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cTtENCcLDcg/SyE7CXU5CTI/AAAAAAAAAAM/Y5r9l4xqz3U/S220/WebDebris.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1270234807070399257.post-7871652226469228860</id><published>2010-08-20T14:13:00.006-04:00</published><updated>2010-08-26T15:32:22.995-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3.8'/><category scheme='http://www.blogger.com/atom/ns#' term='newbie'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='jqgrid'/><category scheme='http://www.blogger.com/atom/ns#' term='guide'/><category scheme='http://www.blogger.com/atom/ns#' term='beta'/><title type='text'>JQGrid 3.8 Beta Newbie Installation Guide</title><content type='html'>I really needed the grouping ability of jqGrid 3.8 beta up and running on my laptop so that I could start working on a project. So I had some time this week to figure out how to get the jqGrid 3.8 beta installed.&lt;br /&gt;&lt;br /&gt;I had a lot of difficulty, as explained in my previous post, with rolling out jqGrid 3.8 beta do to newbieness and lack of knowledge. In my last post I reverted to using jqGrid 3.7.2, since the documentation and demos were more complete, and I was able to get that version working.&lt;br /&gt;&lt;br /&gt;This week, I went back to jqGrid 3.8 beta to try to figure out what I did wrong. It was much easier to figure out now that I have a little bit of understanding.&lt;br /&gt;&lt;br /&gt;To install 3.8:&lt;br /&gt;&lt;br /&gt;1. I downloaded and extracted the jqGrid Demo and Source files.&lt;br /&gt;&lt;br /&gt;2. I then created folder in my apache htdocs directory called 38beta. Inside this folder I copied over the js and themes directory from the extracted Demo and Source files.&lt;br /&gt;&lt;br /&gt;3. I modified my test.htm file for the jqGrid 3.8 format and I used the same database and php files from my previous post. (I know that database is the dumbest thing in the world I could have used grouping on, since everything is unique, but I just wanted to get it working.)&lt;br /&gt;&lt;br /&gt;I am going to post my test.htm code below. Remember that you have to view the file from a localhost url as in http://localhost/38beta/test.htm. This will have form edit, delete, add, and search working along with grouping. You also need the three PHP files from my previous post.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Ticket List&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" media="screen" href="themes/redmond/jquery-ui-1.8.2.custom.css" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" media="screen" href="themes/ui.jqgrid.css" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script src="js/jquery-1.4.2.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="js/i18n/grid.locale-en.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="js/jquery.jqGrid.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;table id ="list"&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;div id = "pager"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type = "text/javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;jQuery(document).ready(function(){&lt;br /&gt;jQuery("#list").jqGrid({&lt;br /&gt;  url:'server.php',&lt;br /&gt;  datatype: "json",&lt;br /&gt;  mtype: 'GET',&lt;br /&gt;  colNames:['Inv ID','Inv Date','Client ID','Amount','Tax','Total', 'Note'],&lt;br /&gt;  colModel:[&lt;br /&gt;           {name:'invid', index:'invid', width:55, align:'center',&lt;br /&gt;                  searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;                  editable:false},&lt;br /&gt;           {name:'invdate', index:'invdate', width: 90, align:'center',&lt;br /&gt;                  searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;                  editable:true},&lt;br /&gt;           {name:'client_id', index:'client_id', width: 90, align:'center',&lt;br /&gt;                  searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;                  editable:true},&lt;br /&gt;           {name:'amount', index:'amount', width:80, align:'center',&lt;br /&gt;                  searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;                  editable:true},&lt;br /&gt;           {name:'tax', index:'tax', width:80, align:'center',&lt;br /&gt;                  searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;                  editable:true},&lt;br /&gt;           {name:'total', index:'total', width:80, align:'center',&lt;br /&gt;                  searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;                  editable:true},&lt;br /&gt;           {name:'note', index:'note', width:150, align:'left',&lt;br /&gt;                  searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;                  editable:true},&lt;br /&gt;           ],&lt;br /&gt;  rowNum: 10,&lt;br /&gt;  rowList:[10,20,30],&lt;br /&gt;  autowidth: true,&lt;br /&gt;  height: "100%",&lt;br /&gt;  pager: '#pager',&lt;br /&gt;  sortname: 'client_id',&lt;br /&gt;  viewrecords: true,&lt;br /&gt;  sortorder: "asc",&lt;br /&gt;  caption:"My first grid",&lt;br /&gt;  grouping: true,&lt;br /&gt;  groupingView : {&lt;br /&gt;      groupField : ['client_id']&lt;br /&gt;  },&lt;br /&gt;  editurl:"edit.php"&lt;br /&gt;  });&lt;br /&gt;jQuery("#list").jqGrid('navGrid','#pager',{edit:true,add:true,del:true});&lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1270234807070399257-7871652226469228860?l=webdebris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdebris.blogspot.com/feeds/7871652226469228860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webdebris.blogspot.com/2010/08/jqgrid-38-beta-newbie-installation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/7871652226469228860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/7871652226469228860'/><link rel='alternate' type='text/html' href='http://webdebris.blogspot.com/2010/08/jqgrid-38-beta-newbie-installation.html' title='JQGrid 3.8 Beta Newbie Installation Guide'/><author><name>WebDebris</name><uri>http://www.blogger.com/profile/11663326267641677891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cTtENCcLDcg/SyE7CXU5CTI/AAAAAAAAAAM/Y5r9l4xqz3U/S220/WebDebris.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1270234807070399257.post-1577910495773242451</id><published>2010-08-13T12:41:00.013-04:00</published><updated>2010-09-09T12:02:21.624-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='jqgrid'/><category scheme='http://www.blogger.com/atom/ns#' term='guide'/><category scheme='http://www.blogger.com/atom/ns#' term='issues'/><title type='text'>JQGrid 3.7 Newbie Installation Guide</title><content type='html'>It has been forever since my last blog post but I have not had a chance to do any work on web sites until recently. I had someone who wanted a grid embedded in a web page that pulled data from a SQL database. After searching the web at various grid options I came across JQGrid which I really liked the way it looked and it seemed that it easily connected to MySQL.&lt;br /&gt;&lt;br /&gt;Forty hours later I finally had a grid up and running.&lt;br /&gt;&lt;br /&gt;Bear in mind, I had limited JavaScript exposure, no PHP experience, no experience with JQuery, no Apache server experience, and no MySQL experience. There was a lot of documentation out there but either I just could not grasp it or it was not suited for newbies. And from the tons of other questions I had seen on the forums I was not the only one having these issues.&lt;br /&gt;&lt;br /&gt;I finally got a bit of a clue on how to role this out among the &lt;a href="http://www.trirand.com/blog/jqgrid/jqgrid.html"&gt;3.7 grid demo&lt;/a&gt; pages and the&lt;a href="http://www.trirand.com/jqgridwiki/doku.php"&gt; JQGrid WIKI documentation&lt;/a&gt;. I wanted to outline what I did here and post my code so that other newbies can get up and running quickly and start figuring out how JQGrid works. Maybe it will save them 30+ hours of trial and error time.&lt;br /&gt;&lt;br /&gt;I remind you I have no experience in the platform or languages represented here. I just kept trying different code until I got it to work. There is most likely a much better way to do the things. I didn't even bother with trying to figure out how to set a password on MySQL.&lt;br /&gt;&lt;br /&gt;This is based on JQGrid version 3.7.2. There is a version 3.8 out that does some cool things but I could not find demos for everything I needed. I am going to go back and try to do the same with 3.8 now that I have somewhat of an idea of how it works. The code below will have the form search, edit, add and delete working.&lt;br /&gt;&lt;br /&gt;1. First thing I did was download and install XAMPP from the &lt;a href="http://www.apachefriends.org/en/index.html"&gt;Apache Friends&lt;/a&gt; web site. I took the default on everything and in no time I had an Apache web server with MySQL up and running.&lt;br /&gt;&lt;br /&gt;2. Downloaded JQGrid from the &lt;a href="http://www.trirand.com/blog/?page_id=6"&gt;Trirand&lt;/a&gt; web site. I was not sure what I needed so I just checked everything.&lt;br /&gt;&lt;br /&gt;3. Downloaded a theme from the &lt;a href="http://jqueryui.com/download"&gt;JQuery&lt;/a&gt; site. I tried using the latest themes but the grid never worked. Once I downloaded the legacy version then it worked fine. So I recommend doing the same, as I have no idea what caused the issue. I had seen other post of people having the same problem.&lt;br /&gt;&lt;br /&gt;4. Unpack the zip files according to the &lt;a href="http://www.trirand.com/jqgridwiki/doku.php?id=wiki:how_to_install"&gt;Wiki installation&lt;/a&gt;. You will end up with two folders, one called js and the other called css. I created all my files and put these two folders in folder called test inside of the Apache htdocs directory.&lt;br /&gt;&lt;br /&gt;5. Created the sample table from the information provided in the &lt;a href="http://www.trirand.com/jqgridwiki/doku.php?id=wiki:first_grid"&gt;Wiki documentation&lt;/a&gt;. They even have sample data you can import. It took a bit of time to figure out how to import it into MySQL. They only way I could get it to go was using the csv load data with commas as a separator.&lt;br /&gt;&lt;br /&gt;6. Lastly I created the four files that I will be posting below in the test folder. When you load the web page you will need to use the localhost path. For example on my workstation I had to use http://localhost/test/test.htm.&lt;br /&gt;&lt;br /&gt;test.htm - the main page for viewing the grid&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Ticket List&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" media="screen" href="css/redmond/jquery-ui-1.7.3.custom.css" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script src="js/jquery-1.4.2.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="js/i18n/grid.locale-en.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="js/jquery.jqGrid.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;table id ="list"&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;div id = "pager"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type = "text/javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;jQuery(document).ready(function(){&lt;br /&gt;jQuery("#list").jqGrid({&lt;br /&gt;url:'server.php',&lt;br /&gt;datatype: "json",&lt;br /&gt;mtype: 'GET',&lt;br /&gt;colNames:['Inv ID','Inv Date','Client ID','Amount','Tax','Total', 'Note'],&lt;br /&gt;colModel:[&lt;br /&gt;       {name:'invid', index:'invid', width:55, align:'center',&lt;br /&gt;              searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;              editable:false},&lt;br /&gt;       {name:'invdate', index:'invdate', width: 90, align:'center',&lt;br /&gt;              searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;              editable:true},&lt;br /&gt;       {name:'client_id', index:'client_id', width: 90, align:'center',&lt;br /&gt;              searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;              editable:true},&lt;br /&gt;       {name:'amount', index:'amount', width:80, align:'center',&lt;br /&gt;              searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;              editable:true},&lt;br /&gt;       {name:'tax', index:'tax', width:80, align:'center',&lt;br /&gt;              searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;              editable:true},&lt;br /&gt;       {name:'total', index:'total', width:80, align:'center',&lt;br /&gt;              searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;              editable:true},&lt;br /&gt;       {name:'note', index:'note', width:150, align:'left',&lt;br /&gt;              searchoptions:{sopt:['eq','ne','lt','le','gt','ge','bw','ew','cn','nc']},&lt;br /&gt;              editable:true},&lt;br /&gt;       ],&lt;br /&gt;rowNum: 10,&lt;br /&gt;rowList:[10,20,30],&lt;br /&gt;autowidth: true,&lt;br /&gt;height: "100%",&lt;br /&gt;pager: '#pager',&lt;br /&gt;sortname: 'invid',&lt;br /&gt;viewrecords: true,&lt;br /&gt;sortorder: "asc",&lt;br /&gt;caption:"My first grid",&lt;br /&gt;editurl:"edit.php"&lt;br /&gt;});&lt;br /&gt;jQuery("#list").jqGrid('navGrid','#pager',{edit:true,add:true,del:true});&lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;dbconfig.php - stores the database name and password&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;?php&lt;br /&gt;$dbhost = 'localhost';&lt;br /&gt;$dbuser   = 'root';&lt;br /&gt;$dbpassword = '';&lt;br /&gt;$database = 'test';&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;server.php - used for grid filling and searching&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;// database connection information is stored here&lt;br /&gt;include("dbconfig.php");&lt;br /&gt;&lt;br /&gt;// The first four variables retrieve parameters for&lt;br /&gt;// table creation. (Some for searching also.)&lt;br /&gt;$page = $_REQUEST['page'];    // requested page&lt;br /&gt;$limit = $_REQUEST['rows'];   // rows per page&lt;br /&gt;$sidx = $_REQUEST['sidx'];    // index row&lt;br /&gt;$sord = $_REQUEST['sord'];    // sorting order&lt;br /&gt;&lt;br /&gt;// if index isn't passed then use the first column&lt;br /&gt;if(!$sidx) $sidx=1;&lt;br /&gt;&lt;br /&gt;// these three variables are used to search for records&lt;br /&gt;$where = $_REQUEST['searchField'];        // field to be searched&lt;br /&gt;$whereValue = $_REQUEST['searchString'];  // value to be looked for&lt;br /&gt;$whereOper = $_REQUEST['searchOper'];     // operator used&lt;br /&gt;&lt;br /&gt;// If $whereOper was passed then cofigure the SQL operator&lt;br /&gt;// and what we are searching for. There are a couple of&lt;br /&gt;// these remarked out because honestly I do not know the mySQL&lt;br /&gt;// syntax and I really don't need it for this project.&lt;br /&gt;if ($whereOper &amp;lt;&amp;gt; NULL) {&lt;br /&gt;&lt;br /&gt;switch($whereOper){&lt;br /&gt;case("eq"):&lt;br /&gt;$sqlOperator = " = ";&lt;br /&gt;$whereValue = "'".$whereValue."'";&lt;br /&gt;break;&lt;br /&gt;case("ne"):&lt;br /&gt;$sqlOperator = " &amp;lt;&amp;gt; ";&lt;br /&gt;$whereValue = "'".$whereValue."'";&lt;br /&gt;break;&lt;br /&gt;case("lt"):&lt;br /&gt;$sqlOperator = " &amp;lt; ";&lt;br /&gt;$whereValue = "'".$whereValue."'";&lt;br /&gt;break;&lt;br /&gt;case("le"):&lt;br /&gt;$sqlOperator = " &amp;lt;= ";&lt;br /&gt;$whereValue = "'".$whereValue."'";&lt;br /&gt;break;&lt;br /&gt;case("gt"):&lt;br /&gt;$sqlOperator = " &amp;gt; ";&lt;br /&gt;$whereValue = "'".$whereValue."'";&lt;br /&gt;break;&lt;br /&gt;case("ge"):&lt;br /&gt;$sqlOperator = " &amp;gt;= ";&lt;br /&gt;$whereValue = "'".$whereValue."'";&lt;br /&gt;break;&lt;br /&gt;case("bw"):&lt;br /&gt;$sqlOperator = " REGEXP '^";&lt;br /&gt;$whereValue = $whereValue."'" ;&lt;br /&gt;break;&lt;br /&gt;//    case("bn"):&lt;br /&gt;//      $sqlOperator = "=";&lt;br /&gt;//      $whereValue = "'".$whereValue."'";&lt;br /&gt;//      break;&lt;br /&gt;//    case("in"):&lt;br /&gt;//      $sqlOperator = "=";&lt;br /&gt;//      $whereValue = "'".$whereValue."'";&lt;br /&gt;//      break;&lt;br /&gt;//    case("ni"):&lt;br /&gt;//      $sqlOperator = "=";&lt;br /&gt;//      $whereValue = $whereValue."'";&lt;br /&gt;//      break;&lt;br /&gt;case("ew"):&lt;br /&gt;$sqlOperator = " LIKE '%";&lt;br /&gt;$whereValue = $whereValue."'";&lt;br /&gt;break;&lt;br /&gt;//    case("en"):&lt;br /&gt;//      $sqlOperator = "=";&lt;br /&gt;//      $whereValue = "'".$whereValue."'";&lt;br /&gt;//      break;&lt;br /&gt;case("cn"):&lt;br /&gt;$sqlOperator = " LIKE '%";&lt;br /&gt;$whereValue = $whereValue."%'";&lt;br /&gt;break;&lt;br /&gt;case("nc"):&lt;br /&gt;$sqlOperator = " NOT LIKE '%";&lt;br /&gt;$whereValue = $whereValue."%'";&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Connect to the MySQL database server&lt;br /&gt;$db = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: " . mysql_error());&lt;br /&gt;&lt;br /&gt;// Select the database&lt;br /&gt;mysql_select_db($database) or die("Error connecting to db.");&lt;br /&gt;&lt;br /&gt;// if $where is not NULL then get the count on the search criteria,&lt;br /&gt;// else get the count on everything.&lt;br /&gt;if ($where &amp;lt;&amp;gt; NULL){&lt;br /&gt;$result = mysql_query("SELECT COUNT(*) AS count FROM invheader WHERE ".$where.$sqlOperator.$whereValue);&lt;br /&gt;} else {&lt;br /&gt;$result = mysql_query("SELECT COUNT(*) AS count FROM invheader");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Calculate the number of rows for the query.&lt;br /&gt;// This is used for paging the result.&lt;br /&gt;$row = mysql_fetch_array($result, MYSQL_ASSOC);&lt;br /&gt;$count = $row['count'];&lt;br /&gt;&lt;br /&gt;// calculate the total pages for the query&lt;br /&gt;if($count &amp;gt; 0) {&lt;br /&gt;$total_pages = ceil($count/$limit);&lt;br /&gt;} else {&lt;br /&gt;$total_pages = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// if for some reasons the requested page is greater than the total&lt;br /&gt;// set the requested page to total page&lt;br /&gt;if ($page &amp;gt; $total_pages) $page=$total_pages;&lt;br /&gt;&lt;br /&gt;// calculate the starting position of the rows&lt;br /&gt;$start = $limit*$page-$limit;&lt;br /&gt;&lt;br /&gt;// if for some reasons start position is negative set it to 0&lt;br /&gt;// typical case is that the user type 0 for the requested page&lt;br /&gt;if($start &amp;lt; 0) $start = 0;&lt;br /&gt;&lt;br /&gt;// if where is not null then retrieve requested rows based on search&lt;br /&gt;// else retrieve everything&lt;br /&gt;if ($where &amp;lt;&amp;gt; NULL) {&lt;br /&gt;&lt;br /&gt;$SQL = "SELECT invid, invdate, client_id, amount, tax, total, note FROM invheader WHERE ".$where.$sqlOperator.$whereValue." ORDER BY ".$sidx." ".$sord." LIMIT ".$start." , ".$limit;&lt;br /&gt;$result = mysql_query($SQL) or die("Could not execute query ".$SQL." ".mysql_error());&lt;br /&gt;&lt;br /&gt;} else {&lt;br /&gt;&lt;br /&gt;$SQL = "SELECT invid, invdate, client_id, amount, tax, total, note FROM invheader ORDER BY ".$sidx." ".$sord." LIMIT ".$start." , ".$limit;&lt;br /&gt;$result = mysql_query($SQL) or die("Could not execute query. ".mysql_error());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// response back to web page&lt;br /&gt;$response-&amp;gt;page = $page;&lt;br /&gt;$response-&amp;gt;total = $total_pages;&lt;br /&gt;$response-&amp;gt;records = $count;&lt;br /&gt;&lt;br /&gt;$i=0;&lt;br /&gt;while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {&lt;br /&gt;$response-&amp;gt;rows[$i]['id']=$row[invid];&lt;br /&gt;$response-&amp;gt;rows[$i]['cell']=array($row[invid], $row[invdate], $row[client_id], $row[amount], $row[tax],&lt;br /&gt;$row[total], $row[note]);&lt;br /&gt;$i++;&lt;br /&gt;}&lt;br /&gt;echo json_encode($response);&lt;br /&gt;mysql_close($db);&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;edit.php - used for editing, adding, and deleting rows in the grid&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;//database connection information&lt;br /&gt;include("dbconfig.php");&lt;br /&gt;&lt;br /&gt;$invid = $_REQUEST['invid'];&lt;br /&gt;$invdate = $_REQUEST['invdate'];&lt;br /&gt;$client_id = $_REQUEST['client_id'];&lt;br /&gt;$amount = $_REQUEST['amount'];&lt;br /&gt;$tax = $_REQUEST['tax'];&lt;br /&gt;$total = $_REQUEST['total'];&lt;br /&gt;$note = $_REQUEST['note'];&lt;br /&gt;$id = $_REQUEST['id'];&lt;br /&gt;$oper = $_REQUEST['oper'];&lt;br /&gt;&lt;br /&gt;// Connect to the MySQL database server&lt;br /&gt;$db = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: " . mysql_error());&lt;br /&gt;&lt;br /&gt;// Select the database&lt;br /&gt;mysql_select_db($database) or die("Error connecting to db.");&lt;br /&gt;&lt;br /&gt;// if operation is edit a row&lt;br /&gt;if ($oper == "edit") {&lt;br /&gt;&lt;br /&gt;$SQL = "UPDATE invheader";&lt;br /&gt;$SQL = $SQL." SET invdate = '".$invdate;&lt;br /&gt;$SQL = $SQL."', client_id = '".$client_id;&lt;br /&gt;$SQL = $SQL."', amount = '".$amount;&lt;br /&gt;$SQL = $SQL."', tax = '".$tax;&lt;br /&gt;$SQL = $SQL."', total = '".$total;&lt;br /&gt;$SQL = $SQL."', note = '".$note;&lt;br /&gt;$SQL = $SQL."' WHERE invid = '".$id."'";&lt;br /&gt;$result = mysql_query($SQL) or die("Could not execute query ".mysql_error());&lt;br /&gt;&lt;br /&gt;// if operation is add a row&lt;br /&gt;} elseif ($oper == "add"){&lt;br /&gt;&lt;br /&gt;$SQL = "INSERT INTO invheader (invdate, client_id, amount, tax, ";&lt;br /&gt;$SQL = $SQL."total, note) Values('";&lt;br /&gt;$SQL = $SQL.$invdate."','";&lt;br /&gt;$SQL = $SQL.$client_id."','";&lt;br /&gt;$SQL = $SQL.$amount."','";&lt;br /&gt;$SQL = $SQL.$tax."','";&lt;br /&gt;$SQL = $SQL.$total."','";&lt;br /&gt;$SQL = $SQL.$note."')";&lt;br /&gt;$result = mysql_query($SQL) or die("Could not execute query ".mysql_error());&lt;br /&gt;&lt;br /&gt;// if operation is delete a row&lt;br /&gt;} elseif ($oper == "del"){&lt;br /&gt;&lt;br /&gt;$SQL = "DELETE FROM invheader WHERE invid = '".$id."'";&lt;br /&gt;$result = mysql_query($SQL) or die("Could not execute query ".mysql_error());&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;mysql_close($db);&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1270234807070399257-1577910495773242451?l=webdebris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdebris.blogspot.com/feeds/1577910495773242451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webdebris.blogspot.com/2010/08/jqgrid-newbie-installation-issues.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/1577910495773242451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/1577910495773242451'/><link rel='alternate' type='text/html' href='http://webdebris.blogspot.com/2010/08/jqgrid-newbie-installation-issues.html' title='JQGrid 3.7 Newbie Installation Guide'/><author><name>WebDebris</name><uri>http://www.blogger.com/profile/11663326267641677891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cTtENCcLDcg/SyE7CXU5CTI/AAAAAAAAAAM/Y5r9l4xqz3U/S220/WebDebris.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1270234807070399257.post-6442757895097777840</id><published>2010-02-18T11:24:00.001-05:00</published><updated>2010-10-12T12:31:35.883-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='excel VBA autofill open web page'/><title type='text'>Using Excel VBA to Open and Autofill Web Pages</title><content type='html'>This post is more about manipulating web pages than creating them.&lt;br /&gt;&lt;br /&gt;My employer had a 2007 excel spreadsheet that they used to track several hundred projects. They would open a browser then copy/paste the information into a modified Google map. My boss asked me if there was a way I could automate this process.&lt;br /&gt;&lt;br /&gt;I found parts to the solution here and there. I hope this will help someone else. It was a fun challenge and led to other similiar projects. Please remember, I am not a professional programmer so feel free to add better suggestions to comments.&lt;br /&gt;&lt;br /&gt;Since the actual project cannot be duplicated here let’s just say we have a spreadsheet with a customer’s Name, Address, City, State and Zip. We want to send that information to Google and see the map.&lt;br /&gt;&lt;br /&gt;Click here to download the example created in 2007 and saved as xls: &lt;a href="http://www.webdebris.com/test/GetMapExample.zip"&gt;http://www.webdebris.com/test/GetMapExample.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First thing I will need is a button. Switching over to the developer tab I add an active X button and call it GetMap. Adding it above the header, which can be froze, will let the button be available always.&lt;br /&gt;&lt;br /&gt;Next I need to add a reference to Microsoft’s web browser to the excel spreadsheet. In the visual basic editor, go to Tools References and add Microsoft Internet Controls.&lt;br /&gt;&lt;br /&gt;Now it is time to start coding.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;Option Explicit&lt;br /&gt;&lt;br /&gt;Public ie As Object&lt;br /&gt;&lt;br /&gt;Public strAddress As String 'Builds the address to send to Google&lt;br /&gt;&lt;br /&gt;'The following line will let the code sleep while waiting for the page to load&lt;br /&gt;Private Declare Sub Sleep Lib &amp;quot;kernel32.dll&amp;quot; (ByVal dwMilliseconds As Long)&lt;br /&gt;'When working in excel the browser will stay in the background. This will bring the browser to the top&lt;br /&gt;Private Declare Function BringWindowToTop Lib &amp;quot;user32&amp;quot; (ByVal hwnd As Long) As Long&lt;br /&gt;&lt;br /&gt;Private Sub GetMap_Click()&lt;br /&gt;&lt;br /&gt;'There is a bug/feature with Excel that when the IE window closes the ie object still has a reference.&lt;br /&gt;'Normally you would check for the IE window to close and then set the reference to nothing.&lt;br /&gt;'Web Control does not have an on_quit event. So you have to trap by error.&lt;br /&gt;On Error GoTo ErrHandle:&lt;br /&gt;&lt;br /&gt;  Dim strCursorLocation As String 'The location of the cursor when the button was clicked&lt;br /&gt;  Dim strRow As String 'Will hold the row number&lt;br /&gt;  Dim i As Integer&lt;br /&gt;&lt;br /&gt;  strCursorLocation = ActiveCell.Address(False, False) 'Get the current cursor location&lt;br /&gt;  strRow = &amp;quot;&amp;quot;&lt;br /&gt;  &lt;br /&gt;  'Remove letters from strCursorLocation&lt;br /&gt;  For i = 1 To Len(strCursorLocation)&lt;br /&gt;  &lt;br /&gt;    If IsNumeric(Mid(strCursorLocation, i, 1)) Then&lt;br /&gt;        &lt;br /&gt;            strRow = strRow &amp;amp; Mid(strCursorLocation, i, 1)&lt;br /&gt;            &lt;br /&gt;    End If&lt;br /&gt;    &lt;br /&gt;  Next i&lt;br /&gt;&lt;br /&gt;  'Build the address by adding columns B thru E&lt;br /&gt;  strAddress = Range(&amp;quot;B&amp;quot; + strRow).Value + &amp;quot; &amp;quot;&lt;br /&gt;  strAddress = strAddress + Range(&amp;quot;C&amp;quot; + strRow).Value + &amp;quot; &amp;quot;&lt;br /&gt;  strAddress = strAddress + Range(&amp;quot;D&amp;quot; + strRow).Value + &amp;quot; &amp;quot;&lt;br /&gt;  strAddress = strAddress + Range(&amp;quot;E&amp;quot; + strRow).Value + &amp;quot; &amp;quot;&lt;br /&gt;&lt;br /&gt;  'Check to see if an IE window has been opened&lt;br /&gt;  If ie Is Nothing Then&lt;br /&gt;&lt;br /&gt;    Call OpenGoogle&lt;br /&gt;&lt;br /&gt;  End If&lt;br /&gt;&lt;br /&gt;  'Bring IE to top. Does not bring to top 100 percent of the time.&lt;br /&gt;  If Not ie Is Nothing Then&lt;br /&gt;&lt;br /&gt;    BringWindowToTop (ie.hwnd)&lt;br /&gt;&lt;br /&gt;  End If&lt;br /&gt;&lt;br /&gt;  Call EnterAddress&lt;br /&gt;&lt;br /&gt;  Exit Sub&lt;br /&gt;&lt;br /&gt;ErrHandle:&lt;br /&gt;&lt;br /&gt;  'Reopen IE window if it was closed&lt;br /&gt;  If Err.Number = -2147417848 Or Err.Number = 462 Then&lt;br /&gt;&lt;br /&gt;    Call OpenGoogle&lt;br /&gt;    Resume&lt;br /&gt;    &lt;br /&gt;  Else&lt;br /&gt;&lt;br /&gt;    'Something else has happened&lt;br /&gt;    MsgBox &amp;quot;Error: &amp;quot; + CStr(Err.Number) + &amp;quot; &amp;quot; + Err.Description, vbCritical&lt;br /&gt;    &lt;br /&gt;  End If&lt;br /&gt;    &lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Private Sub OpenGoogle()&lt;br /&gt;&lt;br /&gt;  'Create IE Window&lt;br /&gt;  Set ie = CreateObject(&amp;quot;Internetexplorer.Application&amp;quot;)&lt;br /&gt;  'Show IE Window&lt;br /&gt;  ie.Visible = True&lt;br /&gt;  'Navigate to the google map page&lt;br /&gt;  ie.Navigate &amp;quot;http://maps.google.com/maps?hl=en&amp;amp;tab=wl&amp;quot;&lt;br /&gt;&lt;br /&gt;  'Wait for the page to load&lt;br /&gt;  Do While ie.Busy = True&lt;br /&gt;&lt;br /&gt;    DoEvents&lt;br /&gt;    Sleep 500&lt;br /&gt;&lt;br /&gt;  Loop&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Private Sub EnterAddress()&lt;br /&gt;&lt;br /&gt;  'Check to see if map page was navigated away from&lt;br /&gt;  If ie.document.URL &amp;lt;&amp;gt; &amp;quot;http://maps.google.com/maps?hl=en&amp;amp;tab=wl&amp;quot; Then&lt;br /&gt;    &lt;br /&gt;    'Reload map page&lt;br /&gt;    ie.Navigate &amp;quot;http://maps.google.com/maps?hl=en&amp;amp;tab=wl&amp;quot;&lt;br /&gt;&lt;br /&gt;    'Wait for the page to load&lt;br /&gt;    Do While ie.Busy = True&lt;br /&gt;&lt;br /&gt;      DoEvents&lt;br /&gt;      Sleep 500&lt;br /&gt;&lt;br /&gt;    Loop&lt;br /&gt;&lt;br /&gt;  End If&lt;br /&gt;&lt;br /&gt;  With ie&lt;br /&gt;&lt;br /&gt;    .document.all(&amp;quot;q_d&amp;quot;).Value = strAddress  'enter the address&lt;br /&gt;    .document.all(&amp;quot;q-sub&amp;quot;).Click  'click the search button&lt;br /&gt;    &lt;br /&gt;  End With&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1270234807070399257-6442757895097777840?l=webdebris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdebris.blogspot.com/feeds/6442757895097777840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webdebris.blogspot.com/2010/02/this-post-is-more-about-manipulating.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/6442757895097777840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/6442757895097777840'/><link rel='alternate' type='text/html' href='http://webdebris.blogspot.com/2010/02/this-post-is-more-about-manipulating.html' title='Using Excel VBA to Open and Autofill Web Pages'/><author><name>WebDebris</name><uri>http://www.blogger.com/profile/11663326267641677891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cTtENCcLDcg/SyE7CXU5CTI/AAAAAAAAAAM/Y5r9l4xqz3U/S220/WebDebris.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1270234807070399257.post-7114166991505206969</id><published>2010-02-17T15:26:00.000-05:00</published><updated>2010-02-18T07:48:02.014-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development liquid centered display mode'/><title type='text'>Liquid, left, or middle? What to do, what to do.</title><content type='html'>I used to be all about liquid layouts. But these days there are more and more people using wide screen monitors. The liquid layout design can turn ugly quick on one of these displays. If you have a lot of information on web page it seems to work okay. For me, more often then not the amount of information on a page will vary greatly.&lt;br /&gt;&lt;br /&gt;When I see sites built on the left through a wide screen it all seems out of balance. I think the key to left built sites could be a background graphic that would balance it out.&lt;br /&gt;&lt;br /&gt;On the other hand, I am now seeing web sites that have been developed on wide screens. When I display them on my older CRT monitor the columns are really scrunched up and hard to read. When I move the page to my wide screen it looks fine.&lt;br /&gt;&lt;br /&gt;So now I am becoming a fan of centered pages. All the sites I have done recently are centered and usually have a width of 1000 pixels. I spent some time on &lt;a href="http://www.statowl.com/"&gt;http://www.statowl.com/&lt;/a&gt; and looked through the information they have. Looks like 800 x 600 display modes and less are almost gone. 1024 x 768 and greater are the norm.&lt;br /&gt;&lt;br /&gt;Even though I like strict, clean, and bare bones code I do not like to sacrifice design because of a few people using older browsers or displays. (&lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;Hmmm&lt;/span&gt;... wonder if the people developing sites on wide screens feel the same way about non wide screen monitors.)&lt;br /&gt;&lt;br /&gt;Just curious as to other viewpoints.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1270234807070399257-7114166991505206969?l=webdebris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdebris.blogspot.com/feeds/7114166991505206969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webdebris.blogspot.com/2010/02/liquid-left-or-middle-what-to-do-what.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/7114166991505206969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/7114166991505206969'/><link rel='alternate' type='text/html' href='http://webdebris.blogspot.com/2010/02/liquid-left-or-middle-what-to-do-what.html' title='Liquid, left, or middle? What to do, what to do.'/><author><name>WebDebris</name><uri>http://www.blogger.com/profile/11663326267641677891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cTtENCcLDcg/SyE7CXU5CTI/AAAAAAAAAAM/Y5r9l4xqz3U/S220/WebDebris.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1270234807070399257.post-5887292960505946438</id><published>2009-12-28T07:44:00.000-05:00</published><updated>2009-12-28T07:52:53.830-05:00</updated><title type='text'>IE5.5, IE6, IE7, IE8 CSS Compatibility Check</title><content type='html'>Checking the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CSS&lt;/span&gt; compatibility between browsers is a hassle. Especially when you have to check for different flavors of the same browser. I was using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;VPC&lt;/span&gt; images to test various IE versions which is a real pain. I ran across this while trying to find a website that did compatibility checking.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;IETester&lt;/span&gt;. This is an alpha release of a browser that can test your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;CSS&lt;/span&gt; in IE5.5 up to IE8. It was pretty accurate too. I did have a couple times that the browser tabs crashed. I am not sure what caused it but that was a minimal issue compared to trying to test with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;VPC&lt;/span&gt; images.&lt;br /&gt;&lt;br /&gt;Check it out here: &lt;a href="http://www.my-debugbar.com/wiki/IETester/HomePage"&gt;http://www.my-debugbar.com/wiki/IETester/HomePage&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1270234807070399257-5887292960505946438?l=webdebris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdebris.blogspot.com/feeds/5887292960505946438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webdebris.blogspot.com/2009/12/ie55-ie6-ie7-ie8-css-compatibility.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/5887292960505946438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/5887292960505946438'/><link rel='alternate' type='text/html' href='http://webdebris.blogspot.com/2009/12/ie55-ie6-ie7-ie8-css-compatibility.html' title='IE5.5, IE6, IE7, IE8 CSS Compatibility Check'/><author><name>WebDebris</name><uri>http://www.blogger.com/profile/11663326267641677891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cTtENCcLDcg/SyE7CXU5CTI/AAAAAAAAAAM/Y5r9l4xqz3U/S220/WebDebris.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1270234807070399257.post-965742658853014360</id><published>2009-12-16T08:45:00.000-05:00</published><updated>2009-12-17T07:29:46.497-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='formatting'/><category scheme='http://www.blogger.com/atom/ns#' term='answer'/><category scheme='http://www.blogger.com/atom/ns#' term='question'/><category scheme='http://www.blogger.com/atom/ns#' term='definition'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>"Q" and "A" Formatting with CSS</title><content type='html'>When I was coding my Q and A page, I had started using an unordered list to organize the question and answer detail. At first I wanted to have the letters Q and A to signify the difference between the lines. I also thought different text styles and indentation would help distinguish the difference too.&lt;br /&gt;&lt;br /&gt;It looked like I was going to have to use two classes to define the &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;CSS&lt;/span&gt; presentation side and alternate those throughout the unordered list. Nothing wrong with it, but I felt like it was starting to make the code look messy.&lt;br /&gt;&lt;br /&gt;After a bit of searching in Google I found several people talking about using this little gem, Definition Lists.&lt;br /&gt;&lt;br /&gt;Definition Lists consist of three elements:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;DL&lt;/span&gt; - A container element for the &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;DT&lt;/span&gt; and DD elements. &lt;/li&gt;&lt;li&gt;&lt;span id="SPELLING_ERROR_3" class="blsp-spelling-error"&gt;DT&lt;/span&gt; - Element for the term being defined &lt;/li&gt;&lt;li&gt;DD - Element for the definition of the term.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is perfect. I have a container to surround each Q and A segment, and I have built in elements to separate the &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-error"&gt;CSS&lt;/span&gt; presentation for each question and answer.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;You can go here to see how I used this method.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.webdebris.com/qanda.htm"&gt;http://www.webdebris.com/qanda.htm&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1270234807070399257-965742658853014360?l=webdebris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdebris.blogspot.com/feeds/965742658853014360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webdebris.blogspot.com/2009/12/when-i-was-coding-my-q-and-page-i-had.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/965742658853014360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/965742658853014360'/><link rel='alternate' type='text/html' href='http://webdebris.blogspot.com/2009/12/when-i-was-coding-my-q-and-page-i-had.html' title='&quot;Q&quot; and &quot;A&quot; Formatting with CSS'/><author><name>WebDebris</name><uri>http://www.blogger.com/profile/11663326267641677891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cTtENCcLDcg/SyE7CXU5CTI/AAAAAAAAAAM/Y5r9l4xqz3U/S220/WebDebris.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1270234807070399257.post-3492008604181952214</id><published>2009-12-12T21:07:00.001-05:00</published><updated>2009-12-14T12:59:34.668-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>CSS: The Missing Manual</title><content type='html'>I would say that 75% of the time I have bought a technical book it has turned out to be a disappointment. They are either to basic or way to advanced. So I was really dreading spending money on a CSS book.&lt;br /&gt;&lt;br /&gt;I knew the basics of CSS but needed to learn the next step of what to do with it, and personally I hate reading digitized text. I prefer to have physical media in hand. After taking a look at what Amazon had to offer I bought CSS: The Missing Manual by David Sawyer. It had a 4.5 star rating so I took a chance.&lt;br /&gt;&lt;br /&gt;What a pleasant surprise this book turned out to be. It had the basics, but the book did an excellent job of teaching what you can do with CSS. There were a lot of exercises that you can see on the fly how your CSS code affected the page.&lt;br /&gt;&lt;br /&gt;If I had a complaint, it would be the lack of a complete CSS command reference with a brief explanation of what they do. Still have to rely on The Ultimate CSS Reference for that one.&lt;br /&gt;&lt;br /&gt;If you are learning CSS I would suggest taking a look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1270234807070399257-3492008604181952214?l=webdebris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdebris.blogspot.com/feeds/3492008604181952214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webdebris.blogspot.com/2009/12/css-missing-manual.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/3492008604181952214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/3492008604181952214'/><link rel='alternate' type='text/html' href='http://webdebris.blogspot.com/2009/12/css-missing-manual.html' title='CSS: The Missing Manual'/><author><name>WebDebris</name><uri>http://www.blogger.com/profile/11663326267641677891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cTtENCcLDcg/SyE7CXU5CTI/AAAAAAAAAAM/Y5r9l4xqz3U/S220/WebDebris.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1270234807070399257.post-7802568818066295377</id><published>2009-12-10T12:27:00.000-05:00</published><updated>2009-12-16T15:43:56.132-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xhtml'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='w3c'/><category scheme='http://www.blogger.com/atom/ns#' term='alternate'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='validation'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Flash and W3C Validation without JavaScript</title><content type='html'>For those of you who are familiar with my site know that I am trying to create it using only strict XHMTL and CSS. This presented a bit of a problem when I wanted to use one of my Flash projects for the holidays.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I scoured through several articles on the Internet but I could not find anything that fit exactly what I wanted. SATAY was a good approach but to be honest my Flash creations are not designed properly, and some of them I do not have the original code to fix them the way they should be. Other approaches did not allow for an alternate image for all browsers or required JavaScript.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I had come to the conclusion that I was just going to have to publish my page without an alternate image when I decided to search one last time. I ran across a site with a solution using the IE comment hack that also allowed alternate content for non IE browsers. I wish I had written down the link for you to reference as they had written 95 percent of the following code. The only thing I could not get it to do was to validate as strict XHTML.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I reworked their code and came up with a solution that would validate. Of course this is not the holy grail of Flash validation code. But it works well with simple movies. I have tested it in IE6, IE7, IE8, Firefox 3.5.5, and Safari 4.0.4 for windows. (Personally, I do not care about compatibility for obscure or older browsers.) All browsers showed the alternate image when the plugin was not installed and displayed the Flash animation when it was. I do not have access to an actual Mac so no idea on the compatibility. For the alternate image I used a jpg that was the same size as the movie.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(I do not have a handle on blogging yet so the code formatting is not the greatest.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The actual source code can be seen here: &lt;a href="http://www.webdebris.com/test/flashtest.htm"&gt;www.webdebris.com/test/flashtest.htm&lt;/a&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:78%;"&gt;&amp;lt;div class="cFlashMovie"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--[if !IE]&amp;gt; &amp;lt;--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;object type="application/x-shockwave-flash"&lt;br /&gt;&lt;br /&gt;data="assets/moviename.swf" width="580" height="435"&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-family:arial;font-size:78%;"&gt;&lt;br /&gt;&amp;lt;!--&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--[if IE]&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&lt;br /&gt;&lt;br /&gt;codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&lt;br /&gt;&lt;br /&gt;width="580" height="435"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;param name="movie" value="assets/moviename.swf" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;param name="quality" value="high" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;img src="assets/flashrequired.jpg" alt="This animation requires Flash."/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/object&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--&amp;gt; &amp;lt;![endif] --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1270234807070399257-7802568818066295377?l=webdebris.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdebris.blogspot.com/feeds/7802568818066295377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webdebris.blogspot.com/2009/12/flash-and-w3c-validation-without.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/7802568818066295377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1270234807070399257/posts/default/7802568818066295377'/><link rel='alternate' type='text/html' href='http://webdebris.blogspot.com/2009/12/flash-and-w3c-validation-without.html' title='Flash and W3C Validation without JavaScript'/><author><name>WebDebris</name><uri>http://www.blogger.com/profile/11663326267641677891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cTtENCcLDcg/SyE7CXU5CTI/AAAAAAAAAAM/Y5r9l4xqz3U/S220/WebDebris.jpg'/></author><thr:total>2</thr:total></entry></feed>
