flunz
Goto Top

2 Buttons in einem Formular

Hi alle zusammen!

Ich hoffe ich habe bei der suche nichts übersehen und poste hier das thema nicht doppelt.

hab eine html-seite mit einem eingabeformular die die eingegeben werte per submitbutton "insert" an eine "eintrag.php" übergibt, die das ganze dann in die datenbank feuert. soweit funtzts.
nun hab ich aber auch einen submitbutton "update" der in abhängigkeit von eingegebem vor-, nachnamen und pwd den ensprechenden datensatz suchen und ändern soll. der übergibt das ganze auch an die eintrag.php. in dieser hab ich also einen "insert"-teil, und einen "update"-teil. nun will ich mit einer if-abfrage prüfen ob vorher der insert oder der update button gedrückt wurde und den enstsprechenden teil ausführen. man ahnt es schon ->klappt nicht. kommentiere ich einen der beiden teile aus, funktioniert der andere problemlos, liegt also nicht an der eigentlichen funktion.
hab das zusammengeschmissen, da ich für neueintrag und update das gleiche formular verwenden wollte. in diesem muss ich ja nun angeben an welche datei der inhalt übergeben werden soll. oder kann ich auch dem button allein sagen wo er den krempel hinschicken soll? weil dann würden sich ja eine eintrag.php und eine update.php eignen.

danke für eure hilfe,

gruß Flunz

Content-Key: 39923

Url: https://administrator.de/contentid/39923

Printed on: April 23, 2024 at 18:04 o'clock

Member: Dani
Dani Sep 12, 2006 at 11:39:20 (UTC)
Goto Top
Hi,
setz einfach bei den Beiden Button einen anderen value Wert.
...value='test1' name='test1'...  
...value='test2' name='test2'...  

Abfragen kannst du das dann so:
if($_POST['test1'])  
{
  ...
  insert
}
else if($_POST[test2'])  
{
 update
}
.
..
.
.
Wer doch das INSERT und UPDATe in eine Seite. Somit kannst du dir das "ACTION" sparen!


Gruß
Dani
Member: filippg
filippg Sep 12, 2006 at 11:45:10 (UTC)
Goto Top
Hallo,

ich würde folgendes versuchen: du kannst den Submit-Buttons ja Namen geben. Bennen sie unterschiedlich. Beide senden dann an die gleiche Seite. Dort kannst du mit if(isset($_POST['Button1']) bzw. if(isset($_POST['Button2']) überprüfen, welcher gedrückt wurde, und dann entsprechend reagieren. Zumindest glaube ich, dass das so geht face-wink.
Wenn es nicht funktioniert würde mir noch einiges mit JavaScript einfallen, aber das ist tendentiell unsauberer (schon weil JS ja angeblich nicht auf jedem Rechner aktiviert ist).

Filipp
Member: Flunz
Flunz Sep 12, 2006 at 11:52:29 (UTC)
Goto Top
habe das im moment ungefähr folgendermaßen:

eingabeseite xy.htm:

<form method="post" action ="eintrag.php" class="form">

eingabefelder

<input type="submit" id="submit" name="abschicken" value="Speichern" />
<input type="submit" name="update" value="Vorhandene Daten ändern" />
</form>

eintrag.php:

if(isset($_POST['abschicken']) { d.h. hier auf den value, also "Speichern" beziehen?)

include xy.htm

datenbankverb

insert etc....... }

if(isset($_POST['update']) {
d.h. hier auf den value, also "Vorhandene Daten änern" beziehen?)

include xy.htm

datenbankverb

update etc....... }


flunz
Member: filippg
filippg Sep 12, 2006 at 11:56:19 (UTC)
Goto Top
Genau so meinte ich es
Und... funktioniert es?

Filipp
Member: Flunz
Flunz Sep 12, 2006 at 11:59:49 (UTC)
Goto Top
sorry wenn ich jetzt nochmal doof frage, aber:

bei dem if(isset($_POST['XY']) <- XY=name oder value des Buttons?

momentan ab ich da den name drin stehen, und da klappt es leider nicht, sollte es?

flunz
Member: filippg
filippg Sep 12, 2006 at 12:13:18 (UTC)
Goto Top
momentan ab ich da den name drin stehen, und
da klappt es leider nicht, sollte es?
Jaaaa.... zumindest hatte ich das so in Erinnerung. Was klappt denn nicht? Erfüllt er beide Conditions oder keine? Wenn keine: dann solltest du die Schreibweise nochmal überprüfen. Lass dir doch mal sämtliche gepostenten Variablen ausgeben (print_r($_POST)).
Auch eine Möglichkeit: beide gleich benennen und dann Abfrage wie
if(isset($_POST['submit']) AND $_POST['submit'] = 'Update')
und
if(isset($_POST['submit']) AND $_POST['submit'] = 'Eintragen')
wobei "Update" und "Eintragen" die values sein sollten. Aber eigentlich sind ja die Values hier nur für die Beschriftung der Buttons, während man sie über den Namen auseinanderhalten können sollte.

Filipp
Member: Flunz
Flunz Sep 12, 2006 at 12:24:39 (UTC)
Goto Top
joah dachte ich auch (value=beschriftung und name=indentifizierung)
wahrscheinlich liegt der fehler wirklich im kleinsten datail und nicht an einer prinzipiellen sache.
werde das heute abend nochmal durchrödeln, danke erst mal für deine hilfe, werde mich melden was rauskommt und evtl. nochmal um hilfe schreien ;)

lg, flunz
Member: Guenni
Guenni Sep 12, 2006 at 23:14:05 (UTC)
Goto Top
@Flunz

Hi,

joah dachte ich auch (value=beschriftung und name=indentifizierung)

Nicht ganz.

Du kannst alle Buttons z.B. cmd benennen, value aber unterschiedlich belegen, z.B.:

<input type="submit" name="cmd" value="Senden">  
<input type="submit" name="cmd" value="Aendern">  

Dann kannst du deine Aktionen wie folgt steuern....

if($cmd=="Senden"){  
 mache dies und das....
}

if($cmd=="Aendern"){  
 tue dieses und jenes....
}

...oder:

switch($cmd){
 case "Senden":mache dies und das....;break;  
 case "Aendern":tue dieses und jenes....;break;  
}

$_POST['submit'] bringt nix.

Test?

Erstelle eine Seite mit einer Form, schick das Form ab und lass
dir mit echo $_POST['submit']; das Ergebnis anzeigen face-smile.

Auch wenn es im Moment nach mehr Arbeit aussieht, verschiedene Aktionen
von Formularen wie Ändern, Einfügen etc., lasse ich immer auf versch. Seiten
ausführen, siehe --> .

So kannst du auch Änderungen leichter durchführen, als wenn du alles in ein kilometerlanges
Script packst, das von If's und Else's" nur so strotzt.

Gruß
Günni
Member: Flunz
Flunz Sep 13, 2006 at 05:32:58 (UTC)
Goto Top
Also erst einmal vielen Dank an alle, habe es nun zum Laufen gebracht. :D

habe mich letzten endes für die switch-case variante entschieden.


dankeschöööööööööööön!

lg, Flunz