Zum Inhalt springen

Tabellen mit SQL und PHP


Empfohlene Beiträge

+--------------------------------------------------------------------------+

| Auswahl 1 | Auswahlfeld 1 | Auswahl 2 | Auswahlfeld 2 | Button |

+--------------------------------------------------------------------------+

|...............'Vergleich 1'................|..................'Vergleich 2'..............................|

+--------------------------------------------------------------------------+

|...............'Vergleich 3'................|..................'Vergleich 4'..............................|

+--------------------------------------------------------------------------+

:

So in etwa sieht meine Tabelle aus.

Jetzt soll beim Betätigen des Buttons die Tabelle anhand der Auswahl 1 und 2 mit Daten aus einer Datenbank gefüllt werden.

Jedes Mal eine andere Zelle.

Beim ersten mal Zeile1 Spalte1, beim zweiten mal Zeile1 Spalte2,

und so weiter.

Hat jemand 'ne Ahnung wie sowas geht ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also wenn ich dich jetzt rrchtig verstanden hab, brauchst du ja erstmal eine Tabelle mit 5 spalten.

Index

Vergleich1

Vergleich2

Vergleich3

Vergleich4

Index stellst du als Autoinkrement in deiner datenbank ein und dann machst du mit dem INSERT-SQL Befehl die Einfügeoperation in die Tabelle. Bei Insert fügt er immer unten an. Um Index brauchst du dich nicht zu kümmern, das wird automatisch um eins erhöht. Also rufst du bei jedem Buttonklick die MySQL_Query auf.

bsp: insert into tabelle_vergleich values ('NULL,Vergleich1,Vergleich2...')

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auswahl1 ist der Zeitraum und Auswahl2 sind Produkte.

Die Auswahlfelder sind Drop-Down-Felder, in denen die, in der DB enthaltenen, Zeiträume bzw die Produkte angegeben sind.

Jetzt will ich einen Vergleich starten, bei dem ich selber entscheiden kann, ob ich verschiedene Zeiträume für ein Produkt sehen will, oder ob ich einen Zeitraum für verschiedene Produkte sehen will.:confused:

Das Thema ist:

Sobald ich eine Auswahl getroffen habe und sie mir anzeigen lasse, wird das evtl. vorhandene vorherige Ergebnis logischerweise überschrieben. Dadurch sehe ich immer nur die Liste für einen Zeitraum und ein Produkt.

Das ist aber für einen Vergleich irgendwie schlecht:(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Net-srac,

Der Übersichtlichleit wegen sollen es nur 2 Spalten sein.

Die Anzahl der Zeilen ist unbekannt, je nach dem wieviele Dinge miteinander verglichen werden sollen. Dies können 5 sein, aber auch mehr oder weniger.

Wurden 2 Auswahlen nacheinander getroffen, wird bei der dritten Auswahl eine neue Zeile angelegt.

Zumindest soll es so funktionieren.:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, sorry. Hatte übersehen, das eins Auswahl und das andere Auswahlfeld ist.

Also, dann machst du deine Tabelle halt mit 2 Spalten. Den vorher beschriebenen Index kannst du weglassen. In diese Tabelle fügst du dann immer die Value des Auswahlfeldes ein. Mit Insert Into. Von der Logik her sollte das reichen um deine Daten da einzutragen. Natürlich mußt du dann noch ein Formular bauen, in dem du die Abfragen stellst, die du gerne Anschauen möchtest (Zeiträume etc.) Was brauchst du jetzt noch? Oder woran hängts? Code?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würd's so machen:

Um die alten Ergebnisse behalten zu können, brauchst du eine weitere Tabelle, in der jeweils folgendes gespeichert wird: ein eindeutiger Wert, der den grad aktiven Surfer markiert und die jeweiligen SQL-Abfragen, die schon abgefeuert wurden.

Beim ersten Aufruf des Formulars generierst du dann halt einen eindeutigen Wert, der den aktiven Surfer identifiziert (damit andere gleichzeitig aktive Surfer nicht die Abfragen der anderen aus der Tabelle bekommen) - am besten nimmst du einen Timestamp und verschlüsselst ihn etwas, damit der Wert auch eindeutig ist. Diesen übergibst du dann immer per Post oder Get, damit er bei jedem Neuaufruf zur Verfügung steht.

Wenn du eine Abfrage startest, baust du sie erst in SQL zusammen und schreibst sie dann zusammen mit der Benutzer-ID in die Tabelle.

So kannst du dann bei jeden erneuten Aufruf erstmal in der Tabelle nachschauen, ob schon Abfragen des Benutzers da sind und diese nacheinander abfrühstücken und in der HTML-Tabelle anzeigen lassen.

Danach wird dann die grad aktuelle Abfrage ausgeführt und natürlich auch in die MySQL-Tabelle geschrieben...

Um die Tabelle zwischendurch auch mal von alten Einträgen zu befreien, kannst du ja auch noch einen Timestamp mit reinschreiben, und bei jedem Formularaufruf die alten Einträge mit löschen lassen...

Hoffe, das war einigermaßen verständlich ;)... - sonst immer fragen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Pittiplatsch

Also wenn ich das richtig verstehhe, sollte ich nach Möglichkeit diese Vergleichsdaten in einer extra Tabelle in meiner DB abspeichern und von dort aus in ein Formular übertragen ?

