"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[PHP] Formulare aktueller Seite auslesen ?

Hansmaulwurf 28.01.2009 - 11:52 1144 7
Posts

Hansmaulwurf

u wot m8?
Avatar
Registered: Apr 2005
Location: VBG
Posts: 5639
Hi.
Ich würde gerne irgendwie _bevor_ die nächste Site aufgerufen wird, ein Formular abspeichern.

Problem ist dieses ich hab eine seite zum Rechnung erstellen. Da möchte ich, dass sowohl Artikel_Zahl, als auch ne Checkbox ob Name oder Anonym übernommen werden.

Machen würde ich das gerne mit ner Session, aber wenn ich es am Anfang der nächsten Seite aufrufe, dann wird es jedes mal beim neuladen überschrieben. (Auf Seite 2 ist auch eine ArtikelSuche)

Also direkt auf der ersten Seite, bevor die zweite aufgerufen wird, in eine Session speichern, was aber irgendwie Probleme macht :(

Quellcode ist dieser hier:
Und auf der nächsten Site wird dann ein leeres Feld ausgegeben.. :confused:

Seite 1:
Code: PHP
<?php

// Session Starten
session_start();


echo	"<html>";
echo	"<head>";
echo	"<style type=\"text/css\">";
echo	"a:link { text-decoration:none; font-weight:bold; color:#e00000; }";
echo	"a:visited { text-decoration:none; font-weight:bold; color:#800000; }";
echo	"a:hover { text-decoration:none; font-weight:bold; background-color:#ff0; }";
echo	"a:active { text-decoration:none; font-weight:bold; background-color:#cff; }";
echo	"</style>";
echo	"</head>";
echo	"<body bgcolor=\"white\">";
echo	"<h3>Willkommen, im internen Service</h3>";
echo	"<a href=\"index.php\">Eine Rechnung erstellen</a><br>";
echo	"<a href=\"Artikel_Browser.php\">Artikel suchen</a><br>";

echo	"<form action=\"Kunden_Rechnung.php\" method=\"post\">";
echo	"<a href=\"Kunde.php\">Kunden suchen</a><br>  <br>";
echo	"Kundendetails : <br>";
echo	"<input type=\"checkbox\" name=\"Name\" > Auf Name";
echo	"<input type=\"checkbox\" name=\"Anonym\" > Anonym <br> <br>";
echo	"ArtikelZahl:<br>";
echo	"<input name=\"Artikel_Zahl\" type=\"text\" size=\"30\" maxlength=\"30\" value=\"$Artikel_Zahl\"><br>";
$_SESSION['Anzahl'] = $_POST[Artikel_Zahl];
echo	"<input type=\"submit\">";
echo	"</form>";
echo	"<br><br>";
echo	"</body></html>";



$_SESSION['vorname'] = 'Caroline';
$_SESSION['alter'] = 27;
$_SESSION['zeit'] = time();
?>

Seite2:
Code: PHP
<?php
echo "<input type=\"hidden\" name=\"PHPSESSID\" value\"...\">";


echo 'Willkommen auf Seite 2<br>';

echo $_SESSION['vorname']."<br>";
echo $_SESSION['alter']."<br>";
echo $_SESSION['Anzahl']."<br>";
echo date('d.m.Y H:i:s', $_SESSION['zeit'])."<br>";
Ist jetzt nur der relevante Teil von der zweiten. Sonst wird alles ausgegeben :(

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
@ schreibweise generell:
wenn fast jede Zeile keine php-Elemente beinhaltet, dann würrd ich gaaanz am Anfang den php-Tag zu machen und an den vereinzelten Fällen <? php-code ?> einfügen, Zeile 28 zb

übergib die Sachen nicht mit der session sondern über post oder get, besser ersteres (hast du aber eh schon eingestellt im form-tag)
die Vars bekommst auf der 2. seite mit $_POST['vorname']

Hansmaulwurf

u wot m8?
Avatar
Registered: Apr 2005
Location: VBG
Posts: 5639
Zitat von fatmike182
@ schreibweise generell:
wenn fast jede Zeile keine php-Elemente beinhaltet, dann würrd ich gaaanz am Anfang den php-Tag zu machen und an den vereinzelten Fällen <? php-code ?> einfügen, Zeile 28 zb

übergib die Sachen nicht mit der session sondern über post oder get, besser ersteres (hast du aber eh schon eingestellt im form-tag)
die Vars bekommst auf der 2. seite mit $_POST['vorname']
@Schreibweise:
Ja, ist mein erstes Dokument, und hab noch nicht viel Ahnung davon.

@2:
Genau das ist das Problem, ich brauchs bis zur Rechnung, und die ist 2 Seiten weiter, daher wärs praktisch dort die Session abzubrechen, nachdem die Daten eingetragen sind, da ich sie bis dahin brauch ;)

Oder sollte ich es mit hidden-Formularen machen, wäre das vom Aufbau sinnvoller ?

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
na, ich checks noch nicht...
wenn auf der 2. Seite NUR die Ausgabe ist, dann ist die Datei imho unnötig.
Ausgaben kannst du auch auf der 1. Seite machen:

ins form gib ein hidden-feld mit irgendeinem Namen dazu & dann frag am Anfang des Dokuments ab, ob dieses hidden-Feld übergeben wurde (also, ob das form abgesendet wurde):
Code: PHP
if (array_key_exists('hiddenfeldname',$_POST)) {
 echo ... 
 // inhalte ausgeben
}
else {
 <form>
 
 </form>
}

edit:
(im oberen Fall musst du dann die action im form auf action="<? $_SERVER['PHP_SELF']; ?>" setzen)

bzw wenn du die Daten so oder so für eine Rechnung auf der 3. Seite brauchst, wie kommst du auf diese 3. Seite
Bearbeitet von fatmike182 am 28.01.2009, 12:27

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4281
du mußt auch auf der 2. seite die session starten. sonst hast natürlich die session-vars nicht.

Hansmaulwurf

u wot m8?
Avatar
Registered: Apr 2005
Location: VBG
Posts: 5639
Zitat von kleinerChemiker
du mußt auch auf der 2. seite die session starten. sonst hast natürlich die session-vars nicht.
Wenn ich das mache, dann zeigt er mir
"Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent "

Und verlinkt wird auf Seite 3 in späterem Quellcode, hab ja geschrieben, dass das nur der elementare Code ist.

Werds nochmal mit hidden Probieren, ob das was bringt. Wenn ich es damit nicht lösen kann, frag ich nochmal hier ;)

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
wo hast du die session eingetragen?
gehört sowas nicht in den header oder so oder ist das egal?

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4281
nun ja, das session_start() ist in dem fall elementar. ohne die session zu starten, darfst du dir nicht erwarten auch die session variablen zu haben. session_start() sollte auch möglichst am anfang sein, auf alle fälle vor jeder ausgabe, dann kommt auch der fehler nicht.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz