|
|
|
|
|
для: Felix
(06.12.2004 в 07:17)
| | Нужно в таблице, которая в MySQL ввести первичный ключ (id) - ключ этот должен совпадать с порядковым номером записи в dbf-файле, тогда заменять записи в файле можно будет при помощи функции dbase_replace_record(), указывая в качестве третьего параметра первичный ключ записи:
<?php
if(!dbase_replace_record($dbh,$record,$table['id']))
{
exit("Ошибка при обновлении записи в dbf");
}
?>
|
PS Правда в таком случае при формировании dbf-файла нужно будет всегда сортировать записи по первичному ключу (ORDER BY id) | |
|
|
|
|
|
|
|
для: cheops
(03.12.2004 в 11:32)
| | Привет Cheops.
Ну с этой задачей мы вроде бы справились :)
А как сделать так чтобы строки которые были выгружены в dbf и потом отредактированы в базе при повторной выгрузке записывались по верх старых не отредактированных а не в новой строке. Остальные данные при этом чтобы не пропали!!! | |
|
|
|
|
|
|
|
для: Felix
(03.12.2004 в 05:03)
| | Для этого можно воспользоваться функцией file_exists, проверяющей существует файл или нет:
<?php
if(!file_exists($db_name))
{
if (!dbase_create($db_name, $def))
{
echo "Ошибка при создании dbf-таблицы";
exit();
}
else
{
exit("Блин, это мы что каждый раз файл перезаписываем?");
}
}
?>
|
http://www.softtime.ru/dic/id_dic=173&id_group=6 | |
|
|
|
|
|
|
|
для: cheops
(02.12.2004 в 13:01)
| | Cheops, привет.
Явставил как ты мне написал код и он выводит "Блин, это мы что каждый раз файл перезаписываем?" это значит всетаки каждый раз перезаписываем файл поверх старых записей я так понимаю. а как сделать чтобы он проверял создан ли dbf и если создан то просто дописывал новые строки не трогая старые? | |
|
|
|
|
|
|
|
для: Felix
(02.12.2004 в 09:12)
| | Я думаю всё не так печально, я наконец-то добрался до вашего примера и попробовал подобавлять в ранее созданный нами http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=752 dbf-файл новые записи - добавляются на ура. Проверьте не срабатывает ли перед этим функция dbase_create()?
<?php
if (!dbase_create($db_name, $def))
{
echo "Ошибка при создании dbf-таблицы";
exit();
}
else
{
exit("Блин, это мы что каждый раз файл перезаписываем?");
}
?>
|
PS В любом случае отлаживаются такие сложные приложения следующим образом - создаётся отдельный маленький проект в задачи которого входит одна функция (например, добавить одну запись из таблицы в уже существующий файл) и на нём проверяется гипотеза - виновата библиотечная функция или ещё чего... Я всегда прибегаю к такому приёму когда работаю со сложным проектом. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(02.12.2004 в 08:49)
| | Все ясно. :-(
Хотелось бы еще услышать что скажет cheops по этому поводу.
Может он еще что нибудь знает. Он мне много в чем помог. (классный спец)
cheops помоги плиззз. | |
|
|
|
|
|
|
|
для: Felix
(02.12.2004 в 06:08)
| | Хм, в документации не так много DBF-функций
-----------------------------------------------------
dbase_add_record -- Add a record to a dBase database
dbase_close -- Close a dBase database
dbase_create -- Creates a dBase database
dbase_delete_record -- Deletes a record from a dBase database
dbase_get_header_info -- Get the header info of a dBase database
dbase_get_record_with_names -- Gets a record from a dBase database as an associative array
dbase_get_record -- Gets a record from a dBase database
dbase_numfields -- Find out how many fields are in a dBase database
dbase_numrecords -- Find out how many records are in a dBase database
dbase_open -- Opens a dBase database
dbase_pack -- Packs a dBase database
dbase_replace_record -- Replace a record in a dBase database
--------------------------------------------------------------------
И если dbase_add_record() отрабатывает не так как надо, то, наверное, других вариантов, кроме как создавать файл нет.... | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(01.12.2004 в 21:45)
| | А еще варианты есть ? Мне очень надо | |
|
|
|
|
|
|
|
для: Felix
(01.12.2004 в 19:00)
| | Наверное, тогда нужно создавать новый dbf-файл.
int dbase_create ( string filename, array fields)
|
И дописывать туда записи. | |
|
|
|
|
|
|
|
для: cheops
(01.12.2004 в 13:20)
| | Может и должен но как говорится не обязан. Он затирает ровно столько строк сколько ему необходимо для записи новых, а остальные не трогает.
Что можно сделать ? | |
|
|
|
|