mikrocontroller.net

Forum: PC-Programmierung PHP Submit-POST problem


Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter II (Gast)
Datum:

Bewertung
2 lesenswert
nicht 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?

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sobald der Code einmal durchgelaufen ist soll das passieren.

Autor: Peter II (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Rüdiger Mohr (animefan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Formular kann über ein wenig Javascript abgesendet werden.

Siehe hier :
https://wiki.selfhtml.org/wiki/JavaScript/Objekte/...

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

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter II (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Peter II (Gast)
Datum:

Bewertung
2 lesenswert
nicht 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.

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Dirk D. (dicky_d)
Datum:

Bewertung
1 lesenswert
nicht 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?

Autor: Finn Stutzenstein (scooter757)
Datum:

Bewertung
0 lesenswert
nicht 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....;

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

: Bearbeitet durch User
Autor: Condi (Gast)
Datum:

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

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
document.Submit.submit();
 probiert.

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

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.

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht 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. :-)

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch mit
<script language="javascript" type="text/javascript">
    
     document.Submit.submit();
   
</script>

oder
<script language="javascript" type="text/javascript">
    
     $("#formId").submit();
   
</script>

Am Ende des Files, wie auch zwischen den Echos bringt nichts.

Autor: Finn Stutzenstein (scooter757)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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");

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:

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

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

Autor: Planlos (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@PeterII: Okay, beides tut. Aber irgendwie fällt er dann in der anderen 
php auf die Nase beim Datenbank-Connect.
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.

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann sehr gut sein

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jan L. (ranzcopter)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Jan L. (ranzcopter)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sabberalot W. (jetztnicht)
Datum:

Bewertung
1 lesenswert
nicht 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
Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
$bid = $_GET["bid"];
$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 :)

Autor: Jonas Biensack (jibi)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
<form id="form1" name="form1" method="post" action="w_eintrag2.php?test=abc">

Autor: S R (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
$bid = $_POST["bid$i"];
$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.

Autor: S R (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel Abrecht (daniel-a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel schrieb:
> $bid = $_POST["bid$i"];

Dafür gibt es weitaus bessere Varianten.

http://stackoverflow.com/questions/2433727/submitt...

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
<script>
  window.onload = function(){
    document.getElementById("form1").submit();
  }
</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

Autor: Jonas Biensack (jibi)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Daniel Abrecht (daniel-a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel schrieb:
> @Daniel Albrecht

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.