|
|
|
| есть код
header('Content-Type: text/html; charset=cp866');
set_time_limit(0);
$db = dbase_open('RD_DC_RS.DBF', 2);
if ($db) {
// получим старую запись
$row = dbase_get_record_with_names($db, 1);
// сбросим пометку 'deleted'
unset($row['deleted']);
// Установим в поле даты *****
$row['NOMER'] = '';
$row = array_values($row);
dbase_replace_record($db, $row, 1);
dbase_close($db);
}
|
в итоге все проходит, файл портится, и больше не открывается темже DBFNavigator-ом...
что не так делаю? | |
|
|
|
|
|
|
|
для: Alph[p]a
(14.11.2011 в 11:59)
| | Вообще кажется понятно в чем проблема, в типах..
вопрос как затолкать в поле вида хххххххх число которое начинает с 0 ?
php думает что это восьмиричное число и базу идет не то значение... как? | |
|
|
|
|
|
|
|
для: alph[p]a
(14.11.2011 в 13:42)
| | Для хранения таких чисел традиционно используются строки. | |
|
|
|
|
|
|
|
для: alph[p]a
(14.11.2011 в 13:42)
| | опять вопрос, ну что не так?
<?php
header('Content-Type: text/html; charset=cp866');
set_time_limit(0);
$dbh = dbase_open("BD_FIRM.DBF",2);
if(!$dbh) exit("Не могу подключится к базе");
$numrecords = dbase_numrecords($dbh);
// gets the old row
$row = dbase_get_record_with_names($dbh, 1);
unset($row['deleted']);
$row['COD'] = "77777";
$row=array_values($row);
// Replace the record
dbase_replace_record($dbh, $row, 1);
dbase_close($dbh);
?>
|
Warning: dbase_replace_record() [function.dbase-replace-record]: Wrong number of fields specified in C:\xampp\**** | |
|
|
|
|
|
|
|
для: Alph[p]a
(14.11.2011 в 14:47)
| | Говорит, что количество полей в массиве не соответствует количеству полей в C:\xampp\**** | |
|
|
|
|
|
|
|
для: cheops
(14.11.2011 в 14:49)
| | в том то и дело sizeof говорит что и там и там одинаково
единственное чтоя делаю так это unset($row['deleted']);
в мануале пхп так написано | |
|
|
|
|
|
|
|
для: cheops
(14.11.2011 в 14:49)
| | а как не сооотвествует если я читаю и мне пишет что сам себе не верен...?? | |
|
|
|
|
|
|
|
для: Alph[p]a
(14.11.2011 в 15:41)
| | Во-первых вы один элемент удаляете, а другой вставляете (в конец массива). Выведите дамп массива $row - он выглядит именно так, как вы ожидаете? | |
|
|
|
|
|
|
|
для: cheops
(14.11.2011 в 15:59)
| | все, вижу error, php не видит, поля типа "Memo". блин как исправить, как сделать так чтобы можно было обносять запись без них?
тоесть смотрю файл базы через DBFNavigator там есть два поля а дамп в пхп ничего не даёт, не видит, в итоге 2 поля просто исчезают, подставить я ничего туда не могу, затру правильные данные и база будет не база(( Как быть? Какие инструменты для работы с базами я могу использовать чтобы удовлетворить своё требование? | |
|
|
|
|
|
|
|
для: Alph[p]a
(14.11.2011 в 16:21)
| | я вообще правильно копаю "driver odbc foxpro" ?
где вообще можно ченить почитать про то какая юзать dbase через php | |
|
|
|
|
|
|
|
для: Alph[p]a
(14.11.2011 в 16:43)
| | Систематически пожалуй нигде, кроме как в справочном руководстве... есть парочка тем на форуме, но они вам вряд ли вам помогут с вашей проблемой. | |
|
|
|
|
|
|
|
для: cheops
(14.11.2011 в 18:28)
| | Может кому и пригодиться.
Работа с полями типо Memo в DBF файлах через PHP:
Вот тут есть класс и пример его использования.
http://stackoverflow.com/questions/1947348/how-to-read-foxpro-memo-with-php
|
но почему после замены файл становится испорченным?
$db = dbase_open('R.DBF', 2);
if ($db) {
$row = dbase_get_record_with_names($db, 1);
unset($row['deleted']);
$row['NOMER'] = "00000777";
$row=array_values($row);
dbase_replace_record($db, $row, 1);
dbase_close($db);
}
|
| |
|
|
|