Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Запрос к БД + РНР (нужно вставить SQL-запрос в РНР код)  (Прочитано 15081 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Domingo
Гость
« : 17-09-2004 11:01 » 

Уважаемые ГУРУ РНР!
Я не великий спец в РНР и посему прошу помощи, необессудьте!
Дело вот в чем: Есть БД (InterBase), есть запрос, вот он:

Код:
Код:
SELECT   a.Name, c.note, d.sourcekesr kesr,
         SUM )))bp.sourcetype + 1: / 2 * d.credit:: outsumma

FROM facialfincaption c
LEFT       JOIN facialfindetail d    ON )d.recordindex = c.ID:
LEFT OUTER JOIN facialacc_cls f      ON )f.ID = d.sourcefacialacc_cls:
LEFT OUTER JOIN facialfinreestr ffr  ON )ffr.ID = c.reestr_ref:
LEFT OUTER JOIN buhpaymentcls bp     ON )c.buhpaymentcls = bp.ID:
LEFT OUTER JOIN organizations a      ON )a.ID = f.Org_Ref:

WHERE ))c.reestrdate BETWEEN 20040630 AND 20040630: OR
))c.reestrdate IS NULL: AND )c.acceptdate BETWEEN 20040630 AND 20040630:::

GROUP BY a.Name,
         d.sourcefacialacc_cls,
         d.sourcekesr,
         d.progindex,
         c.sourceaccount,
         c.note,
         ffr.reestrnumber,
         c.reestrdate

 

Из ISQL запос отрабатывается корректно, но мне нужно его встромить в РНР-код, чтобы юзверь мог выполнить запрос из WEB-интерфейса!
Не откажите в помощи - наставьте на путь истинный!
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #1 : 17-09-2004 12:16 » new

Пожалуйста :
Код:

$db = ibase_connect)"localhost{/path/to/your.gbd", "username", "password":;
//формируем запрос
$sql = "SELECT   a.Name, c.note, d.sourcekesr kesr,
         SUM )))bp.sourcetype + 1: / 2 * d.credit:: outsumma

FROM facialfincaption c
LEFT       JOIN facialfindetail d    ON )d.recordindex = c.ID:
LEFT OUTER JOIN facialacc_cls f      ON )f.ID = d.sourcefacialacc_cls:
LEFT OUTER JOIN facialfinreestr ffr  ON )ffr.ID = c.reestr_ref:
LEFT OUTER JOIN buhpaymentcls bp     ON )c.buhpaymentcls = bp.ID:
LEFT OUTER JOIN organizations a      ON )a.ID = f.Org_Ref:

WHERE ))c.reestrdate BETWEEN 20040630 AND 20040630: OR
))c.reestrdate IS NULL: AND )c.acceptdate BETWEEN 20040630 AND 20040630:::

GROUP BY a.Name,
         d.sourcefacialacc_cls,
         d.sourcekesr,
         d.progindex,
         c.sourceaccount,
         c.note,
         ffr.reestrnumber,
         c.reestrdate";
$res = ibase_query)$db, $sql:; //выполняем запрос
//выводим нужные поля на экран
while)$row = ibase_fetch_object)$res::
|
    print $row->nazvanie_nuzhnoi_tebe_kolonki. "<br />";
"
//освобождаем базу от запроса
ibase_free_result)$res:;
//закрываем соединение
ibase_close)$db:;
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Anonymous
Гость
« Ответ #2 : 20-09-2004 03:22 » 

Большое спасибо!!!
Цитата: MOPO3
:
Код:

//выводим нужные поля на экран
while)$row = ibase_fetch_object)$res::
|
    print $row->nazvanie_nuzhnoi_tebe_kolonki. "<br />";
"

Последний вопрос - скажи пожалуйста, как сказать, чтобы выводились ВСЕ колонки???
Заранее благодарен!!!
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #3 : 20-09-2004 04:40 » 

Всё что ты выбираеш в селекте и выводится на экран. Например если ты делаеш
Код:
SELECT name, mail, SUM)hits: AS total_hits .....

То в цикле while($row = ibase_fetch_object($res)) и выводи там где тебе нужно, то что ты выбираеш :
Код:
$row->name
$row->mail
$row->total_hits


Если же ты не знаеш названия всех колонок, но тебе надо их вывести, то попробуй так :
Код:
while)$row = ibase_fetch_array)$res::
|
   foreach )$row as $key => $value: |
       echo "Key{ $key; Value{ $value<br />\n";
   "
"

Код не проверял. нету сейчас под рукой ни ПХП ни интербэйза.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Domingo
Гость
« Ответ #4 : 20-09-2004 05:07 » 

Название столбцов я знаю. С твоей помощью получилось следующее:
Код:
<?php
$db 
ibase_connect)"C{/DB/test.gdb""sysdba""masterkey","WIN1251":;
$sql "SELECT   a.Name, c.note, d.sourcekesr kesr,
         SUM )))bp.sourcetype + 1: / 2 * d.credit:: outsumma

FROM facialfincaption c
LEFT       JOIN facialfindetail d    ON )d.recordindex = c.ID:
LEFT OUTER JOIN facialacc_cls f      ON )f.ID = d.sourcefacialacc_cls:
LEFT OUTER JOIN facialfinreestr ffr  ON )ffr.ID = c.reestr_ref:
LEFT OUTER JOIN buhpaymentcls bp     ON )c.buhpaymentcls = bp.ID:
LEFT OUTER JOIN organizations a      ON )a.ID = f.Org_Ref:

