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
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?
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.
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.
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.
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.
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.
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!
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?
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>
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.
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. :-)
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
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.
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");
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.
@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.
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.
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?
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 :)
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
> 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.
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 :)
\\$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
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.
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.
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.
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.
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.
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
>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 ;)