| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

30-10-2009, 15:52
|
|
zorro55
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 10
|
|
[gelöst] PHP Funktion und dann Seite aufrufen
Hallo Leute...
ich habe ein formular, in dem bestimmte eingaben gemacht werden..darunter gibt es einen button, mit dem die daten in einer datenbank gespeichert werden..soweit kein problem..allerdings möchte ich nach dem klick auf diesen button nicht nur die daten speichern, sondern zu einer anderen seite wechseln..
der button sieht so aus:
"<input type="submit" value="speichern" name="speichern" onClick="self.location.href='Datei.php'">"
wenn ich den button außerhalb des formulars platziere, dann werd ich zu der gewünschten seite geleitet, aber die daten werden dann nicht gesendet..ich hätte aber gern beides.
kann mir da jmd helfen??
gruß
|

30-10-2009, 15:56
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Entferne das onClick wieder. Füge in deinem PHP-Script nach der Verarbeitung der Formulardaten folgendes ein:
PHP-Code:
header('Location: http://example.com/Datei.php'); exit;
Damit das funktioniert darf das Script bis dahin keine Ausgabe gemacht haben!
|

30-10-2009, 16:06
|
|
zorro55
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 10
|
|
danke erstmal für die schnelle antwort! leider läuft es immernoch nicht  die daten wurden zwar gespeichert, aber dann kommt folgende fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at ...) in ... on line 64
|

30-10-2009, 16:15
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.309
|
|
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

02-11-2009, 09:17
|
|
zorro55
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 10
|
|
hallo Peter...
das ist leider nicht ganz das, was ich suche..wenn ich den befehl an den anfang des dokumentes setze, dann werde ich zu der entsprechenden seite geleitet..das funktioniert auch super..allerdings habe ich schon vorher im dokument ausgaben und möchte NUR nach dem klick auf einen bestimmten button weitergeleitet werden..gibt es da eine andere variante??
|

02-11-2009, 09:27
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
Hast du die Posts komplett gelesen?
Zitat:
Zitat von zorro55
Warning: Cannot modify header information - headers already sent by (output started at ...) in ... on line 64
|
Zitat:
Zitat von onemorenerd
Damit das funktioniert darf das Script bis dahin keine Ausgabe gemacht haben!
|
|

02-11-2009, 09:46
|
|
zorro55
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 10
|
|
ja das hab ich..wenn ich mir den quelltext vom browser anzeigen lasse, ist nichts zu sehen (für meine augen jedenfalls)..hier der quelltext:
<form action="<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at http://www.example.com/Dokument.php:15) in <b>http://www.example.com/Dokument.php</b> on line <b>59</b><br />
vlt findet von euch jmd nen fehler??
|

02-11-2009, 09:52
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.309
|
|
Und was ist das? Genau, eine Ausgabe.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

02-11-2009, 10:05
|
|
zorro55
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 10
|
|
eine ausgabe, die nicht so gewünscht ist..wie kann ich dies verhindern? hier ein ausschnitt meines scripts:
<form action="<?php
$1= $_POST["1"];
$2= $_POST["2"];
$3= $_POST["3"];
if ($1=="")
{
echo "";
}
else
{
$neu = "INSERT INTO table
(1, 2, 3)
VALUES
('$1', '$2', '$3')";
$senden = mysql_query($neu);
header('Location: http://www.example.com/Dokument.php');exit;
}
?>
</form>
das ist mein letzter versuch, danach geb ich mich als unbelehrbar geschlagen  danke
|

02-11-2009, 10:06
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Halte dich an das EVA-Prinzip.
Mach nur eine Ausgabe, wenn es erforderlich ist.
|

02-11-2009, 12:48
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.309
|
|
Zitat:
Zitat von zorro55
das ist mein letzter versuch, danach geb ich mich als unbelehrbar geschlagen  danke
|
Zuerst solltest du mal ein vernünftiges Debugging betreiben. denn z.B. dürfen Zahlen NICHT direkt nach dem $-Zeichen kommen. Und dann könntest du vom Prinzip her in etwa so herangehen:
PHP-Code:
<?php
$a1= $_POST["1"];
...
if ($a1=="")
{
echo "<form ...>....</form>";
}
else
{
$neu = "INSERT INTO table
(1, 2, 3)
VALUES
('$a1', '$a2', '$a3')";
$senden = mysql_query($neu);
header('Location: http://www.example.com/Dokument.php');
exit;
}
?>
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

02-11-2009, 14:30
|
|
zorro55
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 10
|
|
dass zahlen nicht nach dem $-zeichen verwendet werden, war mir bereits klar..habe das auch nur für die veranschaulichung angepasst..bei meinem script folgt dort eig text..sorry, wenn ich damit einige verwirrt habe..und genau nach diesem prinzip bin ich auch vorgegangen..leider ohne erfolg..ich denke, es liegt eher daran, dass das gesamte script mit html eingeleitet wird und der ausschnitt, den ich gepostet habe, folgt dann mitten in dem dokument..um den header-befehl ordentlich zum laufen zu bringen, darf ich nur ein reines php-script verwenden, richtig?
|

02-11-2009, 14:36
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Du musst dich an das EVA-Prinzip halten.
Nur dann eine HTML-Ausgabe machen, wenn sie wirklich erforderlich ist.
Trenne Ausgabe von der Programmlogik.
|

02-11-2009, 14:43
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
warum machst du es nicht nach der klassischen Variante?:
Formular ausgeben und das action-Attribut auf ein Skript setzen, welches die Daten entgegennimmt und verarbeitet. In diesem Skript prüfen, ob dein besonderer Button gedrückt wurde und wenn dem so ist, mit header("Location: ...") auf die gewünschte Seite umleiten ( bevor irgendetwas ausgegeben wurde!). Andernfalls wieder irgendetwas ausgeben.
Mit onclick kannst du nur JS-seitig auf eine andere Seite wechseln, dann werden aber keine Daten übertragen, weil PHP davon ja nichts mitbekommt. Du musst also das Formular ganz normal abschicken und die Prüfung PHP-seitig machen.
Gruß,
Amica
|

02-11-2009, 14:45
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von AmicaNoctis
warum machst du es nicht nach der klassischen Variante?:
|
Das EVA-Prinzip ist die "klassische Variante". Alles andere ist mehr oder weniger Pfusch.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|