ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
726
726
EMPFEHLEN
-
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
-
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-SucheGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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ß
ChrisGeändert von chrislms (14.07.06 um 09:50 Uhr)
-
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ß
ChrisGeändert von chrislms (14.07.06 um 09:51 Uhr)
-
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 von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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?
-
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 von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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?
-
Zitat von chrislms
Wenn du die ID hast, wo ist dann das Problem, diese weiterzugeben?
Zitat von chrislms
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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
-
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 von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
14.07.06 13:50 #12
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
-
Bestimmte Zeile aus der Datenbank in einem Textarea anzeigen lassen?
Von Code46 im Forum JavaAntworten: 1Letzter Beitrag: 18.04.10, 03:49 -
Oracle 10g: analytische funktionen zeile vorher/nacher ausgeben ohne LAG/LEAD
Von planb2000 im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 02.07.08, 12:41 -
Bestimmte Zeile ausgeben
Von UnoDosTres im Forum PHPAntworten: 4Letzter Beitrag: 24.03.06, 17:01 -
Bestimmte Zeile ausgeben
Von robertino im Forum PHPAntworten: 2Letzter Beitrag: 25.03.05, 01:28 -
Bestimmte LDAP Attribute in Einträgen ausgeben lassen
Von AlexD1979 im Forum JavaAntworten: 0Letzter Beitrag: 09.03.04, 12:30





Zitieren

Login





