PHP Submit-POST problem

Gast #4612088
Lesenswert?

Hi!

Ich denke Ihr könnt mir hier sicher einen Tip geben.
Habe ein von jemand anderes programmiertes Konstrukt gerade vor mir.
Selber komme ich nicht wirklich aus der PHP/HTML Eckt, warum auch diese 
Frage nun aufkam.

Es wird von einer PHP-Datei via POST eine andere PHP-Datei aufgerufen.
In der ersteren wird noch einiges mit Datenbankanbindung gemacht.
Dies möchte ich auch so laufen lassen.
In dieser Datei gibt es einen "Submit"-Button, der dann die andere Datei 
triggert.

<form id=\"form1\" name=\"form1\" method=\"post\" 
action=\"w_eintrag2.php\">
...
<input type=\"submit\" name=\"Submit\" value=\"Anforderung aufgeben\" />

Jetzt möchte ich gerne, dass man eben nicht diesen Button drücken muss, 
sondern das automatisch gemacht wird.

Kann mir mal bitte jemand sagen, was ich hier hin schreiben muss? :)
Habe schon einiges probiert, aber ohne Erfolg.

Danke Euch erst einmal,
Marcel
Gast #4612120
Lesenswert?

Hmm, das ist blöd.
Kann ich denn die w_eintrag2.php am Ende des ersten Files irgendwie 
includen damit es da weiter läuft?
Aber dann stimmt ja auch die Übergabe mit den Daten nicht...
Wobei ich auch gar nicht sehe welche Daten da übergeben werden sollen :)

Ou mann, php/html Zeugs ist nix für mich - ich merks schon...Wenn ich 
schon die Variablen sehe die keinen Datentyp brauchen, grins.
Gast #4612127
Lesenswert?

Marcel schrieb:
> Hmm, das ist blöd.
> Kann ich denn die w_eintrag2.php am Ende des ersten Files irgendwie
> includen damit es da weiter läuft?

man kann bestimmt vieles machen. Aber dafür müsste etwas mehr darüber 
wissen was man macht.

Mit den paar Infos, ist es schwer zu helfen.
Gast #4612158
Lesenswert?

Peter II schrieb:
> Marcel schrieb:
>> Ou mann, php/html Zeugs ist nix für mich - ich merks schon...Wenn ich
>> schon die Variablen sehe die keinen Datentyp brauchen, grins.
>
> mit Datentypen hättest du das gleiche Problem.

Das stimmt wohl. Aber mir kommt das sehr schwammig vor, ohne Datentypen 
und schönen Debugmöglichkeiten.
#4612163
Lesenswert?

Marcel schrieb:
> Peter II schrieb:
>> Marcel schrieb:
>>> Ou mann, php/html Zeugs ist nix für mich - ich merks schon...Wenn ich
>>> schon die Variablen sehe die keinen Datentyp brauchen, grins.
>>
>> mit Datentypen hättest du das gleiche Problem.
>
> Das stimmt wohl. Aber mir kommt das sehr schwammig vor, ohne Datentypen
> und schönen Debugmöglichkeiten.
Was spricht gegen xdebug?
#4612186
Lesenswert?

Mit Javascript, welches am Ende der Seite ist, kann man die Form 
abschicken. Alternativ gibts mit Query eine Funktion, die aufgerufen 
wird, wenn der Seitenaufbau fertig ist. Damit ist das dann ein 
Einzeiler.

Finn

Edit:
Mal beispielhaft

JQuery einbinden:
<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>;

Das Script:
<script>
$(window).load(function() {
   $('#form1').submit();
};
</script>
Gast #4612249
Lesenswert?

Natürlich ist das blödsinnig.
Der Quellcode ist leider sehr verschachtelt.
Ich möchte eigentlich nicht zu viel Zeit damit verbringen und lieber an 
meiner anderen Arbeit weiter machen ;)

Selbst, in einer anderen Sprache, würde ich da einiges anders machen.
Aber es ist leider so wie es gerade ist und um großartige Dinge zu 
ändern kenn ich mich zu wenig mit php aus.



Mit dem Javascript hat auch nicht so ganz funktioniert.
>Der Aufruf der Methode submit() funktioniert nicht mehr, wenn es im
>Formular ein Element (z.B. einen Absende-Button) gibt, welches ebenfalls
>den Namen submit besitzt.
Habe also den Button raus geworfen und zuerst mit
1
document.Submit.submit();
 probiert.

Da dies nicht tat, den Rest mit der Zeitverzögerung auch noch mit rein 
genommen:
1
function AbGehts () 
2
{
3
  document.Submit.submit();
4
}
5

