Ergebnis auf mehren Seiten in Verbindung mit OracleDB / Pagination / Seitenweise

chill0r55555

Mitglied
Hallo,

ich habe nach einer Lösung gesucht um viele Ergebnisse bei einer SQL Abfrage auf mehrere Seiten zu splitten. Für PHP in Verbindung zu einer mySQL Datenbank habe ich auch auf Anhieb was gefunden und es funktioniert auch. Leider ist jetzt folgendes. Ich muss das gleiche realisieren nur in verbindung mit einer Oracle Datenbank und da dort die Befehle ganz anders sind komm ich ein wenig durcheinander. Ich habe auch schon auf der Manual umhergesucht um rauszufinden welche mySQL Befehle den OCI Befehlen entsprechen. Bin aber bis auf ein paar nicht fündig geworden.

Unter
http://www.webmaster-resource.de/tricks/php/suchergebnis-auf-mehrere-seiten-verteilen.php
ist das Skript, dass es ermöglich die Ergebnisse für die mySQL zu splitten. Ich habe folgenden Code für die Oracle DB um mir alle Datensätze ion einer Tabelle auszugeben.
Ist das in dem Fall überhaupt machbar? PHP + mySQL ist ja noch okay aber mit dem OCI hab ich schon meine gewissen Probleme :rolleyes:
Hier mal mein Code:
PHP:
<?php



  $username = "123";
  $password = "321";
    $dbname   = "lfghzt5"; 
  $host     = "149.201.55.77";
  $database = "//".$host."/".$dbname;
  
  $DatabasePointer = ocilogon($username, $password, $database);

  if ($DatabasePointer == false) {
    echo "<BR>";
    echo "Connection failed";
    echo "Error Message: [" . OCIError($DatabasePointer) . "]<BR>";
  }
 

$statement= oci_parse($DatabasePointer, 'SELECT * FROM OZK_USER');
oci_execute($statement);
echo "<table border=1 cellspacing=4 cellpadding=4>";
 
 while ($row = oci_fetch_array ($statement, OCI_NUM)) 
 {
    echo "<tr>";
    for ($i=0; $i<count($row); $i++)
    {
       echo "<td>".$row[$i]."</td>";
    } 
    echo "</tr>";
 }
 
echo "</table>";
?>
Die Probleme sind hauptsächlich bei diesen Zeilen:
PHP:
#
$ResultPointer = mysql_query("SELECT * FROM Tabelle LIMIT $AktuelleSeite, $ErgebnisseProSeite", $DatabasePointer);
#
$Anzahl = mysql_num_rows(mysql_query("SELECT * FROM Tabelle", $DatabasePointer));
Ich weis leider nicht wie ich das umwandeln soll auf den Code von mir. Ich hoffe mir kann hierbei einer helfen. Wäre super dankbar.
MfG
 
Hallo, danke schonmal für den Link aber ich habe das nicht hinbekommen.

Er sagt mir
Code:
Warning: oci_execute() [function.oci-execute]: ORA-00904: invalid column name
(Falscher Spaltenname)

und

Code:
Warning: oci_fetch_array() [function.oci-fetch-array]: ORA-24374: define not done before fetch or execute and fetch
(Definition nicht erfolgt)

