Antworten auf deine Fragen:
Neues Thema erstellen

PHP Weiterleitung (POST) an sich selbst in IF-Block

eFoX

Reiche Zahnarztgattin

hullá,
habe mir ein kleines notizformular geschrieben, und wenn ich nun was ändere wird das auch richtig in die txt-datei geschrieben, nur leider fehlt mir jetzt eine weiterleitung wieder zurück auf den ersten IF-Block indem die Anzeige der txt-datei stattfindet!

Der relevante Teil befindet sich ganz unten:
(Dateiname: notiz.php)
(Suche nach: //Weiterleiten auf ersten IF-Block )

PHP:
<html>
<head>
<title>Deine Notiz</title>
</head>
<body>

<?php

$inhalt = 'text.txt';

// Inhalt der Datei nur anzeigen
if (isset($_POST['Show']))
{
	echo "<h2>Inhalt anzeigen:</h2>";
	echo "<textarea rows='15' cols='80' name='Notizfeld' readonly='readonly'>";
	readfile($inhalt);
	echo "</textarea>";

	// Kommt unter das ausgelesene Textfeld
	echo "<h3>Fehler entdeckt?</h3>";
	echo "<form action='notiz.php' method='post'>";
	echo "<input type='Submit' name='Edit' value='Ändern'>";
	echo "</form>";
}

// Inhalt der Datei bearbeiten
if (isset($_POST['Edit']))
{
	echo "<h2>Inhalt bearbeiten:</h2>";

	echo "<form action='notiz.php' method='post'>";
	echo "<textarea rows='15' cols='80' name='Notizfeld'>";
	readfile($inhalt);
	echo "</textarea>";
	
	// Kommt unter das ausgelesene Textfeld
	echo "<h3>Änderungen speichern:</h3>";
	echo "<input type='Submit' name='Save' value='Speichern'>";
	echo "</form>";

}

// Inhalt speichern
if (isset($_POST['Save']))
{
	$text = $_POST['Notizfeld'];
	$handle = fopen($inhalt , "w");
	fwrite($handle, $text);
	fclose($handle);
	echo "Erfolgreich eingetragen!!";
	
	//Weiterleiten auf ersten IF-Block

}


?>

</body>
</html>

Ideen die nix nützen:
1) Ausgabe:
//echo "<meta http-equiv='refresh' content='2; url=notiz.php?=edit'>";
-> Geht ja nicht weil POST

2) Ich muss irgendwie an POST den Wert 'Edit' übergeben?
3) Aus dem IF Block rausspringen?

Es würde aufjedenfall gehen wenn ich am Ende wieder nen <form action> mit einem submit-button name='edit' machen würde, aber da müsste ich manuell klicken und ich wills automatisch! :)

Bin grad echt blockiert im denken, Ideen wie es geht?
(Bitte nix mit Cookies!!)
 
Zuletzt bearbeitet:

EnricoS

Nicht mehr ganz neu hier

AW: PHP Weiterleitung (POST) an sich selbst in IF-Block

Dann schreib doch einfach drei Funktionen

function show() {}
function save() {}
function edit() {}

Dann kannst du Sie wie du es willst ausführen

Gruß
Enrico
 

eFoX

Reiche Zahnarztgattin

AW: PHP Weiterleitung (POST) an sich selbst in IF-Block

danke für die antwort, aber ist leider an der problemstellung vorbei.

es geht darum, automatisch weiterzuleiten, wenn man eine änderung gespeichert hat, sprich: im zweiten if block kann ich in das textfeld was schreiben, drücke auf speichern, es leitet an den dritten if block weiter, dort wird das vom textfeld ("notizfeld") in die txt geschrieben (bewusst 'w' und nicht 'a' gewählt) und dann ist fertig und es geht nicht mehr weiter. UND genau an diesem punkt will ich wieder zurückgeleitet werden auf den ersten oder zweiten If Block, automatisch nach einer gewissen zeit, oder sofort, allerdings mit der meldung "änderung eingetragen"
 

EnricoS

Nicht mehr ganz neu hier

AW: PHP Weiterleitung (POST) an sich selbst in IF-Block

Versteh ich nicht...
<?php

$inhalt = 'text.txt';

function show(){
echo "<h2>Inhalt anzeigen:</h2>";
echo "<textarea rows='15' cols='80' name='Notizfeld' readonly='readonly'>";
readfile($inhalt);
echo "</textarea>";

// Kommt unter das ausgelesene Textfeld
echo "<h3>Fehler entdeckt?</h3>";
echo "<form action='notiz.php' method='post'>";
echo "<input type='Submit' name='Edit' value='Ändern'>";
echo "</form>";
}

function edit(){
echo "<h2>Inhalt bearbeiten:</h2>";

echo "<form action='notiz.php' method='post'>";
echo "<textarea rows='15' cols='80' name='Notizfeld'>";
readfile($inhalt);
echo "</textarea>";

// Kommt unter das ausgelesene Textfeld
echo "<h3>Änderungen speichern:</h3>";
echo "<input type='Submit' name='Save' value='Speichern'>";
echo "</form>";

}

function save(){
$text = $_POST['Notizfeld'];
$handle = fopen($inhalt , "w");
fwrite($handle, $text);
fclose($handle);
echo "Erfolgreich eingetragen!!";
}

// Inhalt der Datei nur anzeigen
if (isset($_POST['Show']))
{
show();
}

// Inhalt der Datei bearbeiten
if (isset($_POST['Edit']))
{
edit();

}

//Speichern aund anzeigen
if (isset($_POST['Save']))
{
save();
show();
}

?>

Wozu die Seite neu laden wenn du nach dem speichern gleich anzeigen willst. Mache es in einem Rutsch. Save () -> "Erfolgreich gespeichert" -> Show ()

