Zur Navigation

Übergeben einer Tabelle als Argument

1 dobberph

Hallo ihr,

ich hab einen a href und gebe diesem das Ergebnis eines MSQL-Querys mit.
Hab sowas noch nie gemacht -> da kommt irgendwie was falsches an, oder ich rufe es nicht richtig ab.

$QueryResult = $db->query("select * from mitgliederliste ".$abteilung);
echo "<CENTER><p><a href='../../mitgliederlistedownload.php?tabelle=".$QueryResult."' target='_blank'>Mitgliederliste als .csv Datei</a></p></center>";

Emfangen kann ich die Variable doch einfach als $tabelle, oder?

Vielen Dank im Voraus,
DerTobi

14.02.2006 10:00

2 Jörg

Du kannst die Variable als $_GET['tabelle'] empfangen. Ich glaube aber nicht, dass man den Inhalt einer Tabelle oder eines Array als einzelne Variable im Query String einer URL übergeben kann.

14.02.2006 10:46

3 dobberph

Hm, nein, scheint nicht zu funktionieren, wahrscheinlich zu groß.

Ich hab folgendes Problem:

Ich programmiere eine Unterseite und kann damit den Header nicht mehr ändern (darüber läuft die Sessionverwaltung).

Ich will nun eine MySQL-Tabelle auslesen (den Zugriff darauf hab ich aber nur, wenn der Header steht, wegen der Rechteverwaltung).

Ich will die Datei für den Benutzer downloadbar machen als .csv Datei.

Meine Idee war mit a href ne neue Seite aufzumachen und die Daten als Variable
(MySQLResult) zu übergeben. Die Tabelle ist aber anscheinend zu gross.

Hat jemand ne Idee, wie ich das Problem lösen kann?

Mfg,
DerTobi

20.02.2006 10:01

4 Jörg

An der Größe liegt es nicht, über GET können nur Strings und Zahlen übergeben werden, also das was du auch bei eine Ausgabe mit echo oder print erhälst.

Könntest du bei der neuen Seite die Datenbankabfrage nicht einfach erneut stellen?

20.02.2006 11:36

5 dobberph

Das geht nicht, weil ich dort nur Datenbankzugriff habe, wenn ich angemeldet bin. Da die Sessionverwaltung über den header läuft, weiss ich nicht, wie das dann gehen soll. Die direkten Datenbankpasswörter hab ich gar nicht, ich kann nur auf die Functionen einer Datenbankklasse zugreifen...

DerTobi

20.02.2006 11:51

6 Jörg

Und auf der Folgeseite ist man nicht mehr angemeldet?

Über POST könntest du die Tabelle vielleicht noch weitereichen - das ginge dann nicht über eine Link, aber über ein Formular mit dem Attribut method="post". Ich glaube aber, dass auch hier die Abfrage-Tabelle nicht als solche übergeben werden kann, d.h. dass du den Tabelleninhalt von $QueryResult in einer Schleife ausgeben müsstest und dann als String in einer neuen Variable speichern

20.02.2006 13:36

7 dobberph

Naja, auf der Folgeseite kann ich mich auch anmelden, aber dann ist der Header irgendwie mit Sessionid belegt und ich kann die Datei nicht mehr in .csv umbenennen.

Aber stimmt, mit ner Schleife ist es viel leichter.

In der anderen Datei mach ich dann einfach ne Klasse, mit ner Funktion
"datensatzEintragen()" oder so, die ich von meiner Startdatei aus schleifenweise fülle.

Dann ruf ich "gibmichaus() oder so auf...?

Meinst du das so?

Mfg,
DerTobi

20.02.2006 13:46

8 Jörg

dann ist der Header irgendwie mit Sessionid belegt und ich kann die Datei nicht mehr in .csv umbenennen.

Das heißt, vorher hat die Datei die Endung .php, damit sie geparst wird? In dem Fall könntest du dir die Umbenennung vielleicht auch sparen, indem du über die .htaccess den Server anweist, auch .csv Dateien durch den PHP-Parser zu schicken. Entweder so:

AddType x-mapp-php4 .csv

oder, falls das nicht funktioniert, so:

AddType application/x-httpd-php .csv

Eine weitere Möglichkeit wäre es, den Dateinamen mit mod_rewrite zu erzeugen

20.02.2006 16:47

9 dobberph

Hm, hört sich irgendwie schwer an, ich versuchs erstmal mit Schleife, das versteh ich zumindest auf Anhieb ;D

Bin erstmal ne Woche im Urlaub, danke soweit...

Mfg,
DerTobi

21.02.2006 09:03

10 dobberph

Hab mich doch noch rangesetzt...

Ich hab jetzt in meiner Datei, in der ich den <a href> habe, eine Funktion, die per Schleife die Datensätze in einer Instanz der Klasse MitgliederListenAusgabe einträgt.
Diese Klasse befindet sich in der Datei, die zur Ausgabe da ist.

Jetzt fängt mein grundsätzliches Problem mit php <-> html an.

Wie schaff ich es, dass der User auf den href klickt, dadurch die MitgliederListenAusgabe.php in einem neuen Fenster angezeigt wird und dann auf der Instanz der Klasse MitgliederListenAusgabe die Funktion gibMichAus(); aufgerufen wird?

;D

Mfg,
DerTobi

21.02.2006 09:41