Variable-Übergabe
Daniel
- php
Also das ist vielleicht ne dumme Frage, ach erstmal morgen euch allen da draußen. Ich will die Möglichkeit bieten das auf meiner Seite Dinge gedruckt werden, das stellt ja im Großen und Ganzen kein Problem dar. Nun mache ich aber vorher Datenabfragen, und versende diese über POST. Jetzt soll der User drucken können, aber nicht mit der ganzen Navigation. Er soll einen Knopf drücken und dann soll sich eine neue Seite öffnen, ohne die ganze Navigation.
Mein Problem ist, dass ich nicht weiß, wie ich das machen soll. Wie übergebe ich der nächsten Seite alle Parameter, denn ich weiß ja nicht, welche Parameter das sein können. Ich habe ja zig verschiedene Seiten mit verschiedenen Parametern, aber wie sende ich die jetzt alle weiter?
hi
ich hatte ein ähnliches Problem und habe es so gelöst, ob es effizient ist, kann ich nicht sagen...
man schreibe sämtliche Daten, die da kommen, ob per post oder get in ein array, welches man in einer session speichert und auf der druckenseite wieder komplett ausliesst
session_register["alle_daten"];
einlesen in array $alle_daten ...
foreach ($HTTP_GET_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
foreach ($HTTP_POST_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
// beliebige andere Variablen anhängbar
auslesen und als Variable zugänglich machen...
foreach ($alle_daten as $key => $value) {
${$key} = $value;
}
//dies liesst alle Varaibeln aus und weisst sie Ihrem NAmen zu, d.h.
//auf der seite, wo du es ausliesst, stehen alle Variablen der Form
$var1 = 10 oder so zur Verfügung, als wären sie direkt übertragen worden
PROBLEM: wenn du doppelbennenungen hast oder irgendwelche Bestehenden Variablen überschrieben werden könnten, denke aber, das bei Deinem konkreten Problem, das kaum eintritt
hope it helps
romy
session_register["alle_daten"];
einlesen in array $alle_daten ...
foreach ($HTTP_GET_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
foreach ($HTTP_POST_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
// beliebige andere Variablen anhängbar
auslesen und als Variable zugänglich machen...
foreach ($alle_daten as $key => $value) {
${$key} = $value;
}
//dies liesst alle Varaibeln aus und weisst sie Ihrem NAmen zu, d.h.
//auf der seite, wo du es ausliesst, stehen alle Variablen der Form
$var1 = 10 oder so zur Verfügung, als wären sie direkt übertragen worden
Kannst du das vielleicht etwas genauer erklären? Ich kenn mich mit sessions nicht so wirklich gut aus, und verstehe dehalb auch nicht, was damit gemeint ist.
PROBLEM: wenn du doppelbennenungen hast oder irgendwelche Bestehenden Variablen überschrieben werden könnten, denke aber, das bei Deinem konkreten Problem, das kaum eintritt
Also das wird denke ich nicht passieren.
Danke Daniel
Hallo,
Infos gibts hier: http://www.dclp-faq.de/
Odium
Das wollte ich eigentlich nicht schreiben, sondern !!! DANKE !!!
Ich werde mir mal das ganze durchlesen.
session_register["alle_daten"];
in deiner index.php brauchst du den aufruf session_start(); am Anfang deines Scriptes, welcher eine session initiert
darunter steht: session_register["alle_daten"];
das bedeutet es die Daten werden in einem serverseitigem Cookie gespeichert
ich mach das in einem array, damit es übersichtlicher bleibt (meine Meinung)
dann liesst Du alle übergebenen Daten in das array ein, in neueren Php-Versionen kann man auf eine session direkt mit dem variablennamen zugreifen
damit sind die Daten abgespeichert und du musst einfach nur auf den seiten wo du die daten brauchst, wieder ein session_register["alle_daten"]; an den Anfang bringen und kannst auf $alle_daten zugreifen
// einlesen in array $alle_daten ...
foreach ($HTTP_GET_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
foreach ($HTTP_POST_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
// beliebige andere Variablen anhängbar
<tip> wenn du echo echo $alle_daten schreiben wür
dest, dteht dort natürlich nur array drin, deswegen musst du es in unten beschriebener Form auslesen </tip>
//auslesen und als Variable zugänglich machen...
foreach ($alle_daten as $key => $value) {
${$key} = $value;
}
//dies liesst alle Varaibeln aus und weisst sie Ihrem NAmen zu, d.h.
//auf der seite, wo du es ausliesst, stehen alle Variablen der Form
$var1 = 10 oder so zur Verfügung, als wären sie direkt übertragen worden
Kannst du das vielleicht etwas genauer erklären? Ich kenn mich mit sessions nicht so wirklich gut aus, und verstehe dehalb auch nicht, was damit gemeint ist.
ich hoffe es war genauer, erklären ist nicht meine Stärke
Danke Daniel
romy
Danke...
ich habs zwar immer noch nicht ganz verstanden, aber ich werde es einfach mal heut Abend ausprobieren.
Könnte ich nicht die Variable auch in eine Datenbank schreiben? $HTTP_GET_VARS könnte ich ja auch dafür gebrauchen.
Danke...
ich habs zwar immer noch nicht ganz verstanden, aber ich werde es einfach mal heut Abend ausprobieren.
Könnte ich nicht die Variable auch in eine Datenbank schreiben?
natürlich, allerdings hast du dann ncoh den ganzen Aufwand mit der datenbankverbindung, was das ganze nicht schneller macht
$HTTP_GET_VARS könnte ich ja auch dafür gebrauchen.
wofür???
hier weiss ich nicht ganz was du meinst, aber ich denke schon das Du das array auch per querystring übergeben kannst, wenn dir das leichter erscheint
ich denke es spricht eigentlich alles für sessions, da sie recht unkompliziert zu handhaben sind, wenn du allerdings angst davor hast, das cookies deaktiviert sein könnten entscheide dich für eine der anderen Methoden
probiers einfach aus, und frage nochmals !!!
du wirst die beste Methode finden
gruss
romy
Tach Romy,
also es hat funktioniert... ich musste es zwar etwas abändern, aber es hat funktioniert. Mein Problem ist jetzt allerdings, dass er die Werte nur ausgibt. Also hier mal nen Auszug aus dem Quelltext.
<?php
session_start();
session_register($alle_daten);
foreach ($HTTP_GET_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
foreach ($HTTP_POST_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
?>
.... die seite....
variable:
<?php
foreach ($alle_daten as $key => $value) {
echo ${$key} = $value . "<br>";
} ?>
Tja Problem ist jetzt nur, dass ich nicht weiß, welche ursprüngliche Varibable der Wert hatte. Also ich mein, wenn jetzt die Variable $site den Wert 1 hat, dann gib der nur den Variablewert aus, aber nicht $site = 1 o.ä.
Bis dann, und danke für die Info...
Hmm.... wer lesen und etwas denken kann, ist klar im Vorteil.
<?php
foreach ($alle_daten as $key => $value) {
echo "$" . $key . "=" . $value . "<br>";
} ?>
Damit könnte ich es ausgeben...
Aber ich habe beispielsweise auf einer Seite ein etwas eingegeben. Auf der nächsten Seite wird diese Variable nicht mehr gebraucht. Aber die steht immer noch darin. Warum? Kann ich die irgendwie löschen?
Irgendwie session_lösche_mir_bitte_das_Array($alle_daten);
Bis denne
Daniel
Guten mOrgen
also ich versuchs noch mal ein bisschen zu sortieren...
1.session_unregister kannst du übrigens auch nehmen, aber das ist glaube ich egal
2.foreach ($alle_daten as $key => $value) {
${$key} = $value;
}
echo ${$key}.": ".$value; tuts schon, (es ginge glaub ich auch $$key)
das dürfte dir ausgeben was du brauchst
3. prüfe vor jedem foreach ob die Vars gesetzt sind
also:
if($HTTP_POST_VARS) {
foreach blabla
}
erstmal alles geklärt???
übrigens ist es völlig logisch, das einem wenn man eine Frage formuliert manchmal auch die Antwort einfällt, deswegen ist es immer gut, jemanden sein Problem zu erklären, da man dannn meist selbst draufkommt
viel spass
ciao romy
Mahlzeit,
jo ist doch relativ klar.
Kannst du mir vielleicht noch bei etwas anderem helfen?
Und zwar hätte ich gerne die phpSessID nicht über die Adresszeile verschickt, sondern über POST. Gibt es da vielleicht ein Möglichkeit?
Mahlzeit,
gute späten Nachmittag :)
jo ist doch relativ klar.
Kannst du mir vielleicht noch bei etwas anderem helfen?
Und zwar hätte ich gerne die phpSessID nicht über die Adresszeile verschickt, sondern über POST. Gibt es da vielleicht ein Möglichkeit?
well, die id wird eigentlich nur mitgeschickt, wenn cookies deaktiviert sind, sonst sowieso nicht und dagegen kann man nichts machen soweit ich weiss, habe erst letztens daran gebastelt und bin nur zu dem schluss gekommen, das man daran nichts ändern kann
falls du allerdings cookies eingeschaltet hast und es trotzdem mitgeschcikt wird ist das komisch irgendwie, mhm
naja sag erstmal bescheid
ciao romy
Tja schönen Feierabend,
well, die id wird eigentlich nur mitgeschickt, wenn cookies deaktiviert sind, sonst sowieso nicht und dagegen kann man nichts machen soweit ich weiss, habe erst letztens daran gebastelt und bin nur zu dem schluss gekommen, das man daran nichts ändern kann
falls du allerdings cookies eingeschaltet hast und es trotzdem mitgeschcikt wird ist das komisch irgendwie, mhm
naja sag erstmal bescheid
Was soll ich bescheid sagen?
Hmm. Ich hab das automatische rewrite von einigen Tag ausgeschaltet bekommen, aber das hilft auch nciht wirklich weiter.
Bis denne und ein schönes Wochenende.
Daniel
Also ich hab mir jetzt mal etwas anderes überlegt, und zwar das ganze in eine Datenbank zu schreiben, denn ich hab gelesen, dass man nur eine begrenzte Anzahl von Bytes in der Session weitergeben kann.
Wie lässte sich das am Besten realisieren.
Kann ich direkt ein Array in eine Datenbank schreiben. Da ich ja auch nicht weiß, wie viele Felder ich habe, wird das ganze sehr schwer, da ich nicht die Spalten in der Datenbank definieren kann.
Bis dann
Daniel
<?php
session_start();
include("conn.php");
if ($print != 1)
{
session_unset($alle_daten);
}
else {
foreach ($alle_daten as $key => $value) {
${$key} = $value;
}
}
session_register($alle_daten);
foreach ($HTTP_GET_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
foreach ($HTTP_POST_VARS as $key => $value) {
$alle_daten[$key] = $value;
}
?>
Tja, alles kein Problem, denkt man. Session_unset($alle_daten) ware es übrigens, was ich suchte, aber ich habe doch noch ein Problem, und zwar, wenn ich die Seite, das erste mal öffne. Dann steht nämlich nirgendwo etwas drin. Nicht in $HTTP_GET_VARS und $HTTP_POST_VARS. Wenn ich das ganze jetzt auslese, dann spuckt der nen Fehler raus.
Bis dann und danke.
Und sorry, dass ich hier ständig poste und dann irgendwie doch ne Lösung habe.