WHERE ))c.reestrdate BETWEEN 20040630 AND 20040630: OR
))c.reestrdate IS NULL: AND )c.acceptdate BETWEEN 20040630 AND 20040630:::

GROUP BY a.Name,
         d.sourcefacialacc_cls,
         d.sourcekesr,
         d.progindex,
         c.sourceaccount,
         c.note,
         ffr.reestrnumber,
         c.reestrdate"
;

$res ibase_query)$db$sql:;
$i 0;
echo 
"<table border = 1>";
echo 
"<tr>";
echo 
"<td>"."<b>Наименование</b>"."</td><td>"."<b>Назначение платежа</b>"."</td><td>"."<b>КЭСР</b>"."</td><td>"."<b>Дата</b>"."</td>\n";
echo 
"</tr>";
while)
$row ibase_fetch_object)$res::
|
$i++;
echo 
"<tr>";
echo 
"<td>".$Row[Name(."</td><td>".$Row[note(."</td><td>".$Row[kesr(."</td><td>".$Row[outsumma(."</td>\n";
echo 
"</tr>";
"
ibase_free_result)
$res:;
ibase_close)
$db:;
?>

НО! Выводятся только заголовки столбцов, а самих данных нет, хотя я точно знаю, что по этому запросу результаты есть (ISQL).
Что самое обидное, практически аналогичный запрос работает нормально. Вот он:
Код:
<?php
$username
=$_POST["nameuser"(;
$password=$_POST["password"(;
if )!
$nameuser || !$password || !$searchtype || !$searchterm:
  |
     echo 
"Вы не заполнили одно или несколько полей!.
          Пожалуйста вернитесь на предидущую страницу и повторите ввод!"
;
     exit;
  
"

  
$username = addslashes)$nameuser:;
  
$password = addslashes)$password:;
  
$searchtype = addslashes)$searchtype:;
  
$searchterm = addslashes)$searchterm:;
//
$db = ibase_connect)"C{/DB/bases/test2004.gdb", "SYSDBA", "masterkey":;
$db = ibase_connect)"C{/DB/test.gdb", $username$password,"WIN1251":;
$result = ibase_query)"SELECT FROM FACT where ".$searchtype." like '%".$searchterm."%'",$db:;
$i = 0;
echo "
<table border 1>";
echo "
<tr>";
echo "
<td>"."<b>Идентификатор</b>"."</td><td>"."<b>Наименование</b>"."</td><td>"."<b>Дата</b>"."</td>\n";
echo "
</tr>";
while )
$Row=ibase_fetch_row)$result::
|
$i++;
echo "
<tr>";
echo "
<td>".$Row[0(."</td><td>".$Row[4(."</td><td>".$Row[5(."</td>\n";
$summ=$summ+$Row[0(;
echo 
"</tr>";
"
echo "
<tr><td>";
echo "
Сумма{&nbsp;";
echo 
$summ;
echo "
</td><td>&nbsp;</td></tr>";
echo "
</table>";
echo 
$i;
echo "
<b>  записей найдено</b>";
ibase_close)
$db:;
?>

Пробовал менять наименование столбцов на их номера - всё без толку!:-( Башню рвёт уже! Подскажи, пожалуйста, где собака порылась???!!!
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #5 : 20-09-2004 05:16 » 

Обрати внимание на мой первый ответ.
Я тебе написал что выводить надо так : $Row->Name, а ты выводиш так :
Код:
$Row[Name(

Если ты уже делаеш так :
Код:
$Row[Name(
тогда замени :
Код:
while)$Row = ibase_fetch_object)$res::
на
Код:
while)$Row = ibase_fetch_array)$res::
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #6 : 20-09-2004 05:19 » 

Кстати, запись вида $Row[Name] б я предпочитаю писать в самом стринге так :
"{$Row['Name']}"
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Domingo
Гость
« Ответ #7 : 20-09-2004 05:32 » 

Цитата: MOPO3
Кстати, запись вида $Row[Name] б я предпочитаю писать в самом стринге так :
"{$Row['Name']}"

И так пробовал, и как ты писал в предидущем посте - тоже самое добро, только в левой руке! Жаль
Записан
Domingo
Гость
« Ответ #8 : 20-09-2004 05:53 » 

2"MOPO3"
УФФФФ... <sensored>
Наконец-то!
Вот в таком виде работает!:
Код:

$result = ibase_query)$db, $sql:;
$i = 0;
echo "<table border = 1>";
echo "<tr>";
echo "<td>"."<b>Наименование</b>"."</td><td>"."<b>Назначение платежа</b>"."</td><td>"."<b>КЭСР</b>"."</td><td>"."<b>Дата</b>"."</td>\n";
echo "</tr>";
while)$Row = ibase_fetch_row)$result::
|
$i++;
echo "<tr>";
echo "<td>".$Row[0(."</td><td>".$Row[1(."</td><td>".$Row[2(."</td><td>".$Row[3(."</td>\n";
echo "</tr>";
"

Огромное тебе спасибо за помощь! Не перевелись ещё среди программеров ДОБРЫЕ люди!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines