Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pg_fetch_array(): Unable to jump to row...
Forum PHP.pl > Forum > PHP
karolbul
Witam,
Mam następujący problem:
skrypt powinien wyświetlać pobrane z bazy wyniki zapytania w porcjach 20 rekordów w tabeli (stronnicowanie).
Problem w tym, że jeżeli w bazie jest 35 rekordów odpowiadających kryterium zapytania, skrypt wyświetli tylko jedną podstronę z 20 rekordami a pozostałe pominie, tzn. nie wyświetli.
W drugim przypadku jeżeli wynik zapytania zwraca mniej rekordów niż 20 (w bazie np. istnieje 5 rekordów odpowiadających danemu kryterium) to wyświetli komunikaty: (ilość poniższych komunikatów powiela do 20, tzn. jeżeli w bazie jest tylko 5 rekordów to wyświetli dodatkowo 15 ostrzeżeń):

Warning: pg_fetch_array(): Unable to jump to row 6 on PostgreSQL result index 6 in /usr/local/apache/htdocs/b/wydruk_script.php on line 163
.
.
.
.
.
.
Warning: pg_fetch_array(): Unable to jump to row 19 on PostgreSQL result index 6 in /usr/local/apache/htdocs/b/wydruk_script.php on line 163


oto fragment mojego kodu:
  1. <?php
  2.  
  3. $SQL = "SELECT COUNT(*) FROM poczta_wych where data_wyslania = '".$data_wyslania."' "; 
  4. $RES = pg_query($SQL);;
  5. list($iloscWpisow) = pg_fetch_row($RES);
  6.  
  7.  
  8. $SQL = "SELECT * FROM poczta_wych where data_wyslania = '".$data_wyslania."'";
  9.  
  10.  
  11. $RES2 = pg_query($SQL); 
  12.  
  13. ... kod rysuje tabele...
  14.  
  15. for($g=($_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE)-20;$g<$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE;$g++)
  16. {
  17.  
  18.  
  19. $AFR = pg_fetch_array($RES2,$g);
  20.  
  21. ?>

i dalej w pętli wstawia poszczególne dane.
nospor
jaja sobie robisz? zamykam. prosze przeslac mi na PW nową treśc , bez zbedengo kodu w stylu echo '<tr>'; i objetej we wlasciwe bbcode.
zastanow sie. podales nam tu kod na 4 strony z czego 4/5 kodu to rzeczy ktore nas nie interesuja a tylko zaciemniają wszystko. Patrz podpis ponizej

edit: otwieram. ale dalej nie bylo bbcode. poprawilem
mrbungle
Jest cos takiego w pg jak LIMIT i OFFSET. Sa rownowazne MySQL-owemu : LIMIT X,Y
Proponowałbym tym pomanipulować winksmiley.jpg

Ja bym to zrobil tak:
  1. <?php
  2.  
  3.  
  4. if(!isset($_GET['strona'])
  5.  $_GET['strona'] = 0;
  6.  
  7. $max_na_stronie = 20;
  8.  
  9. $SQL = "SELECT * FROM poczta_wych where data_wyslania = '".$data_wyslania."' LIMIT ".$max_na_stronie." OFFSET ".($_GET['strona']*$max_na_stronie);
  10. $wynik = pg_query($SQL);
  11.  
  12. while($rekord = pg_fetch_array($wynik))
  13. {
  14.  
  15. ...
  16.  
  17. }
  18.  
  19.  
  20. ?>


wydaje mi sie ze ten sam efekt osiagniesz co pierwotnie chciales...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.