phpbar.de logo

Mailinglisten-Archive

[php] Trick bei type=submit und type=image?

[php] Trick bei type=submit und type=image?

Ulf Wendel UW_(at)_NetUSE.DE
Tue, 25 Jan 2000 11:20:50 +0100


andreas kempf aka 'amalesh' wrote:

> bekannterweise kann ja statt eines submit-buttons (a) auch ein grafik
> (b) verwendet werden:
> 
> a. <input type=submit name=button value=ok>
> b. <input type=image name=button src=ok.gif>
> 
> Beim submitten von (a) habe ich auf der nächsten seite die variable
> $button, beim submitten von (b) habe ich hingegen $button_x und
> $button_y.
> 
> Nun meine frage: Gibt es einen trick, "irgendwie" auf der folgeseite
> aus $button_x die variable $button zu machen, ohne dass ich weiss, ob
> die variable nun $button_x oder $tolle_sache_x heisst?

Hallo Armin, 

leider gibt es keinen Konfigurationsparameter, der das Verhalten
von PHP verändert. PHP liefert stets bei einem grafischem
Submit-Button die X- und Y-Koordinaten, importiert im obigem
Beispiel die Variablen $button_x und $button_y. 

Du kannst Dir behelfen, indem Du einige Vereinbarungen triffst.
Ich definiere stets "jeder Submit-Button heißt submit_irgendwas".
Derartiges vorrausgesetzt, läßt sich $GLOBALS leicht parsen.

Die komfortable Variante sieht so aus:

$new = array();
reset($GLOBALS);
while (list($k, $v)=each($GLOBALS))
  if (eregi("^(submit_[a-z_]+)_x$", $k, $regs)) {
    $new[$regs[1]]["x"]=$v;
    $new[$regs[1]]["y"]=$GLOBALS[$regs[1]."_y"];
    #unset($GLOBALS[$regs[1]."_x"]);
    #unset($GLOBALS[$regs[1]."_y"]);
  }

if (is_array($new) && 0!=count($new)) {
  reset($new);
  while (list($k, $v)=each($new))
    $$k = $v;
  unset($new);
}


Verzichtet man auf die Erhaltung der X- und Y-Koordinaten und die
Löschung von $sumbit_x, $submit_y, wird der Code etwas kürzer,
weil direkt variable variables verwendet werden können:

reset($GLOBALS);
while (list($k, $v)=each($GLOBALS))
  if (eregi("^(submit_[a-z_]+)_x$", $k, $regs)) 
    $$regs[1]=$v;

Ulf

-- 
Ulf Wendel
NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany
Fon: +49 431 386435 00  --  Fax: +49 431 386435 99


php::bar PHP Wiki   -   Listenarchive