JavaScript PHP / HTML / JAVASCRIPT: Variable bei Übergabe ändern

norbert_pdm

Cadet 2nd Year
Registriert
März 2021
Beiträge
25
Hallo, hallo allerseits,

ich steh mal wieder ein bisschen auf dem Schlauch.... ;-)
Ich habe ein Formular, dass, wenn es korrekt ausgefüllt wurde, eine Erfolgsmeldung auf einer Webseite ausgibt.
Formular und 'Erfolgsmeldung' sind in die gleiche PHP Datei eingebunden.
In dieser PHP Datei passiert natürlich noch viel mehr, aber das ist nicht das Problem... ;-)
Um dem Benutzer das weitere Bearbeiten zu erleichtern, übergebe ich danach bestimmte Parameter wieder an diese Datei und in Abhängigkeit eines Parameters soll die Datei verschiedenes machen...
Ich weiß, klingt alles noch sehr kryptisch. Ich mach's am Besipiel...

In der PHP Datei wird ein Formular erzeugt, welches am Ende 2 Submit - Buttons hat.
HTML:
<input type='submit' value='weiter' class='submit' id='submit' name='submit' formmethod='post' formaction='datei.php' />
<input type='submit' value='neu' class='submit' id='submit' name='submit' formmethod='post' formaction='datei.php' />

So, mein Problem ist jetzt, dass das PHP Script in Abhängigkeit einer Variablen $tmp_doku verschiedenes macht. Es klappt auch soweit ganz gut, nur dass ich beim Klicken auf 'neu' dieser Variablen den Wert 0 zuweisen will...

Ich hab das schon über irgendwelche versteckten Felder versucht, das klappt aber so nicht, da ja beim draufklicken auf den Button nichts mehr in Richtung HTML geschrieben werden kann und dann wieder ausgewertet werden kann...
Und ich muss auch zugeben, dass meine JavaScript Kenntnisse quasi Null sind und ich vieles, was ich im Netz gefunden habe, für zu kompliziert halte.

Ich weiß nicht, ob ich mein Problem halbwegs darstellen konnte und jemand von euch eine Idee dazu hat....
Das wäre wunderbar... :-)

Danke schon mal,
Norbert
 
Hi,

mit JavaScript kannst du nicht einfach eine PHP Variable ändern - Frontend vs Backend.

Wenn es nur um Daten hin und her schicken geht würde ich AJAX empfehlen. Spart das Seiten neuladen und du kannst direkt auf Daten vom Server reagieren oder im JavaScript das Frontend manipulieren.

VG,
Mad
 
Hallo Mad,

das mit dem serverseitigem von PHP und JavaScript clientseitig ist mir klar.
Da der Inhalt der Variablen clientseitig über ein hidden - Feld gesetzt wird und dann übergeben wird, dachte ich dass man da 'irgendwie' dazwischen kann...
Und AJAX ist mir persönlich zu kompliziert ;-)

VG,
Norbert
 
Hey Norbert,

prüfe doch einfach innerhalb der php-Datei an die das Formular gesendet wird, welcher der beiden submit-Buttons der Auslöser war:
Code:
<?php
if( isset( $_POST[ 'neu' ] ) ) {
   $tmp_doku = 0;
}
 
Vor den Kopf schlag...
Oh man...
So einfach kann es sein ... ;-)

Hab's jetzt noch nicht geprüft, klingt aber logisch.... ;-)
Ich nehme mal an, dass der Name des Elementes geprüft wird und nicht der Inhalt?

VG, Norbert
 
Hi,

Da der Inhalt der Variablen clientseitig über ein hidden - Feld gesetzt wird und dann übergeben wird, dachte ich dass man da 'irgendwie' dazwischen kann...

das kannst du dann natürlich. Dazu müsstest du aber ein wenig mehr Code zeigen damit man da konkret sagen kann wie es aussehen soll.

VG,
Mad
 