Ich frag mich nur warum falscher Spaltenname? Ich benutz doch den *. Och ich verzweifel noch an dem blöden Zeug. Auch Google bringt nichts brauchbares :(
 
Hallo,

schau mal hier:
SQL:
SQL> create table content(id int, data varchar(32));

Tabelle wurde erstellt.


SQL> insert into content (id, data) SELECT rownum, 'BUBU' || rownum FROM dual connect BY level <= 50;

50 Zeilen wurden erstellt.

SQL> select * from content;

        ID DATA
---------- --------------------------------
         1 BUBU1
         2 BUBU2
         3 BUBU3
         4 BUBU4
         5 BUBU5
         6 BUBU6
         7 BUBU7
         8 BUBU8
         9 BUBU9
        10 BUBU10
        11 BUBU11

        ID DATA
---------- --------------------------------
        12 BUBU12
        13 BUBU13
        14 BUBU14
        15 BUBU15
        16 BUBU16
        17 BUBU17
        18 BUBU18
        19 BUBU19
        20 BUBU20
        21 BUBU21
        22 BUBU22

        ID DATA
---------- --------------------------------
        23 BUBU23
        24 BUBU24
        25 BUBU25
        26 BUBU26
        27 BUBU27
        28 BUBU28
        29 BUBU29
        30 BUBU30
        31 BUBU31
        32 BUBU32
        33 BUBU33

        ID DATA
---------- --------------------------------
        34 BUBU34
        35 BUBU35
        36 BUBU36
        37 BUBU37
        38 BUBU38
        39 BUBU39
        40 BUBU40
        41 BUBU41
        42 BUBU42
        43 BUBU43
        44 BUBU44

        ID DATA
---------- --------------------------------
        45 BUBU45
        46 BUBU46
        47 BUBU47
        48 BUBU48
        49 BUBU49
        50 BUBU50

50 Zeilen ausgewõhlt.

Ergebnis Seitenweise ausgeben mit 5 Sätzen pro Seite zu 10 Seiten.

SQL:
exec :currentPage := 11;
exec :rowsPerPage := 5;
select 
tmp.id, 
tmp.data 
from
(select rownum rnum, id, data from content where rownum <= :rowsPerPage * :currentPage) tmp
where 
tmp.rnum > :rowsPerPage * (:currentPage-1);

Ergebnisse:
SQL:
SQL> exec :currentPage := 1;

PL/SQL-Prozedur erfolgreich abgeschlossen.

SQL> exec :rowsPerPage := 5;

PL/SQL-Prozedur erfolgreich abgeschlossen.

SQL> select
  2  tmp.id,
  3  tmp.data
  4  from
  5  (select rownum rnum, id, data from content where rownum <= :rowsPerPage * :
currentPage) tmp
  6  where
  7  tmp.rnum > :rowsPerPage * (:currentPage-1);

        ID DATA
---------- --------------------------------
         1 BUBU1
         2 BUBU2
         3 BUBU3
         4 BUBU4
         5 BUBU5



SQL> exec :currentPage := 5;

PL/SQL-Prozedur erfolgreich abgeschlossen.

SQL> exec :rowsPerPage := 5;

PL/SQL-Prozedur erfolgreich abgeschlossen.

SQL> select
  2  tmp.id,
  3  tmp.data
  4  from
  5  (select rownum rnum, id, data from content where rownum <= :rowsPerPage * :
currentPage) tmp
  6  where
  7  tmp.rnum > :rowsPerPage * (:currentPage-1);

        ID DATA
---------- --------------------------------
        21 BUBU21
        22 BUBU22
        23 BUBU23
        24 BUBU24
        25 BUBU25


SQL> exec :currentPage := 10;

PL/SQL-Prozedur erfolgreich abgeschlossen.

SQL> exec :rowsPerPage := 5;

PL/SQL-Prozedur erfolgreich abgeschlossen.

SQL> select
  2  tmp.id,
  3  tmp.data
  4  from
  5  (select rownum rnum, id, data from content where rownum <= :rowsPerPage * :
currentPage) tmp
  6  where
  7  tmp.rnum > :rowsPerPage * (:currentPage-1);

        ID DATA
---------- --------------------------------
        46 BUBU46
        47 BUBU47
        48 BUBU48
        49 BUBU49
        50 BUBU50

SQL> exec :currentPage := 11;

PL/SQL-Prozedur erfolgreich abgeschlossen.

SQL> exec :rowsPerPage := 5;

PL/SQL-Prozedur erfolgreich abgeschlossen.

SQL> select
  2  tmp.id,
  3  tmp.data
  4  from
  5  (select rownum rnum, id, data from content where rownum <= :rowsPerPage * :
currentPage) tmp
  6  where
  7  tmp.rnum > :rowsPerPage * (:currentPage-1);

Es wurden keine Zeilen ausgewõhlt

Gruß Tom
 
Zurück