steinm          Thu Mar 30 15:53:42 2006 UTC

  Modified files:              
    /phpdoc/en/reference/paradox/functions      px-insert-record.xml 
  Log:
  - added much more documentation including an example
  
  
http://cvs.php.net/viewcvs.cgi/phpdoc/en/reference/paradox/functions/px-insert-record.xml?r1=1.1&r2=1.2&diff_format=u
Index: phpdoc/en/reference/paradox/functions/px-insert-record.xml
diff -u phpdoc/en/reference/paradox/functions/px-insert-record.xml:1.1 
phpdoc/en/reference/paradox/functions/px-insert-record.xml:1.2
--- phpdoc/en/reference/paradox/functions/px-insert-record.xml:1.1      Wed Feb 
 8 06:34:54 2006
+++ phpdoc/en/reference/paradox/functions/px-insert-record.xml  Thu Mar 30 
15:53:42 2006
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.1 $ -->
+<!-- $Revision: 1.2 $ -->
 <!-- splitted from ./en/functions/paradox.xml, last change in rev  -->
 <refentry id="function.px-insert-record">
  <refnamediv>
@@ -14,6 +14,37 @@
    <methodparam><type>resource</type><parameter>pxdoc</parameter></methodparam>
    <methodparam><type>array</type><parameter>data</parameter></methodparam>
   </methodsynopsis>
+
+  <para>
+   Inserts a new record into the database. The record is not neccesarily
+   inserted at the end of the database, but may be inserted at any
+   position depending on where the first free slot is found.
+  </para>
+  <para>
+   The record data is passed as an array of field values. The elements in
+   the array must correspond to the fields in the database. If the array
+   has less elements than fields in the database, the remaining fields
+   will be set to null.
+  </para>
+  <para>
+   Most field values can be passed as its equivalent php type e.g. a long
+   value is used for fields of type PX_FIELD_LONG, PX_FIELD_SHORT and
+   PX_FIELD_AUTOINC, a double values is used for fields of type
+   PX_FIELD_CURRENCY and PX_FIELD_NUMBER.
+   Field values for blob and alpha fields are passed as strings.
+  </para>
+  <para>
+   Fields of type PX_FIELD_TIME and PX_FIELD_DATE both require a long
+   value. In the first case this is the number of milli seconds since
+   midnight. In the second case this is the number of days since 1.1.0000.
+   Below there are two examples to convert the current date or timestamp
+   into a value suitable for one of paradox's date/time fields.
+  </para>
+  <note>
+   <para>
+    This function is only available if pxlib &gt;= 0.6.0 is used.
+   </para>
+  </note>
  </refsect1>
 
  <refsect1 role="parameters">
@@ -32,8 +63,8 @@
      <term><parameter>data</parameter></term>
      <listitem>
       <para>
-       Associated array containing the field values as returned by
-       <function>px_retrieve_record</function>.
+       Associated or indexed array containing the field values as e.g.
+       returned by <function>px_retrieve_record</function>.
       </para>
      </listitem>
     </varlistentry>
@@ -57,6 +88,68 @@
   </para>
  </refsect1>
 
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Set the date/time fields in a paradox database to the current
+    date/time</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$px = px_new();
+$fp = fopen("test.db", "w+");
+px_create_fp($px, $fp, array(array("timestamp", "@"), array("time", "T"), 
array("date", "D")));
+
+$curdate = getdate();
+$jd = gregoriantojd($curdate["mon"], $curdate["mday"], $curdate["year"]);
+$days = $jd - 1721425; /* Number of days between 1.1.4714 b.c. and 1.1.0000 */
+$secs = $curdate["hours"]*3600 + $curdate["minutes"]*60 + $curdate["seconds"];
+px_insert_record($px, array($days*86400000.0 + $secs*1000.0, $secs*1000.0, 
$days));
+
+$curtimestamp = microtime(true);
+$days = (int) ($curtimestamp/86400);
+$secs = $curtimestamp - ($days * 86400.0);
+$days += 2440588; /* Number of days between 1.1.4914 b.c. and 1.1.1970 */
+$days -= 1721425; /* Number of days between 1.1.4914 b.c. and 1.1.0000 */
+px_insert_record($px, array($days*86400000.0 + $secs*1000.0, $secs*1000.0, 
$days));
+for($i=0; $i<2; $i++) {
+       $rec = px_retrieve_record($px, $i);
+       echo px_timestamp2string($px, $rec["timestamp"], "n/d/Y H:i:s")."\n";
+       echo px_date2string($px, $rec["date"], "n/d/Y")."\n";
+}
+px_close($px);
+px_delete($px);
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+2/21/2006 21:42:30
+2/21/2006
+2/21/2006 20:42:30
+2/21/2006
+]]>
+    </screen>
+   </example>
+  </para>
+
+  <para>
+    The julian day count as passed to <function>jdtogregorian</function>
+    has a different base of 1.1.4714 b.c. and must therefore be calculated
+    by adding 1721425 to the day count used in the paradox file. Turning the
+    day count into a timestamp is easily done by multiplying with 86400000.0
+    to optain milli seconds.
+  </para>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+    <function>px_update_record</function>
+  </para>
+ </refsect1>
 </refentry>
 
 <!-- Keep this comment at the end of the file

Reply via email to