6
window.setTimeout("AbGehts()", 3000);

Tut aber auch nicht.
Das muß ich aber schon vor dem "?>" rein machen oder?


@Finn: Der Link mit dem einzubindenen Quellcode tut leider nicht. Aber 
bitte auch beachten: Ich bin da nicht so Firm in der Sache.
#4612272
Lesenswert?

Finn S. schrieb:
> Mit Javascript, welches am Ende der Seite ist, kann man die Form
> abschicken.

Wobei man nicht garantieren kann, dass dieser Code jemals ausgeführt 
wird. JavaScript kann man schließlich im Browser deaktivieren.


Marcel schrieb:
> Natürlich ist das blödsinnig.
> Der Quellcode ist leider sehr verschachtelt.
> Ich möchte eigentlich nicht zu viel Zeit damit verbringen und lieber an
> meiner anderen Arbeit weiter machen ;)
>
> Selbst, in einer anderen Sprache, würde ich da einiges anders machen.
> Aber es ist leider so wie es gerade ist und um großartige Dinge zu
> ändern kenn ich mich zu wenig mit php aus.

Wer sagt, dass man zwingend PHP verwenden muss?

Im Endeffekt muss man Anforderungen umsetzen. Wenn der bestehende Code 
nix taugt, dann schmeiß ihn halt weg. :-)
Gast #4612279
Lesenswert?

Auch mit
1
<script language="javascript" type="text/javascript">
2
    
3
     document.Submit.submit();
4
   
5
</script>

oder
1
<script language="javascript" type="text/javascript">
2
    
3
     $("#formId").submit();
4
   
5
</script>

Am Ende des Files, wie auch zwischen den Echos bringt nichts.
#4612288
Lesenswert?

Mark B. schrieb:
> Finn S. schrieb:
>> Mit Javascript, welches am Ende der Seite ist, kann man die Form
>> abschicken.
>
> Wobei man nicht garantieren kann, dass dieser Code jemals ausgeführt
> wird. JavaScript kann man schließlich im Browser deaktivieren.
>

Für Testzwecke gehe ich erstmal davon aus, dass alles aktiviert ist. Für 
eine Endgültige, öffentliche Lösung muss man da nochmal drübergucken.

Marcel schrieb:
> Der Link mit dem einzubindenen Quellcode tut leider nicht. Aber bitte
> auch beachten: Ich bin da nicht so Firm in der Sache.

Die Zeile }; muss }); heissen; das ist mir gerade aufgefallen.

http://www.w3schools.com/jquery/jquery_get_started.asp
Da gibts verschiedene Möglichkeiten jQuery zu integrieren.

Finn
Gast #4612290
Lesenswert?

Mark B. schrieb:
> Im Endeffekt muss man Anforderungen umsetzen. Wenn der bestehende Code
> nix taugt, dann schmeiß ihn halt weg. :-)

Der taugt auch nicht viel.
Es sind aber 45k LOC und ich bin kein PHP progger.
Ich würde das nicht für einen Webbrowser schreiben wollen.

Wie auch immer, man kann es nicht so einfach ändern.
Gast #4612298
Lesenswert?

Marcel schrieb:
> Ich würde das nicht für einen Webbrowser schreiben wollen.

Da hast du dann ein Problem.
Das <form> wird vom Webbrowser angezeigt, und der Webbrowser 
entscheidet, wann er das Formular absendet.
Normalerweise tut er das nicht von sich aus, sondern wegen 
Mouseklick/Enter-Taste des Benuzers, oder eben wegen Javascript.

Versuch mal, ganz grundsätzlich, zu verstehen, wie Webbrowser und 
Webserver, HTML, Javascript und PHP zusammenhängen.
Gast #4612307
Lesenswert?

@PeterII: Okay, beides tut. Aber irgendwie fällt er dann in der anderen 
php auf die Nase beim Datenbank-Connect.
1
Fatal error: Call to undefined function mysqli_connect() in /volume1/web/****/w_eintrag2.php on line 11

...kein Bock mehr.
Ich schreibe einfach dick und Fett auf die Seite das jeder auf den 
blöden Button klicken soll und fertig.
Mir ist das echt zu blöd mit dem Source hier.

@Planlos: Warum verwendest Du meinen Namen ;)
Habe keine Zeit für mich da rein denken zu können. Und...ich glaub...ich 
möchte das auch gar nicht weiter.
Gast #4612386
Lesenswert?

