Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

px_insert_record(3) [php man page]

PX_INSERT_RECORD(3)													       PX_INSERT_RECORD(3)

px_insert_record - Inserts record into paradox database

SYNOPSIS
int px_insert_record (resource $pxdoc, array $data) DESCRIPTION
Inserts a new record into the database. The record is not necessarily inserted at the end of the database, but may be inserted at any position depending on where the first free slot is found. 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. 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. Fields of type PX_FIELD_TIME and PX_FIELD_DATE both require a long value. In the first case this is the number of milliseconds since mid- night. 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. Note This function is only available if pxlib >= 0.6.0 is used. PARAMETERS
o $pxdoc - Resource identifier of the paradox database as returned by px_new(3). o $data - Associated or indexed array containing the field values as e.g. returned by px_retrieve_record(3). RETURN VALUES
Returns FALSE on failure or the record number in case of success. EXAMPLES
Example #1 Set the date/time fields in a paradox database to the current date/time <?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.4714 b.c. and 1.1.1970 */ $days -= 1721425; /* Number of days between 1.1.4714 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")." "; echo px_date2string($px, $rec["date"], "n/d/Y")." "; } px_close($px); px_delete($px); ?> The above example will output: 2/21/2006 21:42:30 2/21/2006 2/21/2006 20:42:30 2/21/2006 The Julian day count as passed to jdtogregorian(3) 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 obtain milli seconds. SEE ALSO
px_update_record(3) PHP Documentation Group PX_INSERT_RECORD(3)

Check Out this Related Man Page

PX_INSERT_RECORD(3)					     Library Functions Manual					       PX_INSERT_RECORD(3)

NAME
PX_insert_record -- Inserts a new record in the Paradox file SYNOPSIS
#include <paradox.h> int PX_insert_record(pxdoc_t *pxdoc, pxval_t **dataptr) DESCRIPTION
Inserts a new record stored in the array dataptr into a Paradox file. The position of the record will be determined by the function itself, starting at the beginning of the file and searching towards the end for a free slot. A free slot can be the result of former calls of PX_delete_record(3) or not completely filled data blocks in the input file. If there is no free slot within the file, then a new record will be added at the end. Blobs will be automatically written if a blob file was set with PX_set_blob_file(3). The memory for dataptr and the field values can be freed after PX_insert_record has been called. Each single element in the array of pointers to pxval_t can be easily created with MAKE_PXVAL(pxdoc_t *pxdoc, pxval_t *val) and setting the actual value afterwards. A quite common way to build up the record is the following: dataptr = (pxval_t **) malloc(PX_get_num_fields(pxdoc)*sizeof(pxval_t *)); MAKE_PXVAL(pxdoc, dataptr[0]); dataptr[0]->type = pxfLong; dataptr[0]->value.lval = 45; dataptr[1]->type = pxfAlpha; dataptr[1]->value.str.val = "test"; dataptr[1]->value.str.len = 4; PX_insert_record(pxdoc, dataptr); free(dataptr[0]); free(dataptr[1]); free(dataptr); There is currently no need to set the type, though it is recommended. The field types pxfMemoBLOb and pxfFmtMemoBLOb are treated like strings. Fields of type pxfAutoInc are automatically incremented if its value is set to NULL. In such a case the value is taken from the header of the database. You should not have more than one field of type pxfAutoInc in your database, otherwise the automatic incrementation will not work. RETURN VALUE
Returns the record number on success or -1 on failure. The number of the first record is 0. SEE ALSO
PX_retrieve_record(3), PX_delete_record(3), PX_update_record(3) AUTHOR
This manual page was written by Uwe Steinmann uwe@steinmann.cx. PX_INSERT_RECORD(3)
Man Page