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 >= 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