Jan L. schrieb:
> ...vor allem wird bei keiner dieser beiden Varianten irgendwas an Daten
> übergeben, geschweige denn per POST - oder?

scheinbar braucht er das ja auch nicht

> Aber dann stimmt ja auch die Übergabe mit den Daten nicht...
> Wobei ich auch gar nicht sehe welche Daten da übergeben werden sollen :)
#4612492
Lesenswert?

Peter II schrieb:
> Jan L. schrieb:
>> ...vor allem wird bei keiner dieser beiden Varianten irgendwas an Daten
>> übergeben, geschweige denn per POST - oder?
>
> scheinbar braucht er das ja auch nicht
>
>> Aber dann stimmt ja auch die Übergabe mit den Daten nicht...
>> Wobei ich auch gar nicht sehe welche Daten da übergeben werden sollen :)

dann allerdings wäre der Form-Submit überflüssig wie ein Kropf, und der 
Autor alleine weiss, wieso er da keinen normalen Link benutzt. Ok, 
vermutlich dann wegen der geschmackvollen Optik... o_O
#4613015
Lesenswert?

> Ich möchte eigentlich nicht zu viel Zeit damit verbringen und lieber an
meiner anderen Arbeit weiter machen ;)

Dann lass es sein. Php ist eine komplet andere Denkweise. Die Commands 
sind das Trivialste dabei.
Ein Durchgang, sprich Aufruf generiert genau eine HTML Seite. Oben rein 
in den Code, unten raus aus dem Code. Ja, includen kann man auch.
Mit schnell etwas anfuegen ist nichts. gar nichts. Da muss man sich 
reinknien. Laengere Zeit.
Man muss auf verschiedenen Ebenen gleichzeitig denken koennen. MySQL, 
Php, HTML, CSS, ist das minimum aufs Mal. Wahlweise kommt noch 
Javascript und Ajax hinzu. Da geschehen verschiedenen Dingen an 
verschiedenen Orten, zu verschiedenen Zeiten, und man sollte das 
ueberblicken koennen.
Gast #4613215
Lesenswert?

Habe mir das mit dem GET und POST einmal angeschaut.
Beides kommt in der Zieldatei vor.
Die Datei wird aber auch scheinbar von verschiedenen Stellen des Codes 
angesprungen.
1
$bid = $_GET["bid"];
2
$stueckzahlg = $_POST["stueckzahl"];

Das GET wird in von dieser einsprungstelle nicht übergeben.
Die POST-Variable gibt es jedoch und kann genutzt werden.
Evtl. fällt es deswegen dann auf die Nase und die angezeigte 
Zeilennummer des Fehlers stimmt nicht mit dem php-source überein.

@OH Doch: Hatte in den letzten Jahren, seit der "Programmierer" nicht 
mehr bei uns ist, schon etliches in dem Code geändert und gefixt. Aber 
an dieser Stelle will es einfach nicht :)
Gast #4613240
Lesenswert?

S R schrieb:
> Jan L. schrieb:
>>>> Fatal error: Call to undefined function mysqli_connect() in
>
> --> du musst die mysqli Erweiterung aktivieren

da es ja von Browser aus geht, scheint die Erweiterung ja da zu sein. Es 
geht nur nicht wenn er es indirekt vom PHP selber aufruft.
Gast #4613251
Lesenswert?

Oh, shit, Kommando zurück.
Ich habe in der ersten Datei statt der zweiten nach GET/POST gesucht.
Hier gibt es eine for/next die dann folgendes per POST abfragt:
1
$bid = $_POST["bid$i"];
2
$stueckzahl = $_POST["stueckzahl$i"];

Ich habe die beiden Dateien nun mal einem Bekannten, der das beruflich 
macht übergeben.
Evtl. sieht der ja warum der Buttonaufruf mit JScript nicht tut.
Gast #4613300
Lesenswert?

Sooooo, jetzt funktioniert es.
Hab wieder einiges dabei gelernt, wobei man den Code hier eher weniger 
zum Selbststudium nutzen sollte ;)

Es funktioniert nun wunderbar mit
1
<script>
2
  window.onload = function(){
3
    document.getElementById("form1").submit();
4
  }
5
</script>

Mein Fehler war, den Bereich nicht als JavaScript zu definieren...

@Daniel Albrecht: Ja, da bin ich mir seeehr sicher das man dass nicht so 
machen sollte :)
Gut, dass der Code nicht von mir stammt.

Supi, Thema abgehakt - weiter zur normalen Arbeit :)

Danke Euch allen für die Hilfe!!!
Macel

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren