Вторник, 23.06.2026, 09:59
Приветствую Вас Гость | RSS
Поиск по каталогу
Главная страница | Каталог статей | Регистрация | Вход

Информационные технологии
Форма входа
Меню сайта

Категории каталога
php [246]
perl [1]
perl
ASP [1]
AJAX [0]

Друзья сайта

Наш опрос
Оцените мой сайт
Всего ответов: 69

Начало » Статьи » Web программирование » php

ADODB – русская документация (часть 1) 4
Пример 8: Организация постраничного вывода

Следующий код показывает как организовать простейший постраничный вывод.


include_once('../adodb.inc.php');
include_once(
'../adodb-pager.inc.php');
session_start();

$db = NewADOConnection('mysql');

$db->Connect('localhost','root','','xphplens');

$sql = "select * from adoxyz ";

$pager = new ADODB_Pager($db,$sql);
$pager->Render($rows_per_page=5);


В результате вы увидите что-то похожее на это:

|< << >> >|
ID First Name Last Name Date Created
36 Alan Turing Sat 06, Oct 2001
37 Serena Williams Sat 06, Oct 2001
38 Yat Sun Sun Sat 06, Oct 2001
39 Wai Hun See Sat 06, Oct 2001
40 Steven Oey Sat 06, Oct 2001
Page 8/10

Количество рядов для вывода контролируется функцией Render(). Если вы не укажите никакого значения – по умолчанию будет выведено 10 записей.

Вы можете изменять названия колонок изменяя свой SQL запрос (поддерживается в большинстве баз данных):


$sql = 'select id as "ID", firstname as "First Name",
               lastname as "Last Name", created as "Date Created"
               from adoxyz'
;


Вышеприведенный пример вы можете найти в примере adodb/tests/testpaging.php, включенном в пакет установки. Класс ADODB_Pager может быть адаптирован программистом для вывода вместо линков картинок, а белый фон – более подходящим цветом.

Также вы можете настроить показ html при помощи $pager->htmlSpecialChars = false.

Часть кода, приведенного здесь, выла написана Ivan Oliva и Cornel G.
Пример 9: Экспорт данных в CVS или с разделением табуляцией

В вашем распоряжение есть несколько вспомогательных функций, которые помогут вам экспортировать данные в CVS или в файл с разделителями в виде табуляции:


include_once('/path/to/adodb/toexport.inc.php');
include_once(
'/path/to/adodb/adodb.inc.php');

$db = &NewADOConnection('mysql');
$db->Connect($server, $userid, $password, $database);

$rs = $db->Execute('select fname as "First Name", surname as "Surname" from table');

print
"&lt;pre>";
print
rs2csv($rs); # возвращает строку, CSV формат

print '&lt;hr>';

$rs->MoveFirst(); # Замечание: некоторые базы данных не поддерживают MoveFirst
print rs2tab($rs,false); # возвращает строку, разделитель - табуляция
# false == подавляет название полей на первой линии
print '&lt;hr>';
$rs->MoveFirst();
rs2tabout($rs); # выводит непосредственно на stdout (есть также функция rs2csvout)
print "&lt;/pre>";

$rs->MoveFirst();
$fp = fopen($path, "w");
if (
$fp) {
 
rs2csvfile($rs, $fp); # записываем в файл (есть также функция rs2tabfile)
 
fclose($fp);
}



Перевод каретки или переход на новую линию заменены на пробелы. Названия колонок будут записаны самой первой линией. Строка будет содержать текст взятый в двойные кавычки с разделителями. Двойные кавычки будут взяты в двойные кавычки еще раз. Это необходимо, чтобы файл нормально импортировался в Exel.

Все, описанные выше, функции берут в качестве дополнительного параметра $addtitles, который по умолчанию выставлен в TRUE. Если его установить в FALSE – первая линия не будет содержать названия колонок.
Пример 10: Recordset фильтры

Иногда может потребоваться перед использованием сделать преобразование всех рядов в recordset. Для примера мы преобразуем все текстовые данные в верхний регистр:


include_once('adodb/rsfilter.inc.php');
include_once(
'adodb/adodb.inc.php');

// ucwords() каждый элемент в recordset
function do_ucwords(&$arr,$rs)
{
    foreach(
$arr as $k => $v) {
       
$arr[$k] = ucwords($v);
    }
}

$db = NewADOConnection('mysql');
$db->PConnect('server','user','pwd','db');

$rs = $db->Execute('select ... from table');
$rs = RSFilter($rs,'do_ucwords');


Функция RSFilter принимает 2 параметра: recordset и название функции фильтра. Возвращает обработанный recordset с указателем на первом элементе. Функция фильтра принимает 2 параметра: текущий ряд как массив и объект recordset. Для будущей совместимости вы не должны использовать оригинальный объект recordset.
Пример 11: Умные транзакции

Старый способ сделать транзакцию требовал, чтобы вы использовали:


$conn->BeginTrans();
$ok = $conn->Execute($sql);
if (
$ok) $ok = $conn->Execute($sql2);
if (!
$ok) $conn->RollbackTrans();
else
$conn->CommitTrans();


Для большинства проектов этот способ очень сложен, потому что вы должны отслеживать статус ошибки. Умные транзакции намного проще. Вы запускаете умную транзакцию функцией StartTrans():


$conn->StartTrans();
$conn->Execute($sql);
$conn->Execute($Sql2);
$conn->CompleteTrans();


CompleteTrans() обнаруживает возникшие SQL ошибки и делает обратную перемотку или Commit (подтверждение). Вы также можете вызвать обратную перемотку, даже если никакой ошибки не произошло используя функцию FailTrans(). Обратите внимание, что обратная перемотка была сделана в CompleteTrans(), то в FailTrans() она сделана не будет.


$conn->StartTrans();
$conn->Execute($sql);
if (!
CheckRecords()) $conn->FailTrans();
$conn->Execute($Sql2);
$conn->CompleteTrans();


Вы также можете проверить, была ли в процессе транзакции ошибка. Для этого воспользуйтесь функцией HasFailedTrans(). Она возвратит TRUE, если вызывалась функция FailTrans() или была ошибка при выполнении SQL запроса. Убедитесь, что вы вызываете функцию HasFailedTrans() перед CompleteTrans(), потому что она выдает результат только между StartTrans/CompleteTrans().

И, наконец, StartTrans/CompleteTrans могут быть вложенными и только самый удаленный блок выполнен. Функции BeginTrans/CommitTrans/RollbackTrans, напротив, НЕ МОГУТ быть вложенными.


$conn->StartTrans();
$conn->Execute($sql);
 
$conn->StartTrans();    # игнорируется
 
if (!CheckRecords()) $conn->FailTrans();
 
$conn->CompleteTrans(); # игнорируется
$conn->Execute($Sql2);
$conn->CompleteTrans();


Обратите внимания, точки сохранения (savepoints) на данный момент не поддерживаются.
Категория: php | Добавил: freeone (28.05.2007) | Автор: Феськов Кузьма
Просмотров: 512 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright Информационные технологии © 2006