Variable von HTML aus an PHP übergeben und wieder zurück

Hallo liebe Community,

stehe gerade etwas auf dem Schlauch. Für gewöhnlich binde ich meine ganzen PHP-Dateien wie z.B. Kontaktformulare per iframe ein. Dies ist natürlich nicht die sauberste Lösung.

Nun habe ich auf einer HTML-Seite ein Formular in das man fleißig Variablen reintippen kann. Diese werden an die PHP-Datei auch schon übergeben funktioniert alles wunderbar bis jetzt allerdings wird bei dem Absenden die PHP-Datei aufgerufen und dort alles wieder ausgegeben in dem Fall z.B. “Nachricht erfolgreich gesendet”.

Wie kann ich es denn anstellen dass der Besucher die HTML-Seite mit dem Formular nicht verlässt und einfach unter dem Formular nach dem Klicken auf den Button den Text plötzlich angezeigt bekommt? Also die Variable die in das Formular eingetippt wird soll an die PHP-Datei übergeben werden und die daraus entstehende Variable welche die PHp-Datei erzeugt soll an die HTMl-Datei übergeben werden aber der Besucher soll davon nichts merken. Es soll einfach auf der HTML-Datei mit dem Formular dann die Variable welche die PHP-Datei ausgegeben hat angezeigt werden.

Hier ein Beispiel: passwort-generator.com/

Ansätze reichen mir schon damit ich weis wonach ich suchen muss.

Liebe Grüße

MaxT :wink:

Mit einer reinen HTML Seite wird das nicht gehen. Am besten änderst du die HTML Seite mit dem Kontaktformular in einen PHP um und prüfst in derselbigen, ob das Formular augefüllt wurde, und wenn ja, dann setzt du noch einen Text drunter. Ich will mal ein grobes Beispiel geben:
kontakt.php

<form action="kontakt.php" method="POST">
[...Formular...]
<input type="submit" name="send" value="Senden">
</form>
<?php
if(isset($_POST['send'])){
[...]Auswertung des Formulares[...]
if($auswertung == 'erfolgreich'){
echo 'Erfolgreich!';
} else {
echo 'Fehlgeschlagen';
}
}

Wenn du es an eine andere Datei schickst, könntest du es wieder mit Session oder Get übertragen, aber das wäre nur unnötig kompliziert.

Hoffe konnte helfen
Mfg
Mgier

Stichwort Affenformular

OK, dann packe ich einfach die HTML-Elemente in die PHP-Datei. Und lasse eben die Deklaration und die Tags head und body weg. Allerdings wie bekomme ich da dann meine CSS Anweisungen rein die ich in eine CSS-Datei ausgelagert habe, schließlich gibt es keinen Head-Bereich?

Du kannst HTML genausogut in einer PHP Datei verwenden :wink:
Lass alles so wie es is, nur füg den PHP Code dazwischen ein :slight_smile:

Alles klar, vielen Dank! :slight_smile:

Dann hätte ich an der Stelle noch eine kleine Frage die allerdings sehr speziell ist weshalb ich lieber nicht unnötig ein neues Thema erstelle.

Als Beispiel habe ich hier wissen-script.de/pwg/
Dort habe ich oben genanntes umgesetzt.

Ist die gewünschte Passwortlänge zu kurz erscheint eine Meldung die darauf hinweist dass das generierte Passwort unsicher ist.

Nun wenn angezeigt wird dass Passwort ist zu kurz, oder unsicher (wird durch if-abfrage getestet) sollen sich sämtliche grünen Elemente der Seite in rot färben. Wie lässt sich das realisieren?

Für möglich halte ich folgendes…
…Im Hintergrund nach dem Aufrufen sämtliche Elemente zweimal laden lassen, einmal in grün und einmal in rot. Die selbe Seite wie jene die aktuell zu sehen ist gibt es auch in rot.
Wenn nun die Meldung kommt das Passwort ist zu kurz wird einfach auf die rote Seite umgeleitet. Allerdings sehe ich darin ein Problem - Wird auf die rote Seite nach dem generieren eines unsicheren Passworts umgeleitet wird das Script der roten Seite neu geladen und das angezeigte Passwort sowie der Hinweis sind verschwunden.

Also dies wäre nur meine Idee, bin für jeden anderen Lösungsansatz natürlich offen.