//Edit:

Prinzipiell kannst du mit header() weiterleiten. Verwendest du bei der Abfrage statt $_Post $_Request verwendest kannst du per url "notiz.php?edit="1"" die Variable edit abfragen. Es macht nur irgendwie keinen Sinn.
 
Zuletzt bearbeitet:

Chriss1987

me.drinkCoffee();

AW: PHP Weiterleitung (POST) an sich selbst in IF-Block

Hi,

hätte da noch nen anderen Vorschlag:
mit "switch"
PHP:
<html>
<head>
<title>Deine Notiz</title>
</head>
<body>

<?php

$inhalt = 'text.txt';

if (isset($_POST['action']))
    {
        $action = $_POST['action'];
    }
else
    {
        $action = "";
    }

switch ($action)
    {
        case "save":
            // Inhalt speichern
            $text = $_POST['Notizfeld'];
            $handle = fopen($inhalt , "w");
            fwrite($handle, $text);
            fclose($handle);
            echo "Erfolgreich eingetragen!!";
            ## da hier ein "break;" fehlt, arbeitet php den nächsten Block ab, also "default", da danach auch kein break zu finden ist, wird der Block "show" abgearbeiten, also der Inhalt angezeigt...
        
        default:
        case "show":
            // Inhalt der Datei nur anzeigen
            echo "<h2>Inhalt anzeigen:</h2>";
            echo "<textarea rows='15' cols='80' name='Notizfeld' readonly='readonly'>";
            readfile($inhalt);
            echo "</textarea>";

            // Kommt unter das ausgelesene Textfeld
            echo "<h3>Fehler entdeckt?</h3>";
            echo "<form action='notiz.php' method='post'>";
            echo "<input type='hidden' name='action' value='edit'>";
            echo "<input type='Submit' name='Edit' value='Ändern'>";
            echo "</form>";
            break;
        
        case "edit":
            // Inhalt der Datei bearbeiten
            echo "<h2>Inhalt bearbeiten:</h2>";

            echo "<form action='notiz.php' method='post'>";
            echo "<textarea rows='15' cols='80' name='Notizfeld'>";
            readfile($inhalt);
            echo "</textarea>";
            
            // Kommt unter das ausgelesene Textfeld
            echo "<h3>Änderungen speichern:</h3>";
            echo "<input type='hidden' name='action' value='save'>";
            echo "<input type='Submit' name='Save' value='Speichern'>";
            echo "</form>";
            break;
    }


?>

</body>
</html>

Achte bitte darauf, das ich jedem Formular noch ein hidden-Input mit dem Namen "action" und dem jeweiligen Wert hinzugefügt habe!

Schöne Grüße aus dem Sauerland!
Chriss
 

Antr4ks

Nicht mehr ganz neu hier

AW: PHP Weiterleitung (POST) an sich selbst in IF-Block

Kannst auch ne zeitabhängige Weiterleitung (bzw. ein Refresh) mit JavaScript machen.
So wäre ein Beispiel
Code:
	<script type="text/javascript">
	function Weiterleitung()
	{ window.location.href = '<?php echo($_SERVER['SCRIPT_NAME']); ?>'; }	
	window.setTimeout("Weiterleitung()", 4000);
	</script>

In PHP kannst du auch die nötigen Variablen einfach per GET übergeben. Oder du gibst bei den Formularen versteckte Felder ein, in denen steht, welches Formular das ist, und das Script dann weiß welches Formular bearbeitet werden soll.
 
Zuletzt bearbeitet:

Chriss1987

me.drinkCoffee();

AW: PHP Weiterleitung (POST) an sich selbst in IF-Block

Kannst auch ne zeitabhängige Weiterleitung (bzw. ein Refresh) mit JavaScript machen.
So wäre ein Beispiel
Code:
	<script type="text/javascript">
	function Weiterleitung()
	{ window.location.href = '<?php echo($_SERVER['SCRIPT_NAME']); ?>'; }	
	window.setTimeout("Weiterleitung()", 4000);
	</script>

In PHP kannst du auch die nötigen Variablen einfach per GET übergeben. Oder du gibst bei den Formularen versteckte Felder ein, in denen steht, welches Formular das ist, und das Script dann weiß welches Formular bearbeitet werden soll.

Hi,

dadurch würden aber keine Variablen per POST übergeben!
Klar könnte man die Werte auch per GET übergeben, aber dann könnte man direkt mit php (header()) weiterleiten!

Schröne Grüße aus dem Sauerland!
Chriss
 

eFoX

Reiche Zahnarztgattin

AW: PHP Weiterleitung (POST) an sich selbst in IF-Block

hallo ihr zwei/drei,
erstmal danke für die hilfe. um das thema zum abschluss zu bringen, habe ich an dem tag abends noch die lösung von enrico mit den funktionen umgesetzt, da gab es eure vorschläge noch nicht. da stimmte zwar ne kleinigkeit nicht, aber hab es angepasst und jetzt läuft es. zum besseren schutz, hab ich die gelesene/geschriebene txt datei noch außerhalb meines document root gepackt, somit also kein http zugriff möglich.

@chriss:
danke für die switch/case lösung. tatsächlich viel mir das noch ein, habe das mit dem fehlenden break der dann ins default führt nicht bedacht. aber echt ein guter workaround! (das mit den hidden sowieso), also danke dafür

@antr4ks:
wollte nicht auf get umstellen, sondern es mit post machen, demzufolge ginge eine header() wtrl. nicht. aber danke für das javascript, das müsste dann aber als get laufen damit ich den wert ('show') dran übergeben könnte.

vielen dank,
efox. ende.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben