phpbar.de logo

Mailinglisten-Archive

[php] Senden von Daten ohne Formular

[php] Senden von Daten ohne Formular

Steffen Kother steffen.kother at gmx.net
Don Jun 22 15:39:23 CEST 2006


Hallo Hannes,

On Thursday, June 22, 2006 3:07 PM,
Hannes H. wrote:
>
> Ich fürchte, ich hab die Problemstellung nicht richtig verstanden.
> Wenn du meinst, dass du das selbe Formular einemal an das eine und
> dann an das andere Script schicken möchtest, damit zwei verschiedene
> Dinge damit erledigt werden, würde ich beides im selben Script
> implementieren und im Formular zwei Submit-Buttons einbauen.

So ist es, sind sogar mehr als zwei Dinge...

> Mit $_POST bzw. $_GET sollte herauszufinden sein, welcher der beiden
> Submitbuttons verwendet wurde - wenn ich mich recht erinnere. Für den

Auch dem ist so... Allerdings will ich auf die GET-Methode verzichten, 
ebenso auf Javascript.

Hast schon richtig verstanden *g*. Mit primitivem HTML sieht es etwa so 
aus:

<html>
 <body>
  <form action="step.1.create.php" method="post">
   <input type="submit" name="action[back]"      value="Zur&uuml;ck" />
   <input type="submit" name="action[clear]"     value="Neueingabe" />
   <input type="submit" name="action[loadlocal]" value="Laden" />
   <input type="submit" name="action[savelocal]" value="Speichern" />
   <input type="submit" name="action[update]"    value="Aktualisieren" 
/>
   <input type="submit" name="action[print]"     value="Drucken" />
   <input type="submit" name="action[save]"      value="Sichern" />

   <select name="KUNNR"><option value="1">1</option></select>
   <input type="text" name="ap" value="{ap}" />
   <input type="radio" name="lsg[]" value="1" />
   <input type="radio" name="lsg[]" value="2" />
   <input type="radio" name="lsg[]" value="3" />
  </form>
 </body>
</html>

Das PHP-Skript dazu sieht so aus:

<?php
require_once('../../../config/config.main.inc.php');
require_once($GLOBALS['cfg']['common']);

$schritt1 =& single('common');
$schritt1 -> 
reqClassesPlus('Date:user:template:mysql:reklamation:step1', false);

if (empty($_POST['action'])) {
 $action = 'default';
} else {
 $action = key($_POST['action']);
}

$schritt1 -> reklamation -> doAction($schritt1, $action);
?>

In der Methode doAction() wird dann zwischen den einzelnen $action 
unterschieden... Bis auf den Speicher-Vorgang tut es auch super. Mir 
geht es mehr oder weniger darum, mit welchem "Design" ich wiederholtes 
Speichern besser verhindern kann. Ich weiß, timeout oder flag usw. War 
ja vor Kurzem auch erst wieder Thema hier.

Bloß, wenn ich mich für die Flagge in der Session entscheide, ist es bei 
meinem Formular IMHO besser die Daten in einem anderen Skript zu 
verarbeiten. Formularskript setzt die Flagge, Speicher-Skript überprüft 
auf die Flagge, speichert sofern vorhanden und löscht die Flagge. Der 
Benutzer kann/sollte danach nur noch auf die Einstiegsseite. Dazu müssen 
aber die Formulardaten in das Speicherskript.

MfG Steffen 


php::bar PHP Wiki   -   Listenarchive