Eine Datumssuchfunktion

Eine Datumssuchfunktion

am 31.07.2006 14:38:25 von anke

Hallo!

Ich hab da ein Problem was mir unmöglich scheint zu lösen.
Also:
Ich habe eine Tabelle(B) mit ganz vielen Daten. Auch häufig den
gleichen Daten.
Es gibt z.b 10 mal den 10.07.2006
In einer anderen Tabelle (C) wird dieses Datum einmal abgespeichert.

Auf einer Web - Oberfläche werden nun die Daten aus C angezeigt.
Diese Verlinken auf einer andere Seite, auf der die jeweiliegen Daten
dazu dann aus B angezeigt werden sollen.

Leider werden bei mir jetzt alle Daten angezeigt.
Wie kann ich denn klar machen, was der User angeklickt hat?

(Oracle 10g)

Also ich muss irgednwie hinkreigen, das der User den 10.06.2006
anklickt und ihm dann alle Daten daz uangezeigt werden.

Ich hoffe ihr habt eine Idee.

Vielen Dank

Anke

Re: Eine Datumssuchfunktion

am 31.07.2006 16:06:02 von Johannes Vogel

Hi Anke

anke wrote:
> Ich hab da ein Problem was mir unmöglich scheint zu lösen.
> Ich habe eine Tabelle(B) mit ganz vielen Daten. Auch häufig den
> gleichen Daten.
> Es gibt z.b 10 mal den 10.07.2006
> In einer anderen Tabelle (C) wird dieses Datum einmal abgespeichert.
> Auf einer Web - Oberfläche werden nun die Daten aus C angezeigt.
> Diese Verlinken auf einer andere Seite, auf der die jeweiliegen Daten
> dazu dann aus B angezeigt werden sollen.
> Leider werden bei mir jetzt alle Daten angezeigt.
> Wie kann ich denn klar machen, was der User angeklickt hat?
> (Oracle 10g)
> Also ich muss irgednwie hinkreigen, das der User den 10.06.2006
> anklickt und ihm dann alle Daten daz uangezeigt werden.
> Ich hoffe ihr habt eine Idee.

Tabelle C kannst du vergessen, weil da nur redundante Informationen drin
stehen. Ein `select distinct datum from B order by datum desc` reicht
bereits, um die beschriebene Tabelle C zu ersetzen.

Auf der zweiten Seite machst du dann ein `select feld1,feld2, ... from B
where datum = '2006-06-10'` aus, womit du alle Daten für den fraglichen
Zeitraum kriegst.

Die Anzeige dieser Daten sei wieder dir überlassen.

Ich bin sicher, du wolltest was anderes hören. Ich verstehe aber deine
eigentliche Frage nicht, weil du dir widersprichst bzw. nicht klar
spezifizierst: 'Leider werden bei mir jetzt alle Daten angezeigt' hört
sich doch toll an. Die Frage ist, ob du nun Detail- oder Übersichtsseite
meinst... usw. Vielleicht magst du's nochmals neu formulieren?

HTH, Johannes

Re: Eine Datumssuchfunktion

am 01.08.2006 08:38:41 von anke

Guten Morgen!

Vielen Dank schonmal!

> Tabelle C kannst du vergessen, weil da nur redundante Informationen drin
> stehen. Ein `select distinct datum from B order by datum desc` reicht
> bereits, um die beschriebene Tabelle C zu ersetzen.

Ok das mit dem distinct funktioniert. Ich frag mich warum ich da nich
selber drauf gekommen bin :)

> Auf der zweiten Seite machst du dann ein `select feld1,feld2, ... from B
> where datum =3D '2006-06-10'` aus, womit du alle Daten für den fraglich=
en
> Zeitraum kriegst.

So genau da kommt jetzt das Problem.
Die Daten können vom User neu angelegt werden.
ICh hatte mir das auch so gedacht wie du, nur wenn ein User dann ein
neues Datum anlegt, muss ich wieder in die Programmierung und das neue
von ihm erstellte DAtum da einsetzen.Verständlicherweise, möchte ich
das so nicht.

Hm ich versuchs nochmal.
Der User kann verschieden "Sachen" in einer Tabelle speichern. Bevor er
das tut, gibt er ein Datum ein wann diese "Sachen" gebraucht werden.
zB. 01.07.2006
Diese wird dann in der Tabelle in der Reihe der"Sachen" abgespeichert.
Somit sind nun in der Tabelle viele Reihen mit demgleichen
Gebrauchsdatum.

Bei der Web-Oberfläche stehen dann die einzelnen Daten die in der
Tabelle zu finden sind. z.B.
01..07.2006
01..08.2006
01..09.2006 usw.

Nun kann der User auf eines dieser Daten klicken und soll dann zu einer
Seite gelangen auf der die "Sachen" zu diesem Datum angezeigt werden.
Zurzeit werden dem User aber alle "Sachen" aus der Tabelle angezeigt.

Bedenken muss man das der User immer wieder neue Daten anlegen kann.

(Entschuldigt das Wort "Sachen" aber sonst wäre ich komplett mit Daten
und Daten durcheinander gekommen:))

Ich hoffe so war es besser?!

Vielen Dank=20
Anke

Re: Eine Datumssuchfunktion

am 01.08.2006 09:55:48 von Tobias Kutzler

Hallo Anke,

