Forum: PC-Programmierung PHP Submit-POST problem


von Marcel (Gast)


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

von Peter II (Gast)


Lesenswert?

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

wie automatisch? Nach 10min? Wenn die Seite geöffnet wird? Wenn das 
Licht angeht?

von Marcel (Gast)


Lesenswert?

Sobald der Code einmal durchgelaufen ist soll das passieren.

von Peter II (Gast)


Lesenswert?

Marcel schrieb:
> Sobald der Code einmal durchgelaufen ist soll das passieren.

das kann nicht gehen, weil der Code auf dem Server durchlaufen wird, der 
Post aber vom Browser aus gesendet werden muss.

von Rüdiger M. (animefan)


Lesenswert?

Das Formular kann über ein wenig Javascript abgesendet werden.

Siehe hier :
https://wiki.selfhtml.org/wiki/JavaScript/Objekte/window/document/forms/submit

Das ist die Passende Seite auf Selfhtml. Das sollte alles wichtige 
stehen.

von Marcel (Gast)


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.

von Peter II (Gast)


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.

von Peter II (Gast)


Lesenswert?

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.

von Marcel (Gast)


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.

von Marcel (Gast)


Lesenswert?

Peter II schrieb:
> man kann bestimmt vieles machen. Aber dafür müsste etwas mehr darüber
> wissen was man macht.

Jups, das stimmt definitiv.

@Rüdiger:
Ich werde mir das mit dem Javascript anschauen.
Danke für den Tip!

von Dirk D. (dicky_d)


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?

von Finn S. (scooter757)


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>

: Bearbeitet durch User
von Condi (Gast)


Lesenswert?

Wobei es etwas fragwürdig erscheint eine Seite zu laden die eine andere 
Seite lädt.

von Marcel (Gast)


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.

von Mark B. (markbrandis)


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. :-)

von Marcel (Gast)


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.

von Finn S. (scooter757)


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

von Marcel (Gast)


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.

von Peter II (Gast)


Lesenswert?

es kann doch nicht so schwer sein, die 2 PHP Datei am ende der ersten 
aufzurufen. Wenn man es ganz schmutzig machen will macht man es mit

System("php script2.php");

von Peter II (Gast)


Lesenswert?

Nachtrag:

oder man macht aus php einen http aufruf auf das nächste script.

fopen("http://.asdfasdf/script2.php";);

von Planlos (Gast)


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.

von Marcel (Gast)


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.

von Peter II (Gast)


Lesenswert?

Marcel schrieb:
> Fatal error: Call to undefined function mysqli_connect() in
> /volume1/web/****/w_eintrag2.php on line 11

merkwürdig, da wird bestimmt etwas includiert was jetzt nicht gefunden 
wird.

von Marcel (Gast)


Lesenswert?

Das kann sehr gut sein

von Marcel (Gast)


Lesenswert?

Vielen Dank für die Hilfe erst mal.
Wenn ich morgen plötzlich auf die Idee komme noch einmal da rein zu 
schauen, check ich mal die includes.

von Jan L. (ranzcopter)


Lesenswert?

Peter II schrieb:
> Marcel schrieb:
>> Fatal error: Call to undefined function mysqli_connect() in
>> /volume1/web/****/w_eintrag2.php on line 11
>
> merkwürdig, da wird bestimmt etwas includiert was jetzt nicht gefunden
> wird.

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

von Peter II (Gast)


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 :)

von Jan L. (ranzcopter)


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

von Pandur S. (jetztnicht)


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.

: Bearbeitet durch User
von Marcel (Gast)


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 :)

von Jonas B. (jibi)


Lesenswert?

\\$bid = $_GET["bid"];
\\$stueckzahlg = $_POST["stueckzahl"];

Das kann nicht sein, entweder die Seite wird per POST oder per GET 
geladen!
Also entweder ist das Array $_GET oder das Array $_POST gefüllt...
Gruß J

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Jonas B. schrieb:
> Das kann nicht sein, entweder die Seite wird per POST oder per GET
> geladen!

sicher?

man kann doch ein Post auch an ein Get Adresse schicken.
1
<form id="form1" name="form1" method="post" action="w_eintrag2.php?test=abc">

von S R (Gast)


Lesenswert?

Jan L. schrieb:
>>> Fatal error: Call to undefined function mysqli_connect() in

--> du musst die mysqli Erweiterung aktivieren

Jonas B. schrieb:
> Also entweder ist das Array $_GET oder das Array $_POST gefüllt...

Wie Peter schon sagte ist das Unsinn.

von Peter II (Gast)


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.

von Marcel (Gast)


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.

von S R (Gast)


Lesenswert?

Peter II schrieb:
> da es ja von Browser aus geht, scheint die Erweiterung ja da zu sein. Es

Nein. Die einzige logische Erklärung wäre, dass die mysqli_* Funktionen 
manuell definiert werden.

Wenn die Erweiterung da wäre, gäbe es ja die Funktionen.

von Daniel A. (daniel-a)


Lesenswert?


von Marcel (Gast)


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

von Jonas B. (jibi)


Lesenswert?

>Wie Peter schon sagte ist das Unsinn.

Stimmt, keine Ahnung wie ich darauf komme. Kann es sein das es da eine 
best practice gibt, das nicht zu vermischen?

Ich nehm alles zurück ;)

von Daniel A. (daniel-a)


Lesenswert?

Marcel schrieb:
> @Daniel Albrecht

Es heisst Abrecht, nicht Albrecht. Das machen immer alle falsch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.