Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как из Postgree вывести несколько строк результата?
 
 автор: elenaki   (20.07.2007 в 09:57)   письмо автору
 
 

попросили написать скрипт вывода из базы Postrgre. базу я не вижу. скрипт, написанный по
аналогии с MySQL- овским, выводит только 1 строку, хотя меня уверяют, что их больше. да
я и сама вижу, что больше, потому что pg_num_rows($result) дает >1. искала на php.net, но
там дурацкие примеры, ничего непонятно. поняла только, что требуется счетчик строк. но
при использовании конструкции pg_fetch_array($result,$j) со счетчиком строк $j выдается
ошибка Cannot jump to row 0. помнится, меня жутко бесила эта ошибка в начале работы с
MySQL. но как я ее обходила, не помню.

как все-таки из Postgre вывести несколько строк результата? надо два цикла делать? первый
по строкам, второй по полям внутри строки? как тогда заставить ее "прыгать" по строкам,
если она мне постоянно ругается "не могу прыгнуть"?

   
 
 автор: Trianon   (20.07.2007 в 10:03)   письмо автору
 
   для: elenaki   (20.07.2007 в 09:57)
 

привели бы чтоли Ваш фрагмент...

   
 
 автор: elenaki   (20.07.2007 в 10:17)   письмо автору
 
   для: 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>

   
 
 автор: Trianon   (20.07.2007 в 10:48)   письмо автору
 
   для: 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 
"..." ;
}
?>

не проходит?

   
 
 автор: elenaki   (20.07.2007 в 12:21)   письмо автору
 
   для: 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:33)   письмо автору
 
   для: 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$kPGSQL_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 - гений.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования