#1 19. April 2011 1 Formular, 2 action´s, 2 Button´s Hey leute, hoffe ich bekomme hier Hilfe von euch. Ich habe ein Formular mit 2 Buttons. Button A soll action a.php aufrufen und Button b, action b.php. Wie kann man das am besten lösen? Habe gestern den ganzen Tag schon google benutzt, werd da aber irgendwie nicht schlau raus.. Wahrscheinlich ist die lösung ziemlich einfach nur komme ich da irgendwie nicht drauf. Danke schonmal für die Hilfe.. lg + Multi-Zitat Zitieren
#2 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Entweder machst Du das nachträglich per header(): (Nur gucken, wenn Du es nicht selber herausfinden willst ) Spoiler Code: if(Formular.abgeschickt() == true) { if(Buttion1.gedrückt() == true) { header("Location: a.php"); } else { // s.o. } } else { // Formular mit 2 Buttons ausgeben udn auf selber Seite verlinken oder halt ext., dir überlassen } oooooooder Du löst das ganze per Javascript. Aber zerbrich dir nicht den Kopf noch JS mit einzubinden und erledige das lieber auf die einfachere Art. + Multi-Zitat Zitieren
#3 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Huch, das ging ja fix. Mit header habe ich es auch schon probiert, allerdings bekomme ich dort immer diese Fehlermeldung. Gebe ja über den header noch was aus, deswegen denk ich mal klappt das nicht. Habe es aber nicht so gemacht wie du. Wie sieht denn die abgeschickt() und/oder gedrueckt() function aus? + Multi-Zitat Zitieren
#4 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Du musst natürlich bei header() darauf achten, das Du voher nichts ausgibst. Schau immer auf php.net/funktionsname() wie Du die Funktion anzuwenden hast! + Multi-Zitat Zitieren
#5 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Jo danke, die Seite kenne ich und schaue da auch öffters mal nach. Das problem ist jetzt dabei, dass ich das jetzt so aufgebau habe, dass ich header einfach nicht benutzen kann und auch nicht wüsste wie ich es umstricken kann, damit ich es nutzen kann ^^ Spoiler PHP: <h2>Settings</h2> <br /> <br /> <form method="POST" action="../wp-content/plugins/feedwordpress/insert.php"> <table> <tr> <td>Feed-Type:</td> <td> <input type="radio" name="feedArt" value="RSS">RSS <input type="radio" name="feedArt" value="Atom">Atom </td> </tr> <tr> <td>Feed-URL:</td> <td><input type="text" name="feedURL"></td> </tr> <tr> <td>Feed-Interval:</td> <td><input type="text" name="intervall"> (in Stunden)</td> </tr> </table><br /> <input type="submit" name="add" value="add"> </form> <br /> <hr> <br /> <?php $sql = "SELECT * FROM alleFeeds;" ; $result = mysql_query ( $sql ) OR die( "QUERY_ERROR: " . mysql_error ()); $str = "<form method='POST'>" ; $str .= "<table>" ; $str .= "<tr><td></td>" . "<td><b>Name</b></td>" . "<td><b>URL</b></td>" . "<td><b>Type</b></td>" . "<td><b>Interval</b></td>" . "<td><b>Update</b></td></tr>" ; while( $zeile = mysql_fetch_array ( $result , MYSQL_ASSOC ) ){ //Die Zeit berechnen, wann das nächste Update erfolgt. $aktZeit = time () + 7200 ; $nextUpdate = $zeile [ nextUpdate ] + 7200 ; //Wenn die Zeit abgelaufen ist, soll er 0 min anzeigen. Sonst würde er //einfach weiter runterzählen. if( $nextUpdate > $aktZeit ){ $nextUpdate = date ( "H:i" , $nextUpdate - $aktZeit ); }else{ $nextUpdate = "00:00:00" ; } $interv = $zeile [ intervall ] / 60 / 60 ; $str .= "<tr><td><input type=\"checkbox\" name=\"checkbox[]\" value=\" $zeile [ id ] \"></td>" . "<td> $zeile [ feedName ] |</td>" . "<td> $zeile [ URL ] |</td>" . "<td> $zeile [ feedTyp ] |</td>" . "<td> $interv Stunden |</td>" . "<td>in $nextUpdate minuten</td></tr>" ; } $str .= "</table><br />" ; $str .= '<input type="submit" name="del" value="delete">' ; $str .= "</form>" ; echo $str ; if(isset( $_POST [ "add" ])){} if(isset( $_POST [ "del" ])){ header ( 'Location: delete.php' ); } ?> So sieht es bei mir aus, wie kann man das denn "header"-tauglich machen? Geht das überhaupt noch? lg + Multi-Zitat Zitieren
#6 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Nimm dir etwas Zeit zum Nachdenken, ich bin sicher, da kommst Du selber drauf Aber: Du kannst header() doch auch einfach an den Anfang setzen, bevor Du die Ausgabe tätigst und dort schon alles überprüfen.. Die Formulardaten bekommst Du erst nachdem Du durch das Formular weitergeleitet wurdest. + Multi-Zitat Zitieren
#7 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Ach mist, irgendwie bekomme ich es nicht hin.. Bekomme immer den selben Fehler.. Habe jetzt unter anderem PHP: if(isset( $_POST [ "del" ])){ header ( "Location: includes/delete.php" ); } an den Anfang gepackt, jedoch funktioniert es auch nicht. :thumbsdown:. Habt ihr vll. noch ideen? ._." + Multi-Zitat Zitieren
#8 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Code: <script type="text/javascript"> function Form_Submit() { var form =document.getElementById('myform'); if(document.pressed == "update") { form.action ="a.php"; }else { form.action ="b.php"; } } </script> <form method="post" id="myform" onsubmit="return Form_Submit()"> <input type="text" /> <input type="submit" value="Senden" /> <input type="submit" onclick="document.pressed=this.value" value="update" id="update" /> </form> so müsste es eig. gehen.. + Multi-Zitat Zitieren
#9 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Wenn du per Header() auf deine delete.php weiterleitest dann ruft der Browser direkt die delete.php auf ohne die POST-Daten mitzunehmen. Je nachdem was in der delete.php drin ist solltest du vielleicht eher include nutzen! Warum gibst du dem Zweiten Formular nicht direkt action="irgendwas/delete.php" ? + Multi-Zitat Zitieren
#10 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Hm stimmt, da hast du recht! Wenn ich include nutze, dann aktualisiert er die Seite ja nicht. Dann steht da von mir aus: "Daten eingetragen", aber es soll direkt aktualisiert werden. Deswegen der umweg mit dem action und der automatischen weiterleitung zurück auf die Seite. Das mit dem action habe ich eigendlich vor, jedoch habe ich für das untere Formular 2 Buttons und ich brauche demensprechend auch 2 actions. Ich würde es lieber mit php lösen, aber wenn es nur schwer machbar ist, versuch ich mal das, was Atkaz vorgeschlagen hat. + Multi-Zitat Zitieren
#11 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Es ist doch kein Problem festzustellen welcher Button gedrückt wurde! PHP: <!doctype html><html> <head> <meta charset="utf-8" /> <title>RRB:780013</title> </head> <body> <?PHP // Kann je nachdem was passieren soll am besten VOR <!doctype ... if( isset( $_POST [ 'submit1' ]) ) { echo '<div>Submit 1 gedrückt</div>' ; } if( isset( $_POST [ 'submit2' ]) ) { echo '<div>Submit 2 gedrückt</div>' ; } ?> <form action="" method="POST"> <button type="submit" name="submit1">Submit 1</button> <button type="submit" name="submit2">Submit 2</button> </form> </body> </html> + Multi-Zitat Zitieren
#12 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Zwecks deinem headers-Fehlermeldung: Du schmeißt irgendwo davor entweder schon den header oder tätigst ne' Ausgabe (echo oder sowas). Du kannst zu Beginn deines Scripts alle Ausgaben puffern lassen (ob_start()) und sie später dann ausgeben, wenn der Header gesendet wurde. -------- Wenn du zwei Buttons für unterschiedliche Aufgaben benötigst, warum verwendet du dann keine Ajax-Calls?. Mittels jQuery total easy. + Multi-Zitat Zitieren
#13 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s @Nanobyte: Das ist mir auch klar, dass es so funktioniert, allerdings habe ich so eben den effekt des aktualisierens nicht. @Yuri: Mit ob_start() und ob_end_flush() hab ich es auch schon versucht. Vergeblich. Naja der grund dafür, wieso ich nicht Ajax verwende ist, weil ich noch nie was mit gemacht habe ^^ mit verzweifelten Grüßen, Faultier + Multi-Zitat Zitieren
#14 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Dann wirfst du davor schon den header Dann probiers aus. Geh auf jquery.com, lads dir runter -> einbinden und probieren. In der jQuery-Dokumentation sind Code-Beispiele drin, die du fast 1:1 übernehmen kannst. + Multi-Zitat Zitieren
#15 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s in realen anwendungen löst man das so: script: PHP: if (isset( $_POST [ 'action-a' ])) { // verarbeite aktion a include 'a.php' ;} elseif (isset( $_POST [ 'action-b' ])) { // verarbeite aktion b include 'b.php' ;} else { // keine aktion } html: HTML: <form action="dispatch.php" method="post"> <!-- eingabefelder etc. --> <input type="submit" name="action-a" value="Aktion A" /> <input type="submit" name="action-b" value="Aktion B" /> </form> // seh grad Nanobyte war schneller was für nen effekt? du meinst F5? doch den effekt hast du. mit verlaub, auch ohne jquery total easy. Code: var form = document.getElementById("dein-forumlar"); form.onsubmit = function(event) { if (!event) event = window.event; var url = "a.php"; if (event.target && event.target.name && event.target.name == "action-b") url = "b.php"; form.action = url; window.setTimeout(function() { form.submit(); }, 1000); return false; }; + Multi-Zitat Zitieren
#16 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Hey Murdoc, so wie du mir das vorgeschlagen hast, hab ich das schon gemacht. Stell dir ne Seite vor, wo oben eine Tabelle angezeigt wird, mit irgendwelchen Einträge. Du wählst ein eintrag aus(checkbox) und klickst dann auf delete. Dann löscht er den besagten eintrag(aus der datenbank), aber man muss erst F5 drücken, damit man auch auf der Seite sieht, das der Eintrag auch gelöscht wurde. + Multi-Zitat Zitieren
#17 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Dann musst du das Löschen ausführen bevor du die Daten wieder aus der Datenbank abfragst oder du lässt Javascript die Seite nach dem Löschen neuladen + Multi-Zitat Zitieren
#18 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Dafür ist ja header da. Wenn du davor bereits etwas ausgeben möchtest, muss du halt mit Ausgabepuffern arbeiten. Also ob_start vor der ersten ausgabe und ob_end_flush nach der header-Manipulation. Kleineer Tipp: Das erste was bei dir ausgegeben wird, ist "<h2>Settings</h2>". Also muss noch davor der Ausgabepuffer gestartet werden. Nach jeder Datenbankmanipulation, ob INSERT, UPDATE oder DELETE sollte man einen header-redirect machen, damit der Benutzer nicht versehentlich mittels Zurück-Button des Browsers den Befehl erneut ausführt. + Multi-Zitat Zitieren
#19 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s @Murdoc: Aber du willst doch nicht deine Form-Action in deinem Javascript manipulieren und dazu noch in einem Event, dass "irgendwo" rumliegen kann^^ Die Methode würde ich nicht empfehlen. Dann lieber sauber über eine Datei, die den Button prüft und dann irgendwas tut. jQuery Code: $.ajax({ type: 'POST', url: 'file.php', data: $('form').serialize(), success: function() { // ... }, error: console.log }); + Multi-Zitat Zitieren
#20 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Code: $.ajax({ type: 'POST', url: 'file.php', data: $('form').serialize(), success: function() { $('.class:checked').hide('slow'); }, }); <input type="checkbox" class="ckbx" /> das ganze kann man natürlich noch mit "parent ect." erweitern. Wenn du willst, das die sachen ohne aktualisieren ausgebledet werden, solltest es so angehen..ist denke ich mal der einfachste weg. vg atkaz + Multi-Zitat Zitieren
#21 19. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s Wieso überhaupt irgendeine clientseitige JavaScript fummelei. Die Lösung seines Problems ist trivial und mit rund 3 einfachen Zeilen sauber & serverseitig lösbar. + Multi-Zitat Zitieren
#22 20. April 2011 AW: 1 Formular, 2 action´s, 2 Button´s ich seh das genauso. wenn was aus der DB gelöscht werden soll, dann wohl bevor die DB ausgelesen werden soll. sonst eben mit ajax, alle zu löschen reihen enfernen (z.b. display: none, oder aus dom entfernen) und diese dann per php aus der DB löschen. + Multi-Zitat Zitieren