Jo genau - oder besser gesagt die SQL-Statements, mit denen du die Vergleichsdaten bekommst! - oder du speicherst da nur die in den Auswahlen ausgewählten Werte ab und baust die Statements im Script wieder zusammen!... - du kannst natürlich auch als Alternative eine Session benutzen und da mit einem Array arbeiten oder so, aber ich denke die Datenbank-Lösung ist am Komfortabelsten...

Link zu diesem Kommentar
Auf anderen Seiten teilen

So, bin gerade dabei, via php diese Tabelle anzulegen.

Beim Aufruf der Vergleichsseite legt php die Tabelle an.

Bei jeder neuen Auswahl werden die Daten in der Tabelle gespeichert, und dynamisch in die Seite integriert.

Beim Verlassen der Seite wird die Tabelle gelöscht.

So hat man beim nächsten Seitenaufruf nicht schon irgendwelchen Mist in der Seite zu stehen.;)

Wenn ich mir das alles so recht überlege, ist das die beste idee überhaupt.

Ist vor allem nicht so umständlich, wie ich gedacht hab.:D

Vielen Dank für die promte und prima Hilfe. Ersparrt mir 'ne Menge Kopfschmerzen.:D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Pittiplatsch

So, bin gerade dabei, via php diese Tabelle anzulegen.

Beim Aufruf der Vergleichsseite legt php die Tabelle an.

Bei jeder neuen Auswahl werden die Daten in der Tabelle gespeichert, und dynamisch in die Seite integriert.

Beim Verlassen der Seite wird die Tabelle gelöscht.

So hat man beim nächsten Seitenaufruf nicht schon irgendwelchen Mist in der Seite zu stehen.;)

Wenn ich mir das alles so recht überlege, ist das die beste idee überhaupt.

Ist vor allem nicht so umständlich, wie ich gedacht hab.:D

Vielen Dank für die promte und prima Hilfe. Ersparrt mir 'ne Menge Kopfschmerzen.:D

Nix zu danken - das mit dem bei Seitenaufruf erstellen ist mir noch garnicht in den Kopf gekommen ... - solang du es dann auch sicherstellen kannst, daß die Tabelle bei Verlassen auch bestimmt gelöscht wird... - und dran denken, daß du einen eindeutigen zufälligen Tabellennamen wählst - denn sonst würden nachher mehrere User dieselbe Tabelle benutzen und sich beim Erstellen und Löschen in die Quere kommen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm, jetzt klappt das zwar mit erstellen und löschen der Tabelle. Jetzt kommt aber wieder das Prob mit den Daten.

Ich habe verschiedene Zeiträume und verschiedene Produkte.

Zu jedem Produkt existieren in diesem Zeitraum mehrere Einträge.

Wenn ich jetzt ein Produkt und einen Zeitraum auswähle, wird eine Tabelle mit allen seinen Datensätzen erstellt und ausgegeben. Das hat ja auch schon funktioniert.

Wenn ich jetzt aber ein weiteres Produkt und einen Zeitraum wähle, soll das Ergebnis dieser Auswahl ZUSÄTZLICH mit ausgegeben werden. Und genau das ist das eigentliche Problem. Das vorhandene Ergebnis wird überschrieben.

Und wenn ich alle gefilterten Daten in eine Tabelle speichere, und dann anzeigen will, gibt er sie mir nur als eine einzige Tabelle (logischerweise) wieder aus und nicht als mehrere (eine je Auswahl).

Hat jemand 'ne Ahnung, wie sowas funktionieren könnte ?????

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmm, also die einfachste Möglichkeit wäre es doch, in der MySQL-Tabelle abzufragen, ob schon "alte" Ergebnisse vorhanden sind, und diese dann per Schleife Zeile für Zeile auszulesen, die Ergebnisse jeweils in eine eigene HTML-Tabelle zu schreiben und dann nach der Schleife die neue Abfrage auszuführen, auch in eine HTML-Tabelle zu schreiben und natürlich in die MySQL-Tabelle zu schreiben...

Wenn du das allerdings in HTML zweispaltig machen willst, nimmst du halt ne äußere Tabelle und läßt in der Schleife eine Boolean-Variable mitlaufen, die z.B. wenn sie true ist den HTML-Code so baut, daß es die erste Spalte wird und die Variable auf false setzt, und wenn sie auf false ist, wird der HTML-Code für Spalte zwei gemacht und die Variable auf true gesetzt...

Oder war dein Problem jetzt ein anderes?

edit: Oh, hab grad gesehen, daß es wohl was anderes ist:

Du solltest in der temporären MySQL-Tabelle nicht die gesamten gefilterten Datensätze speichern, sondern nur die Filterbedingungen - also am Besten das SQL-Statement, mit dem du an die gefilterten Datensätze kommst! Das Ding führst du dann nämlich in der PHP-Datei einfach neu aus... - so hast du ale Ergebnisse säuberlich voneinander getrennt...

Kannst allerdings auch einfach doch die gefilterten Daten speichern und noch als Extra-Spalte jeweils eine Zahl mitgeben, die angibt, zu welcher Abfrage die Ergebnisse gehören... - das wäre aber etwas unpraktisch, wo du sowieso schon redundante Daten speicherst... - die Idee mit dem Speichern der Abfragen und nicht ihrer Ergebnisse ist da IMO sinnvoller und auch schneller in der Ausführung später...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...