Erstelle einfach 2 CSS-Dateien. wenn ein Fehler auftritt, bindest du die rot.css ein, sonst grün.css :wink: Bilder dann nicht per einbinden sondern über CSS und background.

Naja, im Prinzip wäre das schon möglich, wie du es gesagt hast, sauberer ist aber die Lösung von Progandy. In deinem Script wird beim Absenden des Formulares ja auch die Seite neu geladen :wink:

Vielen Dank,

habe beide Dateien fertig. Allerdings wie soll ich die rot.css ausgeben wenn ein Fehler auftritt?
Habe bisher die grün.css in HTML eingebunden. <link rel="stylesheet" type="text/css" href="css/gruen.css">

Wie muss ich das wo genau in der PHP-Datei verbasteln? Und vor allem muss doch auch die rot.css die grün.css überschreiben/ unterdrücken.

Liebe Grüße

MaxT :wink:

hi,

in diesem Fall denke ich dass der Vorposter eine Abfrage à la:

[code]

<?php if (strlen($passwort) <= 6) { echo ''; } else { echo ''; } ?>[/code]

Bei der Auswertung deines Formulars führst du eine Boolsche
Variable ein, etwa $korrekt (TRUE falls alles in Ordnung ist, FALSE
wenn nicht).

Dann kannst du schreiben:

if ($korrekt) {
$stil=‘gruen.css’;
} else {
$stil=‘rot.css’;
}

und dann später an der betroffenen Stelle im Dateikopf:

Ich hatte das so ähnlich gedacht, nur mit einer Variablen, die bei Fehlern gesetzt ist.

[code]<?php
$error = 0;
$error_msg = ‘’;
if ( FORMULAR_GESENDET ) {
if ( FEHLER_1 ) {
$error = 1;
$error_msg = ‘Fehler’;
} else if ( FEHLER_2 ) {
$error = 2;
$error_msg = ‘Fehler’;
}
} // ENDIF formular gesendet

?>

<?php if ($error): ?>
<link rel="stylesheet" type="text/css" href="css/rot.css">
<?php else: ?>
<link rel="stylesheet" type="text/css" href="css/gruen.css">
<?php endif; ?>[/code]

Unnötig.

Vergebe einfach den fehlerhaften Formularelementen eine entsprechende Klasse, und formatiere sie darüber abweichend - in einem Stylesheet.
Extra dafür ein komplett anderes Stylesheet einzubinden, ist weniger sinnvoll.

Ich bedanke mich für eure Mühe und die zahlreichen Antworten.

Mir schien das Beispiel von kerbination und progandy am Einfachsten. Funktioniert auch alles wunderbar.
Unter den echo-Teil der die Warnhinweise (Passwort zu kurz, Bitte Passwortlänge angeben usw.) habe ich noch echo '<link rel="stylesheet" type="text/css" href="css/rot.css">'; gesetzt. Funktioniert alles wunderbar (Im Beispiel zu dem der Link führt aktuell nicht eingebaut.) Wenn ich mit dem Rest des Projekts fertig bin werde ich mich auch nocheinmal mit den anderen Lösungsvorschlögen genauer auseinandersetzen und diese erproben da wie es scheint bei größeren Dateien die Lösung von chrisb durchaus seine Vorzüge hat da nicht die CSS jeder Datei komplett geladen werden muss, sondern eben nur die Änderungen.

Liebe Grüße

MaxT :wink:

Also das Element link gehört in (X)HTML ins Element head und
nicht irgendwohin, wo Text stehen kann (in body in einem
Blockelement), insofern mußt du deine Ausgabe schon ordentlich
strukturieren, sonst ergibt das keine sinnvolle (X)HTML-Ausgabe.

Ob man das mit Klassen besser macht oder mit einer kompletten
alternativen Stilvorlage oder auch mit einer ergänzenden
Stilvorlage, hängt davon ab, wie umfangreich die Stiländerungen
sind und auf wieviele Elemente und Eigenschaften sich das
bezieht, Je weniger das betrifft, desto eher lohnt sich der Ansatz
mit einer Klasse (habe ich auch in einigen Anwendungen).
Ein weiteres Element link zu einer ergänzenden Stilvorlage lohnt
sich bei etwas umfangreicheren Modifikationen. Die komplette
Stilvorlage auszutauschen lohnt sich, wenn sich nahezu der
gesamte Stil ändert.