tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
726
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    chrislms chrislms ist offline Rookie
    Registriert seit
    Jul 2006
    Beiträge
    6
    Hi,

    ich muss gerade in meiner Praxisphase eine Pflegetool für eine Oracle-Datenbank schreiben.
    Kenn mich nur mit MySQL Datenbanken aus und weiß, dass es für mein Problem bei MySQL das "LIMIT" gibt.

    Bin schon soweit gekommen, dass ich mir alle Zeilen einer Tabelle inklusive deren Spaltenüberschriften anzeigen lassen kann. Hinter jede Zeile habe ich ein Bild (Bleistift) gesetzt. Wenn man auf den Bleistift klickt, geht die nächste Seite auf. Auf dieser soll nur noch die ausgewählte Zeile angezeigt werden. D.h. wenn ich auf der ersten Seite den Bleistift hinter der 5. Zeile anklicke, soll mir auf der nächsten Seite genau diese 5. Zeile angezeigt werden, damit ich die bearbeiten kann.

    Ich hab schon stunden lang gegoogelt und auch einiges gefunden, aber nix klappt.

    Wär schön, wenn Ihr nen Vorschlag hättet. Ich komm einfach nimmer weiter.
    Falls Ihr zu meinem Plan nix findet, könnt Ihr auch gerne mal schreiben, ob Ihr das mit dem Bearbeiten vielleicht komplett anders machen würdet.

    Danke schon mal.

    Gruß
    Chrislms
     

  2. #2
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi,

    Wenn du den Datensatz schon hast, warum willst du ihn nochmal von der DB abfragen?
    Zudem kennst du Inhalt des Datensatzes inkl. PK, ID, .... Anhand daran kannst du den Datensatz doch eindeutig identifizieren in der Datenbank.

    Zum Thema Limit in Oralce:
    oracle limit - Google-Suche
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  3. #3
    chrislms chrislms ist offline Rookie
    Registriert seit
    Jul 2006
    Beiträge
    6
    Hi,

    danke für deine schnelle Antwort.

    Das Problem is, dass ich mir die Tabelle auf der ersten Seite wie folgt ausgeben lass:

    [ <?php
    while (OCIFetch($cursor2)) {
    echo '<tr>';
    //prints out row contents, col by col
    for ($i=1; $i<=OCINumCols($cursor2); $i++){
    echo '<td align="center" width="80">' . ociresult($cursor2, $i) . '</td>';
    }
    $counter++;
    echo '<td>
    <a href="dimColEdit.php?Zeile='.$counter.'&tableName='.$tableName.'">
    <img border="0" src="Images/bleistift_klein.jpg" alt="Bearbeiten">
    </a></td>';
    echo '<td>
    <a href="dimColDelete.php?Zeile='.$counter.'">
    <img border="0" src="Images/muelleimer.jpg" alt="Löschen">
    </a></td>';
    } ?>]

    Ich kann also nicht direkt auf jede Zeile zugreifen. Oder seh ich das falsch?
    Hab mir halt gedacht, dass ich in dem Bearbeiten-Link die gewählte Zeile und den Tabellennamen mitgebe, um dann auf der nächsten Seite wieder eine Abfrage nach Tabelle und Zeile zu machen...

    Hast du ne bessere Idee?

    Gruß
    Chris
    Geändert von chrislms (14.07.06 um 09:50 Uhr)
     

  4. #4
    chrislms chrislms ist offline Rookie
    Registriert seit
    Jul 2006
    Beiträge
    6
    Hi nochmal,

    Die Website, die du mir gegeben hast, hatte ich gestern auch schon mal. Nur bin ich da davon ausgegangen, dass wir hier Oracle Version 8.1.6 und höher haben und hab deswegen nur dir untere kürzere Lösung ausprobiert.

    Jetzt hab ichs nochmal mit der ersten langen Lösung getestet:

    [<sql>
    SELECT * FROM
    (SELECT ROWNUM rownum2, inline_view1.* FROM
    (SELECT * FROM ".$tableName.") inline_view1
    ) inline_view2
    WHERE rownum2 BETWEEN '".$Zeile."' AND '".$Zeile."'
    </sql> ]

    Und das funktioniert Dank dir auf jeden Fall dafür.

    Wie gesagt, ich mach das alles so umständlich, weil ich net direkt auf die Zeilen zugreifen kann.

    Wenn du ne Idee hast, wie ich das besser machen könnte, her damit

    Gruß
    Chris
    Geändert von chrislms (14.07.06 um 09:51 Uhr)
     

  5. #5
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Für genaueres müsste ich mich erstmal in Php einarbeiten.
    Aber wie bereits erwähnt: du übergibst deinem Script die Zeilennummer. Beim Anlegen des Links, kannst du ja auch die ID des Datensatzes übergeben.

    PS: Bitte editier deine Post und setz deine Code in Tags ([ code ] oder [ php ] (nur ohne Leerzeichen)). So lässt sich das sehr schlecht lesen. Vorallem bei dieser grellen Farbe.
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  6. #6
    chrislms chrislms ist offline Rookie
    Registriert seit
    Jul 2006
    Beiträge
    6
    Das Problem dabei wär glaub ich wieder, dass ich ganz am Anfang aus allen Tabellen der Datenbank eine auswähle und nicht alle Tabellen haben ein ID-Feld...
    Deswegen kann ich die ID nicht allgemein weiter geben.

    Oder gibts in Oracle-Datenbanken sowas wie TABLE_ROW_ID....oder so?
     

  7. #7
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Du musst doch irgendetwas haben, womit du einen Datensatz eindeutig identifizieren kannst. Bei deiner Bearbeitenfunktion rufst du doch sicherlich irgendwann UPDATE TABLE auf. wie identifizierst du denn da den Datensatz?
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  8. #8
    chrislms chrislms ist offline Rookie
    Registriert seit
    Jul 2006
    Beiträge
    6
    Gute Frage, soweit bin ich noch net *g*
    Kann es sein, dass ich diese Probleme net hätte, wenn ich vorher alles konzeptioniert und gut geplant hätte?

    Ich glaub, ich muss mir da mal nen neuen Weg überlegen.
    Klar kann man jede der Tabellen (die schon vor meiner Arbeit vorhanden waren und wenn möglich nicht verändert werden sollen) über irgendwelche ID's eindeutig identifizieren. In der einen Tabelle heißt das Feld "Hotel_ID", in der nächsten dann "Veranstalter_ID" usw....

    Auf der aller ersten Seite lass ich alle Tabellen der Datenbank in einer DropDown-Liste anzeigen, die dynamisch gefüllt wird. Dahinter hab ich einen "Anzeige"-Button, der auf die nächste Seite verlinkt. Da geb ich den Tabellennamen mit.

    Auf der nächsten Seite lass ich mir dann zunächst alle Spalten-Attribute der Tabelle anzeigen und darunter dann alle Einträge mit jeweils einem "Bearbeiten"- und einem "Löschen"-Button hintendran.

    Soweit bin ich...Denkst du, dass das bis dahin schon ne schlechtere Lösung is?
     

  9. #9
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Zitat Zitat von chrislms
    Gute Frage, soweit bin ich noch net *g*
    Kann es sein, dass ich diese Probleme net hätte, wenn ich vorher alles konzeptioniert und gut geplant hätte?

    Kurz und knappe Antwort: Ja
    Zitat Zitat von chrislms
    Klar kann man jede der Tabellen (die schon vor meiner Arbeit vorhanden waren und wenn möglich nicht verändert werden sollen) über irgendwelche ID's eindeutig identifizieren. In der einen Tabelle heißt das Feld "Hotel_ID", in der nächsten dann "Veranstalter_ID" usw....
    Wenn du die ID hast, wo ist dann das Problem, diese weiterzugeben?
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  10. #10
    chrislms chrislms ist offline Rookie
    Registriert seit
    Jul 2006
    Beiträge
    6
    Ich versuchs dir zu erklären

    Ich lass die vom User ausgewählte Tabelle wie folgt anzeigen:

    SQL-Statement
    [<sql>$query2 = "SELECT * FROM ".$tableName;</sql>]

    PHP
    [<?php
    while (OCIFetch($cursor2)) {
    echo '<tr>';
    //prints out row contents, col by col
    for ($i=1; $i<=OCINumCols($cursor2); $i++){
    echo '<td align="center" width="80">'.ociresult($cursor2, $i).'
    <input type="hidden" name="" value"'.ociresult($cursor2, $i).'"></td>';
    }
    $counter++;
    echo '<td>
    <a href="dimColEdit.php?Zeile='.$counter.'&tableName='.$tableName.'">
    <img border="0" src="Images/bleistift_klein.jpg" alt="Bearbeiten">
    </a></td>';
    echo '<td>
    <a href="dimColDelete.php?Zeile='.$counter.'">
    <img border="0" src="Images/muelleimer.jpg" alt="Löschen">
    </a></td>';
    }
    ?>]


    Da ich ja vorher nicht weiß, welche Tabelle der User auswählt, kann ich auch nicht ein bestimmtes ID-Feld (bei Tabelle 1 --> Hotel_ID, bei Tabelle 2 --> Flughafen_ID.......) abfragen. Verstehst du mein Problem?
    Da ich keinesfalls ein PHP-Profi bin, könnt es natürlich sein, dass es doch irgendwie geht. Aber das weiß ich leider net. Vielleicht hast du oder jemand anderes hier ja ne Ahnung. Am einfachsten wärs natürlich, wenn jede Tabelle ein Feld namens "ID" hätte, aber das geht leider net
     

  11. #11
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Wenn die Tabellen PrimaryKeys auf die ID-Spalten haben, könntest du den PrimaryKey für die entsprechende Tabelle abfragen (siehe Oracle-Hilfe) und wüsstest wie die Spalte heißt.

    PS: die Tags nur mit eckigen Klammern ([]) nicht mit spitzen Klammern (<>), dann klappt auch die Formatierung.

    also:
    [ code ], [ /code ]
    [ php ], [ /php ]
    [ sql ], [ /sql ]
    Du musst natürlich die Leerzeichen vor und nach den eckigen Klammern weg lassen
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  12. #12
    Avatar von Exceptionfault
    Exceptionfault Exceptionfault ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Neckarsulm
    Beiträge
    348
    Ist vielleicht ein bissche OffTopic, aber wenn du eine PHP Applikation suchst, mit der du einfach Datensätze in Oracle anzeigen und bearbeiten kannst, warum nimmst du dann nicht einfach sowas?

    Achievo ATK > Features

    Ist echt super einfach einzurichten und leicht anzupassen. Vielleicht nicht so performant, als würde man selbst die Statements schreiben, aber in der Entwicklung tausend mal schneller als dein Ansatz
     
    liebe Grüße
    Exceptionfault (http://exceptionfault.de)

    Never say: "Always"! Always say: "Never say never"! - Tom Kyte @ Ask Tom Live in Berlin 2008

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 18.04.10, 03:49
  2. Oracle 10g: analytische funktionen zeile vorher/nacher ausgeben ohne LAG/LEAD
    Von planb2000 im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 02.07.08, 12:41
  3. Bestimmte Zeile ausgeben
    Von UnoDosTres im Forum PHP
    Antworten: 4
    Letzter Beitrag: 24.03.06, 17:01
  4. Bestimmte Zeile ausgeben
    Von robertino im Forum PHP
    Antworten: 2
    Letzter Beitrag: 25.03.05, 01:28
  5. Antworten: 0
    Letzter Beitrag: 09.03.04, 12:30