| Господа, плотно занялся задачей вытаскивания из Оракла таблицы в клиентский браузер с помощью PHP.
Есть клиентская машина: Win2000, Apache+PHP локально,
сервер Linux c Oracle , таблица на Oracle.
1.То есть браузер,форма, три кнопки, соединяемся с Ораклом функциями РНР
2.тянем через SQL-вложение в PHP именинников вчера, сегодня, завтра, ... с браузера.
3. Тянем…..из одной большой таблицы на Оракле, разбираем эту таблицу по ячейкам, построчно опять же функциями РНР…..
4. Получаем выдержки (по полям, по дням рождения,…) из этой таблицы в браузере.
есть трудности, конечно,
прошу совета - вот проект основной программы на PHP
<html>
<head>
<title>birthdays</title>
</head>
<body>
<table width=80% border=0 align="center">
<tr valign="middle" align="center">
<form method="post" action="birthday.php">
<td width="33%">
<input type="hidden" name="ind" value="12.5">
<input type="submit" name="flash" value="Поздравляем" size="0100">
</td>
</form>
<form method="post" action="birthday.php">
<td width="33%">
<input type="hidden" name="ind" value="11">
<input type="submit" name="flash" value="Скоро поздравляем">
</td>
</form>
<form method="post" action="birthday.php">
<td width="33%">
<input type="hidden" name="ind" value="1">
<input type="submit" name="flash" value="Именинники вообще">
</td>
</form>
</tr>
</table>
<?php
if ($ind > 0)
{
// Соединение о Oracle - переменная с - информация о коннекте
if ($c=OCILogon("it_dir","lbhtrwbz","barkas")
{
//Выбор данных (SQL - запрос) из Oracle (моя таблица itko.kdk!)
if (ind==1)
$str="SELECT FAM,NAM,OTCH,D_ROZD FROM itko.kdk
WHERE mod(months_between( sysdate,D_ROZD),12)>$ind-1
order by mod(months_between( sysdate,D_ROZD),12) desc";
else
$str="SELECT FAM,NAM,OTCH,D_ROZD FROM itko.kdk
order by FAM";
// Разбор и вывод строки (по ячейкам - всю таблицу Oracle) print $str;
//OCIParse пытается разобрать строку str, превращает в запрос,
// то есть подготавливает запрос к выполнению
$s=OCIParse($c,$str);
//OCIExecute выполняет выражение SQL - выполнить строку str вместе с коннектом
OCIExecute($s, OCI_DEFAULT);
//OCINumCols возвращает в переменную чисельное значение количества столбцов,
// изменённых в результате выполнения запроса
$ncols=OCINumCols($s);
echo "<table align=center border=1 cellspacing=0 bordercolor=gray>";
//OCIFetch выбирает следующую строку из результата в буфер.
//Пока цикл не закончился- результат выборки по строкам
while (OCIFetch($s))
{
echo "<tr>";
for ($i=1; $i<=$ncols; $i++ )
{
// ociresult возвращает значение поля из результата запроса.
//отображает ячейку - счётчик цикла +1 - отображает следующую ячейку - и т.д.
echo "<td align=left>".ociresult($s,$i)."</td>";
}
echo "</tr>";
}
//Выстраивает таблицу с Oracle на РНР
echo "</table>";
//Обработка ошибок на Oracle
} else
{ $err=OCIError();
echo "Oracle Connect Error".$err[text]; }
//Для подключения указанных функций в файле php.ini следует включить extension
//то есть убрать перед строками - ;
// extension=php_dbase.dll
// extension=php_oci8.dll
// extension=php_oracle.dll
}
?>
</body>
</html> | |