|
|
|
| попросили написать скрипт вывода из базы Postrgre. базу я не вижу. скрипт, написанный по
аналогии с MySQL- овским, выводит только 1 строку, хотя меня уверяют, что их больше. да
я и сама вижу, что больше, потому что pg_num_rows($result) дает >1. искала на php.net, но
там дурацкие примеры, ничего непонятно. поняла только, что требуется счетчик строк. но
при использовании конструкции pg_fetch_array($result,$j) со счетчиком строк $j выдается
ошибка Cannot jump to row 0. помнится, меня жутко бесила эта ошибка в начале работы с
MySQL. но как я ее обходила, не помню.
как все-таки из Postgre вывести несколько строк результата? надо два цикла делать? первый
по строкам, второй по полям внутри строки? как тогда заставить ее "прыгать" по строкам,
если она мне постоянно ругается "не могу прыгнуть"? | |
|
|
|
|
|
|
|
для: elenaki
(20.07.2007 в 09:57)
| | привели бы чтоли Ваш фрагмент... | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2007 в 10:03)
| |
<?
$db_conn=pg_connect($conn_string) or die ("<h1>Database error</h1><br>".pg_last_error());
$sql="SELECT * FROM epp.app_info WHERE domain='".$zapros.".co.gr'";
$result=pg_query($db_conn,$sql) or die ("<h1>Database error</h1><br>".pg_last_error($db_conn). "<br> query=$sql");
?>
<table cellpadding="2" cellspacing="1" border="0" align="center" width=100% height="100%">
<tr bgcolor="#ffffff">
<td align="center">Position</td>
<td align="center">Queue <br>N<sup><u>o</u></sup></td>
<td align="center">Applied</td>
<td align="center">Applicant</td>
<td align="center">Deadline <br>for<br>documents </td>
<td align="center">Documents<br>received</td>
<td align="center">Prior Right</td>
<td align="center">Country</td>
<td align="center">Status</td>
</tr>
<? $i=1;
while ($row = pg_fetch_array($result))
{
$epp_id = $row["eppid"];
$domain = $row["domain"];
$name = $row["name"];
$org = $row["org"];
$cr_date = $row["cr_date"];
$ex_date = $row["ex_date"];
$doc_date = $row["doc_date"];
$status_code = $row["status_code"];
$country = $row["country"];
$pname = $row["pname"];
?>
<tr>
<td><?=$i?></td>
<td align="center"><?=$epp_id?></td>
<td align="center"><?=$cr_date?></td>
<td align="center"><?=$name?>, <br><?=$org?></td>
<td align="center"><?=$ex_date?></td>
<td align="center"><?=$doc_date?></td>
<td align="center"><?=$pname?></td>
<td align="center"><?=$country?></td>
<td align="center"><?=$status?></td>
</tr>
<?
$i++;
}
?>
</table></td>
|
| |
|
|
|
|
|
|
|
для: elenaki
(20.07.2007 в 10:17)
| | то есть код
<?
for($i = 0, $n = pg_num_rows($result); $i < $n; )
{
$row = pg_fetch_array($result, $i++, PGSQL_ASSOC)
or die(pg_result_error($result)) ;
print_r($row);
echo "..." ;
}
?>
|
не проходит? | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2007 в 10:48)
| | нет. не проходит. сработало вот это. только беда в том, что этот код выводит ВСЕ поля, а
мне нужны избранные и в другом порядке. это уже проблема массива.... ищу способ.
$num = pg_numrows($result);
$col_num = pg_numfields($result);
$i = 1;
for ($k=0; $k<$num; $k++) {
$line = pg_fetch_array($result, $k, PGSQL_ASSOC);
print "<tr bgcolor=#ffffff>
<td>$i</td>";
for ($j=0; $j<$col_num; $j++){
list($col_name, $col_value) = each($line);
print "<TD>$col_value</TD>";
}
echo "</tr>";
$i++;
}
|
| |
|
|
|
|
|
|
|
для: elenaki
(20.07.2007 в 12:21)
| |
<?
$num = pg_numrows($result);
$col_num = pg_numfields($result);
$i = 1;
for ($k=0; $k<$num; $k++) {
$line = pg_fetch_array($result, $k, PGSQL_ASSOC);
$sql="SELECT descr_en FROM epp.app_status WHERE status_id='".$line["status_code"]."'";
$result2=pg_query($db_conn,$sql) or die ("<h1>Database error</h1><br>".pg_last_error($db_conn). "<br> query=$sql");
$row2=pg_fetch_row($result2);
$status=$row2[0];
print "<tr bgcolor=#ffffff>
<td>$i</td>";
// for ($j=0; $j<$col_num; $j++){
//list($col_name, $col_value) = each($line);
print "<TD>".$line["eppid"]."</TD>";
print "<TD>".$line["cr_date"]."</TD>";
print "<TD>".$line["name"].", <br>".$line["org"]."</TD>";
print "<TD>".$line["ex_date"]."</TD>";
print "<TD>".$line["doc_date"]."</TD>";
print "<TD>".$line["pname"]."</TD>";
print "<TD>".$line["country"]."</TD>";
print "<TD>".$status."</TD>";
//}
echo "</tr>";
$i++;
}
?>
|
получилось вот так. спасибо всем! Trianon - гений. | |
|
|
|