Actually you have to change the read array from key based to element (numeric) based and everything works correctly!
$db = dbase_open( "yourfile.dbf", 2); // 0=RO, 1=WO, 2=RW
if ($db) {
$row = dbase_get_record_with_names($db, 1);
unset($row["deleted"]); // drop the field
// do whatever it is you want to the $row["elements"]
// then convert to numeric to store:
$rarr = array();
foreach ($row as $i=>$vl) $rarr[] = $vl;
dbase_replace_record($db, $rarr, 1);
dbase_close($db);
}
That code actually works!
--- Want to be famous?
http://www.3famous.com/ - 100% PHP BABY!
dbase_replace_record
(PHP 4, PHP 5)
dbase_replace_record — Ersetzt einen Datensatz in einer dBase-Datenbank
Beschreibung:
bool dbase_replace_record
( int $dbase_identifier
, array $record
, int $dbase_record_number
)
Überschreibt die Daten des Datensatzes record_number mit den Daten aus record in der Datenbank. Falls die Anzahl der definierten Einträge ungleich der Anzahl der Datenfelder in dem angesprochenen Datensatz ist, wird die Ausführung dieses Befehls abgewiesen und FALSE / falsch zurück gegeben.
dbase_record_number ist ein Integer-Wert, der von 1 bis zur Anzahl der Datensatz-Anzahl der Datenbank reicht (wie er bei Aufruf der Funktion dbase_numrecords() zurück gegeben wird).
dbase_replace_record
3Famous at gmail dot com
11-Feb-2008 09:03
11-Feb-2008 09:03
hassan at datakillarna dot se
10-Feb-2006 04:30
10-Feb-2006 04:30
If you get "unexpected error", try to change the assoc array, $row, to an indexed array with array_values().
Example:
$row = array_values($row);
dbase_replace_record($db, $row, 1);
The dbase_replace-function cannot handle an assoc array.
Hope this will save someone a headache! ;)
wysocki at wildworld dot net
11-Feb-2005 01:15
11-Feb-2005 01:15
The dbase add and replace functions do NOT like to use the associative array.
<?
//This gives "unspecified error" on replace and add:
$row = dbase_get_record_with_names($db, 1);
unset($row['deleted']);
dbase_replace_record($db, $row, 1);
dbase_add_record($db, $row);
//To further prove the point,
//The first add works, the second one fails:
$testrow1=array('one','2','three');
dbase_add_record($db,$testrow1);
$testrow2=array('FIELDA' => 'xxx','FIELDB' => '9','FIELDC' => 'yyyyy');
dbase_add_record($db,$testrow2);
?>