anke schrieb:
>> Auf der zweiten Seite machst du dann ein `select feld1,feld2, ... from B
>> where datum = '2006-06-10'` aus, womit du alle Daten für den fraglichen
>> Zeitraum kriegst.
>
> So genau da kommt jetzt das Problem.
> Die Daten können vom User neu angelegt werden.
> ICh hatte mir das auch so gedacht wie du, nur wenn ein User dann ein
> neues Datum anlegt, muss ich wieder in die Programmierung und das neue
> von ihm erstellte DAtum da einsetzen.Verständlicherweise, möchte ich
> das so nicht.
>
> Hm ich versuchs nochmal.
> Der User kann verschieden "Sachen" in einer Tabelle speichern. Bevor er
> das tut, gibt er ein Datum ein wann diese "Sachen" gebraucht werden.
> z.B. 01.07.2006
> Diese wird dann in der Tabelle in der Reihe der"Sachen" abgespeichert.
> Somit sind nun in der Tabelle viele Reihen mit demgleichen
> Gebrauchsdatum.
>
> Bei der Web-Oberfläche stehen dann die einzelnen Daten die in der
> Tabelle zu finden sind. z.B.
> 01..07.2006
> 01..08.2006
> 01..09.2006 usw.
>
> Nun kann der User auf eines dieser Daten klicken und soll dann zu einer
> Seite gelangen auf der die "Sachen" zu diesem Datum angezeigt werden.
> Zurzeit werden dem User aber alle "Sachen" aus der Tabelle angezeigt.

Dann versehe die Links mit Parameter, wenn Du durch die Liste der
verfügbaren Daten (die mit SELECT DISTINCT ausgelesen wurden) iterierst
und die Links erzeugst:



....

In der detail.php kannst Du dann mittels $_GET['datum'] dann auf den
übergebenen Wert zugreifen. Jetzt kannst Du ein SQL Statement erzeugen,
welches mit dem übergebenen Datum konstruiert wird.

$sql = "SELECT feld1,feld2,... from B WHERE datum = '".$_GET['datum']."'";

GANZ WICHTIG: Das Beispiel soll nur zeigen, wie Du den Wert in das SQL
Statement bekommst, welches die benötigten Daten anfordert. Da dies
jedoch ein gewisses Sicherheitsrisiko bedeutet, solltest Du den Inhalt
von $_GET['datum'] prüfen, bevor Du ihn verwendest.

z.b. so (Prüfung, ob übergebener Wert wirklich ein Datum ist):
if (($timestamp = strtotime($str)) === -1) {
$sql = "SELECT feld1,feld2,... from B WHERE datum = '".$timestamp."'";
}

Infos dazu findest Du hier:
16.18. Wie kann ich bösartigen Code in SQL-Abfragen unterbinden?
http://www.php-faq.de/q/q-sql-injection.html

12.1. Wie unterscheide ich böse Variablen von guten?
http://www.php-faq.de/q/q-security-variablen.html

12.11. Prüfe importierte Parameter. Traue niemandem
http://www.php-faq.de/q/q-sicherheit-parameter.html

Ciao,
Tobias

Re: Eine Datumssuchfunktion

am 01.08.2006 16:52:26 von anke

Hi Tobias!

Da hab ich nur ein Problem : ICh hab noch nicht mit PHP gearbeitet.
Das ganze besteht aus PL/SQL.
Hast du da vielleicht auch eine Idee?
Wäre sehr dankbar!

Anke

Re: Eine Datumssuchfunktion

am 01.08.2006 17:06:09 von Tobias Kutzler

anke schrieb:
> Hi Tobias!
>
> Da hab ich nur ein Problem : ICh hab noch nicht mit PHP gearbeitet.
> Das ganze besteht aus PL/SQL.
> Hast du da vielleicht auch eine Idee?

Um die Daten anzuzeigen, benötigst Du aber noch eine Skriptsprache wie
PHP oder ähnliches (z.b. Perl, Java, ASP.NET etc), um die HTML Ausgabe
zu erzeugen. Ich bin davon ausgegangen, dass Du das in PHP machen
möchtest, weil Du in dieser Newsgroup gefragt hattest.

Du schreibst, dass Du PL/SQL verwendest. Damit kannst Du meiner Meinung
nach nur die Datenbankabfragen (für Oracle) erstellen, aber keine
Oberflächen, durch die der Nutzer navigieren kann...

Wie hast Du denn die Ausgabe in HTML bisher erzeugt?

Ciao,
Tobias

Re: Eine Datumssuchfunktion

am 02.08.2006 01:39:33 von Johannes Vogel

Hi Anke

anke wrote:
^-- Voller Realnamen ist hier konfigurierbar.
> Da hab ich nur ein Problem : ICh hab noch nicht mit PHP gearbeitet.

Ähm. Wieso fragst du in de.comp.lang.php.datenbanken nach?

> Das ganze besteht aus PL/SQL.

Dann wäre bspw. de.comp.datenbanken.misc eine geeignete NG. Oder aber
Oracle-spezifische Foren und NG ggf in englisch.

> Hast du da vielleicht auch eine Idee?
> Wäre sehr dankbar!

Hier bist du falsch, sofern du kein PHP anwenden willst. Und ich
empfehl's dir nicht, falls dein Framework bereits in PL/SQL vorhanden ist.

HTH, Johannes