Hallo
Da haben wir vielleicht aneinander vorbei geredet.
nein haben wir nicht
Ausgehend vom Eröffnungsthread dreht es sich um folgende
Zeilen.
nochmal gucken
<?php :if($_POST['speichern'])
{
speichern macht immer noch nix
}
if($_POST[‚leeren‘])
{
wenn also Button ‚leeren‘
dann werden die POST variablen gesetzt
$_POST[‚vorname‘]=„Hans“;
$_POST[‚name‘]=„Meier“;
$_POST[‚ort‘]=„Musterstadt“;
}
?>
…
hier dann die ausgabe von POST (POST werden auch durch das Absenden gesetzt, und inklusive dem Button der geklickt wurde)
Name:
Vorname:
Ort:
Wenn ich nun den Submitbutton für leeren drücke werden die
Felder gefüllt. Danach kann ich beliebig oft auf speichern
klicken. Die Felder blieben mit den Werten gefüllt.
ist klar oder ?
POST Daten kommen vom Formular beim Absenden ,
nur beim klick auf Leeren werden diese mit Musterdaten überschrieben.
Ich ändere die obigen Zeilen wie folgt ab.
<?php :if($_POST['speichern'])
{
passiert beim speichern immer noch nix (ausser das die daten die in POST sind immer noch da sind (oder beim ersten aufruf nicht da sind)
}
if($_POST[‚leeren‘])
{
ok hier sagst du wenn der Button ‚leeren‘ geklickt wurde
dann soll $a[…] mit Musterdaten belegt werden.
$a[‚vorname‘]=„Hans“;
$a[‚name‘]=„Meier“;
$a[‚ort‘]=„Musterstadt“;
}
?>
Hier gibts Du $a aus , wenn also nicht ‚leeren‘ gedrückt wurde , ist und bleibt
$a komplett leer , bzw existiert gar nicht (immer vorher definieren bitte)
Name:
Vorname:
Ort:
Unter diesem Code klicke ich auf leeren. Die Felder werden
wieder gefüllt. Sobald ich nur einmal auf speichern klicke,
werden Felder sofort geleert. Im Gegensatz dazu bleiben im
obigen Code die Felder gefüllt.
$_POST Daten werden durch das Formular erzeugt , beim klicken
auf die sende buttons werden also immer diese $_POST Daten gefüllt.
Du gibst aber nicht $_POST aus sondern $a
und $a ist leer , den bei jedem Aufruf (zustandslos) weiss der PHP process nix von $a
, von $_POST weiss PHP nur was weil es in den Felder in der Form so eingetragen wurde und so vom Browser verschickt wurde.
Du kannst nicht einfach $a nehmen und glauben da zwischen zwei aufrufen diese
Daten transportiert werden.
Das PHP läuft genau einmal ab , bis zur ausgabe , danach wird der speicher gelöscht .
es macht also überhaupt keinen sinn $a zu belegen bzw auszugeben
denn $a ist immer leer ausser wenn der ‚leeren‘ button gedrückt wurde .
willst du $_POST Informationen auf den Server speichern
muss du dich mti zustandslosigkeit auseinander setzen.
stell dir php also kommando zeile vor.
cli-php meinprogramm.php
das wird dann einmal ausgeführt , etwas wird ausgegeben und dann beendet.
will ich das programm nochmal ausführen starte ich es neu
cli-php meinprogramm.php
zwischen den beiden aufrufen ist keine verbindung , das erste mal ist genauso wie das zweite mal , am ende ist der speicher wieder frei .
will ich eine verbindung , bräuchte ich eine kennung die dem programm mitteilt das ich gerade ich bin und nciht wer anders .
cli-php meinprogramm.php?techpech
z.b. mit techpech als url parameter
ruf ich das immer wieder auf , kann das php anhand der parameter nahcgucken was
für techpech gespeichert wurde .
if ($_GET[‚techpech‘]) {
/* speichern */
}
…
so nur wie speicher ich ? , mit variablen geht nicht, die sind ja am ende des programms wieder leer .
also nehm ich eine textdatei nenne sie techpech.txt und schreib da alle $_POST Daten rein . wenn es schon eine techpech.txt gibt, dann lese ich am anfang des PHP die Daten ein und überschreibe (bzw hinzufühgen) sie gegebenenfalls mit neuen $_POST Daten.
So kannst man auch Eingaben etc über mehrere Aufrufe deselben programms sammeln.
Wie kann das sein?
Zustandslosigkeit solltest Du dir mal auf wikipedia angucken,
http Server programme laufen nicht ewig , sie sterben so schnell es geht , das macht auch sinn