<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fladi Blog &#187; jquery</title>
	<atom:link href="http://www.fladi.de/kategorie/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fladi.de</link>
	<description>Die Welt aus den Augen eines Webmuckel</description>
	<lastBuildDate>Thu, 29 Jul 2010 06:54:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>&#220;bergabe von eigenen Parametern an jqGrid</title>
		<link>http://www.fladi.de/2009/11/14/uebergabe-von-eigenen-parametern-an-jqgrid/</link>
		<comments>http://www.fladi.de/2009/11/14/uebergabe-von-eigenen-parametern-an-jqgrid/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 07:06:00 +0000</pubDate>
		<dc:creator>Fladi</dc:creator>
				<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.fladi.de/?p=215</guid>
		<description><![CDATA[Das jqGrid toll ist habe ich ja bereits erw&#228;hnt. Nun soll es ja vorkommen, das man nicht immer die gleichen  Daten pr&#228;sentieren will, sondern der User durch Auswahl von bestimmten Suchkriterien Einfluss nimmt. Die Daten die dann typischerweise von einem INPUT-Feld ausgelesen werden, m&#252;ssen dann mit an das jqGrid-Plugin &#252;bergeben werden. Das ist ganz einfach [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p style="text-align: left;">Das <a title="jqGrid jQuery Grid Plugin" href="http://www.trirand.com/blog/">jqGrid </a>toll ist habe ich ja bereits <a href="http://www.fladi.de/2009/11/13/mysql-limit-funktion-mit-oracle-und-php-fuer-jqgrid/">erw&#228;hnt</a>. Nun soll es ja vorkommen, das man nicht immer die gleichen  Daten pr&#228;sentieren will, sondern der User durch Auswahl von bestimmten Suchkriterien Einfluss nimmt. Die Daten die dann typischerweise von einem INPUT-Feld ausgelesen werden, m&#252;ssen dann mit an das jqGrid-Plugin &#252;bergeben werden.</p>
<p style="text-align: left;">Das ist ganz einfach m&#246;glich, indem wir vor dem Request die Daten an das Plugin &#252;bergeben:</p>
<blockquote style="text-align: left;"><p style="text-align: left;">$(&#8216;#ajax_table&#8217;).jqGrid( {<br />
 beforeRequest:function (){<br />
 modal_working(&#8216;show&#8217;);<br />
 // get form-data<br />
 var $cfleet = $(&#8216;#cfleet&#8217;).val();<br />
 var $doc_edition = $(&#8216;#doc_edition&#8217;).val();<br />
 var $doc_sub_edition = $(&#8216;#doc_sub_edition&#8217;).val();<br />
 // append data to ajax-url<br />
 jQuery.extend(this.postData, {cfleet:$cfleet,doc_edition:$doc_edition,doc_sub_edition:$doc_sub_edition});    <br />
 },</p>
<p style="text-align: left;">gridComplete: function (){modal_working(&#8216;hide&#8217;)},</p>
<p style="text-align: left;">[...]</p>
<p style="text-align: left;">loadui: false,</p>
<p style="text-align: left;">[...]</p>
</blockquote>
<p style="text-align: left;">Wie wir sehen werden zun&#228;chst die gew&#252;nschten Werte via $(&#8216;selector&#8217;).val(); ausgelesen und in eine Variable gespeichert. Man k&#246;nnte das nat&#252;rlich auch direkt in den Aufruf packen. Das eigentliche Anh&#228;ngen der Daten geschieht mit dem jQuery.extend-Aufruf. Nun werden die Daten aus dem Input gelesen und mit &#252;bergeben. Hier muss nat&#252;rlich ggf. noch entsprechend validiert werden. Die &#220;bergabe erfolgt immer als Wertepaar mit Name:Wert.</p>
<p style="text-align: left;">Desweiteren habe ich hier noch mein eigenes<em> &#8220;Loading-Modal-Window&#8221; </em>mit eingebaut. Durch den jqGrid-Parameter <strong>loadui:false</strong> wird der Standard ausgeschaltet. Vor dem Request und nachdem das Grid komplett ist wird dieses &#252;ber die Funktion <strong>modal_working(action)</strong> ein- bzw. ausgeschaltet.</p>
<p style="text-align: left;"> </p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.fladi.de/2009/11/14/uebergabe-von-eigenen-parametern-an-jqgrid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Limit Funktion mit Oracle und PHP f&#252;r jqGrid</title>
		<link>http://www.fladi.de/2009/11/13/mysql-limit-funktion-mit-oracle-und-php-fuer-jqgrid/</link>
		<comments>http://www.fladi.de/2009/11/13/mysql-limit-funktion-mit-oracle-und-php-fuer-jqgrid/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 10:29:35 +0000</pubDate>
		<dc:creator>Fladi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.fladi.de/?p=208</guid>
		<description><![CDATA[F&#252;r ein Projekt habe ich gerade mit dem tollen jqgrid-Plugin f&#252;r jQuery gearbeitet. Damit lassen sich recht schnell und einfach Tabellendaten dynamisch darstellen. Das Plugin ist sehr gut dokumentiert und es gibt viele Beispiele. Diese beziehen sich aber i.d.R. auf MySQL. Nun habe ich hier aber eine Oracle Datenbank aus der ich die Daten beziehe. [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p style="text-align: left;">F&#252;r ein Projekt habe ich gerade mit dem tollen <a title="jqGrid jQuery Grid Plugin" href="http://www.trirand.com/blog/">jqgrid</a>-Plugin f&#252;r jQuery gearbeitet. Damit lassen sich recht schnell und einfach Tabellendaten dynamisch darstellen. Das Plugin ist sehr gut dokumentiert und es gibt viele Beispiele. Diese beziehen sich aber i.d.R. auf MySQL. Nun habe ich hier aber eine Oracle Datenbank aus der ich die Daten beziehe.</p>
<p style="text-align: left;">jqGrid zeigt die Daten standardm&#228;ssig &#8220;gepaged&#8221; an, d.h. nur eine bestimmte Anzahl Datens&#228;tze pro Seite. Diese werden dynamisch via Ajax-Request neu gelesen. Da wir aber selbstverst&#228;ndlich nicht immer alle S&#228;tze aus der Datenbank lesen wollen und anschliessend filtern, soll das Query nur die n&#246;tigen S&#228;tze zur&#252;ckliefern.</p>
<p style="text-align: left;">In MySQL ist das einfach mit der <a title="MySQL Limit in PHP" href="http://php.about.com/od/mysqlcommands/g/Limit_sql.htm">Limit-Funktion</a> m&#246;glich. Diese Funktion gibt es so leider in Oracle nicht, weshalb man etwas umst&#228;ndlicher zum Ziel kommen muss. Dazu umfassen wir uns eigentlichs SQL (hier ###select###) zus&#228;tzlich.</p>
<blockquote><p style="text-align: left;">SELECT   *   FROM <br />
 (<br />
 SELECT<br />
 r.*, ROWNUM as row_number <br />
 FROM<br />
 ( ###select### ORDER BY ###sidx### ###sord###) r<br />
 WHERE<br />
 ROWNUM &lt;= :end_row<br />
 )<br />
 WHERE :start_row &lt;= row_number</p>
</blockquote>
<p style="text-align: left;">Da ich meine SQL in diesem Projekt als TXT-Datei einlese habe ich hier 3 Marker die ich anschliessend mit den entsprechenden Werten ersetze um mein tats&#228;chliches Statement zu bekommen.</p>
<blockquote><p style="text-align: left;">$sql = file_get_contents(&#8216;modules/reports/sql/oracle_limit-wrap.sql&#8217;);<br />
 $sql = str_replace(&#8216;###select###&#8217;,$select,$sql);<br />
 $sql = str_replace(&#8216;###sidx###&#8217;,$sidx,$sql);<br />
 $sql = str_replace(&#8216;###sord###&#8217;,$sord,$sql);</p>
</blockquote>
<p style="text-align: left;">###select### / $select ist das SQL mit dem ich die eigentlich gewollten Daten aus der Datenbank ziehe.<br />
 ###sidx### und ###sord### sind die Parameter die von jqGrid beim Update der Ansicht &#252;bergeben werden (Sort-Index und Sort-Order).</p>
<p style="text-align: left;">Bevor wir nun unser neues SQL abschicken m&#252;ssen wir noch :start_row und :end_row ermitteln. Diese sind abh&#228;ngig von den von jqGrid &#252;bergebenen Parametern (<strong>$limit</strong> und <strong>$start</strong>). Sie kommen aus der Berechnung der Gesamts&#228;tze wie es im jqGrid-Beispiel zu sehen ist. <strong>$count</strong> ist hierbei die Gesamtzahl aller S&#228;tze die wir via<em> &#8220;select count(*) &#8230;&#8221;</em> ermittelt haben.</p>
<blockquote><p style="text-align: left;">if( $count &gt; 0 ) { <br />
 $total_pages = ceil($count/$limit); <br />
 } else { <br />
 $total_pages = 0; <br />
 }</p>
<p>if ($page &gt; $total_pages) $page=$total_pages;<br />
 $start = $limit*$page &#8211; $limit+1;<br />
 $end = $start + $limit-1;<br />
 if($start &lt;0) $start = 0;</p>
</blockquote>
<p style="text-align: left;">Nun aber endlich das Query ausf&#252;hren:</p>
<blockquote><p style="text-align: left;">$stmt = oci_parse($conn,$sql);<br />
 oci_bind_by_name($stmt, &#8216;:start_row&#8217;, $start);<br />
 oci_bind_by_name($stmt, &#8216;:end_row&#8217;, $end);    <br />
 oci_execute($stmt);<br />
 $rows_per_page = $limit;    <br />
 ocisetprefetch($stmt, $rows_per_page);</p>
<p>// build result-array<br />
 while ($row = oci_fetch_array($stmt, OCI_ASSOC+OCI_RETURN_NULLS)) {<br />
 $rows[] = $row;                  <br />
 }</p>
</blockquote>
<p style="text-align: left;">Zu beachten ist noch, dass wir in unserem Result-Array pro Datensatz jetzt noch eine zus&#228;tzliches Feld ROW_NUM haben, das wir in PHP oder im jqGrid noch rausfiltern k&#246;nnen.</p>
<p style="text-align: left;"><span style="text-decoration: underline;">Zusammenfassung in einfachen Worten:</span><br />
 Anstelle der LIMIT-Funktion umfassen wir unser SELECT nochmals mit einem zus&#228;tzlichen SQL und &#252;bergeben diese die Limit-Parameter.</p>
<p style="text-align: left;">OFFTOPIC: Wie bringe ich WordPress bei Quellcode sch&#246;n darzustellen?</p>

<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://www.fladi.de/2009/11/13/mysql-limit-funktion-mit-oracle-und-php-fuer-jqgrid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