norbert_pdm schrieb:
Ich nehme mal an, dass der Name des Elementes geprüft wird und nicht der Inhalt?
Im obigen Beispiel wird das Vorhandensein der Variable anhand des Namens geprüft.
Möchtest du zeitgleich auch den Inhalt prüfen, ist dies natürlich auch möglich:

PHP:
<?php
if( isset( $_POST[ 'neu' ] ) AND $_POST[ 'neu' ] === 'blub' ) {
   $tmp_doku = 0;
}
 
Hallo allerseits,

erst mal ganz herzlichen Dank an alle für die Tipps... Der Tipp von theEvil007 reicht mir im Prinzip schon. Allerdings klappt er noch nicht so richtig...
Ich zeig euch hier mal meinen relevanten Quelltext der Datei datei.php:

PHP:
<?php
    if(isset($_POST['neu'])) {
        $tmp_doku = 0;
    }
?>
<form class="yform" role="application">
   .... viel Formkrams
<?php
    switch ($tmp_doku) {
        case 0:   
          // vieles
          break;
        case 1:
          // wieder was
          break;
        case 2:
          // so einiges
          echo "<input type='hidden' name = 'tmp_doku' value = '1'>";
          break;
    }     
?>
    <input type='reset' value='Reset' class='reset' id='reset' name='reset' />

Ich lass mir die Variable $tmp_doku bei jedem Aufruf anzeigen..... 
Sie kommt nach dem klicken auf den entsprechenden Button allerdings nicht auf $tmp_doku = 0

Hat noch jemand eine Idee??
    <?php
     if($tmp_doku == 2) {
        echo "<input type='submit' value='toller Text' class='submit' id='neu' name='neu'
        onclick=\"if (!confirm('Sind Sie sich sicher??')) { return false }\" formmethod='post' formaction='datei.php' />\r\n";}
    ?>
    <input type='submit' value='Verweis' class='submit' id='submit' name='submit'
        onclick="if (!confirm('Sind Sie sich sicher??')) { return false }" formmethod='post' formaction='datei.php' />
Ergänzung ()

Ok...
Ich hab nen blöden inneren logischen Fehler gehabt.... ;-)
Ich im weiteren die Variable mit empty($_POST["tmp_doku"]) abgefragt.... Und das ist an dieser Stelle nun mal ausgeuschter Schwachfug... ;-)

Das oben geschriebene funktioniert so wie es ist tadellos... :-)

Danke an alle!
VG,
Norbert
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: theEvil007
Das ist übrigens ein Problem bei „relevantem Quellcode“. Oft fehlt dann nämlich der wirklich relevante Teil. ;) Das ist dann, als würde man nur mit Teilen des kaputten Autos in die Werkstatt gehen. Das nur als Tipp fürs nächste Mal. :)
 
T. Smith schrieb:
Das ist übrigens ein Problem bei „relevantem Quellcode“. Oft fehlt dann nämlich der wirklich relevante Teil. ;) Das ist dann, als würde man nur mit Teilen des kaputten Autos in die Werkstatt gehen. Das nur als Tipp fürs nächste Mal. :)
Danke für den Tipp... ;-)
Ist mir schon halbwegs klar.... Die Problematiken sind häufig so komplex, dass es teilweise wirklich schwierig ist, diese in den relevanten Teil herunter zu brechen...
Ich versuch's beim nächsten mal genauer zu machen :):)
 
PHP und HTML Code in einer Datei ist stark veraltet, klappt zwar, wird aber heute nicht mehr verwendet.
Ich würde dir hier OOP ans Herz legen.

PHP Projekt mit Symfony 5 und HTML als View Schicht.
Hört sich vielleicht für Anfänger kompliziert ist, ist aber nicht.

Und Ajax mit bspw. jQuery ist ez.
$.ajax({
url: "127.0.0.1/deine/seite/tuwas",
context: 'inhalt'
}).done(function() {
// tu was wenn es fertig ist
});
 
Zurück
Oben