Grundlagenproblem Schleifen
Jan K.
- php
Hallo zusammen,
ich möchte gerne wenn meine funktion "mailer()" beendet ist, das die formulare die sich in der funktion "tabelle()" verbergen nicht mehr angezeigt werden (statdessen soll "kennich" ausgespuckt werden).
Welchen Fehler mache ich hier? Wie könnte man das sonst noch machen?
if ($sended==1) {
echo "kennich";
}
else {
tabelle();
}
if (isset($_POST[emailadress]) AND isset($_POST[password])) {
mailer();
$sended=1;
}
Ich hoffe jemand gibt mir zumindest nen Denkanstoß.
Gruß,
Jan
Hi there,
Welchen Fehler mache ich hier? Wie könnte man das sonst noch machen?
Zunächst einmal jede Menge Rechtschreibfehler.
Aus Deinem geposteten Code geht das Wesentliche nicht hervor, nämlich unter welchen Umständen Deine Variable $sended (geht mich zwar nichts an und ist programmtechnisch irrelevant, aber sended heisst im Englischen sent, nur so nebenbei) den Wert 1 erhält, da Du die Schleife nicht mitgepostet hast; wenn diese aber nur einmal durchlaufen wird, dann wird die erste Bedingung nie eintreten. So gesehen kann man Dir da nicht wirklich helfen...
Hallo nochmal,
sent -merk ich mir. Ich hab es mit ner while schleife probiert, aber die endet immer inner endlos-schleife ;) .
Die Problematik ist für mich es hinzubekommen, das nach erflogreicher ausführung der func "mailer()" die formulare, verschwinden und da nen text erscheint wie "erfolgreich gesendet" o.ä.
In der func "tabelle()" sind 2 formulare, und ein button. Sendet man die werte via $_POST and die func "mailer()" so soll "$sended=1" werden
(das is der punkt, es wird nicht nochmal ganz zum anfang "gesprungen") und damit bei wiederholter (...) ausführung des ganzen einen erfolg melden.
Besser kann ichs nich beschreiben, vielleicht ist mein Problem auch nur zu simpel =) .
Gruß,
Jan
Hallo nochmal
Bildlich erklärt hätte ich gerne folgende Logik:
--------------------
| |
| |
| mail schon verschickt?----JA---Erfolgsmeldung
| |
| NEIN
| |
| |
| --------------------------
| | func: tabelle() |
| --------------------------
| | Eingabe:email/passwort |
| | Button:send |
| --------------------------
| |
| |
| Wenn eingaben vorhanden(POST)
| rufe mailer auf
| |
| |
| --------------------------
| | func: mailer() |
| |-------------------------
| | mail gesendet |
| --------------------------
| |
| |
| Rückgabewert mail gesendet
| |
| |
-------------------
Sobald die mail verschickt wurde soll das eingabeformular verschwinden und durch eine erfolgsmeldung ersetzt werden.
Bekomm ich aber nicht hin :/
Wie würde solch eine logik prinzipiell aussehen?
Gruß,
Jan
Hallo Jan,
if($_SERVER['REQUEST_METHOD']=='POST'){
if(validiere_eingaben()===TRUE){
sende_mail();
ausgabe_danke();
}
else{
ausgabe_formular($_POST);
}
}
else{
ausgabe_formular('');
}
Gruß aus Berlin!
eddi
Hallo Jan
ich möchte gerne wenn meine funktion "mailer()" beendet ist, das die formulare die sich in der funktion "tabelle()" verbergen nicht mehr angezeigt werden (statdessen soll "kennich" ausgespuckt werden).
if ($sended==1) {
echo "kennich";
}
else {
tabelle();
}if (isset($_POST[emailadress]) AND isset($_POST[password])) {
mailer();
$sended=1;
}
Du solltest wohl einfach die beiden Code-Schnippsel anders herum anordnen:
//wichtig: interne Variablen moeglichst initialisieren - ist guter Stil
$sended=0;
if (isset($_POST[emailadress]) AND isset($_POST[password])) {
mailer();
$sended=1;
}
if ($sended==1) {
echo "kennich";
}
else {
tabelle();
}
Alternative wäre, dass du nach dem Aufruf von mailer() und dem Setzen von sended irgendwie die php-Datei nochmal aufrufst und dabei $sended übergibst ($_GET, $_POST, $_SESSION). Aber probier erstmal die erste Variante aus, das dürfte am einfachsten sein ;-)
Liebe Grüße mbr
Danke für die Lösung
Funktioniert tatsächlich mit dem vertauschen, ist auch völlig logisch so. Aber wieso bin ich nicht darauf gekommen... grml
Gruß,
Jan