• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formularauswertung im selben Dokument

GW2BDA

Neues Mitglied
hallo leute.

ich möchte mit php mein formular direkt im gleichen dokument auswerten, indem auch das formular selbst steht.. geht das irgendwie???
 
Werbung:
ja geht. Schick beispielsweise im Formular ein Hidden Feld mit wie Name=action, value=processformdata und im PHP schaust nach diesem Wert. Ist er korrekt gesetzt, dann wertest die Daten aus und schickst das Ergebnis zurück. Falls nicht, dann schick das Formular zum browser:
PHP:
<?php $action= isset($_POST['action']) ? $_POST['action'] : 'showform'; 

if ( $action == 'processformdata') {
   //process form here 
} else { 
?> 
<DOCUMENT .....>
.... formulardaten
</html>
<?php } ?>
Wenn die Formulardaten nicht korrekt waren, dann kannst die wieder mit einer Fehlermeldung zusammen im Formular zurücksenden und der Benutzer muss nicht alles neu eingeben.
 
iwie bekomm ich das nicht hin... hier einfach mal mein code:

Code:
<form method="post">
		<table border="0">
			<tr><td>
			<select name="news" size="1">
				<option selected value="wert">Wert</option>
				<option value="wert2">Wert 2</option>
			</select></td><td><input type="submit" value="Anzeigen" /></td></tr>
		</table>
	</form>

<?php
$news = isset($_POST["news"]);

if ($news = "wert")
{ include ("wert.php"); }
else if ($news = "wert2")
{ include ("wert2.php"); }
?>

es muss ja denn iwas falsch sein... aber was...
 
Werbung:
So ziemlich alles. ;)

Hier ein Beispiel:

PHP:
<?php

$formSubmitted = false;

if (isset($_POST['action']) && $_POST['action'] === 'send') {
    $formSubmitted = true;
}

?><!DOCTYPE html>

<html lang="de">

    <head>
        <meta charset="utf-8" />
        <title>Demo</title>
    </head>

    <body>

        <?php if ($formSubmitted) : ?>

        <p>Folgende Daten wurden gesendet:</p>
        <pre><?php print_r($_POST); ?></pre>

        <?php else : ?>

        <form method="post" action="">
            <p>Name: <input name="name" type="text" /></p>
            <p>Homepage: <input name="homepage" type="text" /></p>
            <p>
                <input type="hidden" name="action" value="send" />
                <input type="submit" value="Abschicken" />
            </p>
        </form>

        <?php endif; ?>

    </body>

</html>
 
ich hab das mal ausprobiert... war aber auch nicht wirklich, was ich wollte... ich habs jetzt mal mit einer switch-case-anweisung versucht... jetzt wird mir aber immer beim testen nur angezeigt "Notice: Undefined index: news in C:\xampp\htdocs\weyose\index.php on line 71"...

der plan ist ja, dass über das listenfeld die news ausgewählt werden und dann über das programm inkludiert werden, damit man sie lesen kann...
 
Dann fragst du den Wert einer Collection ab, die nicht gesetzt ist, beispielsweise $x= $_POST['NoSuchField']. mermshaus hat dir doch im Beispiel gezeigt, wie du alle übermittelten Parameter ausgeben kannst. Wenn es nicht ist, was du wolltest, dann hast du versäumt, es zu dem zu machen, was es sein soll. Technisch gesehen haben wir dir für die ursprüngliche Fragestellung alle notwendigen Hinweise gegeben.
 
Werbung:
error_reporting(E_ALL); zeigt auch mögliche Probleme welche du ohne nicht mitbekommen würdest.
zB bekommst du keinen Error wenn eine Variable verwendet wird die nicht definiert is.

PHP:
$x = $_POST['x'];
$z = $_POST['z'];
if($x<>0)
{
    echo $z;
}
else echo $y;

Hier bekommst du definitiv eine Notice da $y nicht definiert wurde. wenn du vor der Abfrage zB. $y=0; setzt, nicht.

Unabhängig davon wissen wir ja nicht was du in Zeile 71 tust.
 
achso... ja sry... hab ich vergessen zu schreiben. in der zeile definiere ich $news... kann man mit ieiner funktion verhindern, dass die fehlermeldung ausgegeben wird???
 
Werbung:
das ändert gar nichts... in besagter zeile steht im script $news = $_POST["news"]; wenn das formular noch nicht abgesendet wurde, wird die fehlermeldung angezeigt... interher natürlich nicht mehr... ich geb euch einfach mal das neue script:

Code:
<form method="post" action="">
		<table border="0">
			<tr><td>Bitte wählen Sie eine News aus:</td>
				<td>
					<select name="news">
<option value="leer" selected></option>
<option value="forum">Forum</option>
<option value="endlichonline">Endlich Online!</option>
					</select>
				</td>
				<td>
					<input type="submit" value="Anzeigen" />
				</td>
			</tr>
		</table>
	</form>
</div>
<?php
$news = "";
$news = $_POST["news"];

if (isset($news))
{
	switch($news)
	{
		case "endlichonline":
			include("page/news/endlichonline.php");
			break;
		case "forum":
			include("page/news/forum.php");
			break;
		case "leer":
			echo "<div class='content'>
					<h1>News auswählen!</h1>
					<div class='text'>
						<p>Bitte wählen Sie eine News in der oberen Auswahlliste aus, um sie zu lesen!</p>
					</div>
				</div>";
			break;
		default:
			echo "<div class='content'>
					<h1>News auswählen!</h1>
					<div class='text'>
						<p>Bitte wählen Sie eine News in der oberen Auswahlliste aus, um sie zu lesen!</p>
					</div>
				</div>";
	}
}
else
{ 
	echo "<div class='content'>
			<h1>News auswählen!</h1>
			<div class='text'>
				<p>Bitte wählen Sie eine News in der oberen Auswahlliste aus, um sie zu lesen!</p>
			</div>
		</div>";
}
?>
 
Also ich muss jetz aucheinmal meinen Senf dazugeben ;)
Ich mache solche Formulare immer so, dass ich den submit buttons namen gebe. z.B. so:
Code:
<input type="submit" value="Eintrag Speichern" name="save">
<input type="submit" value="Vorschau" name="Preview">

Das ganze (finde ich) etwas schöner gelöst, da man keine hidden Felder oder ähnliches auslesen muss.
Außerdem hat es noch den Vorteil, dass man zwischen verschiedenen situationen unterscheiden kann.

Wenn du jetzt nähmlich z.B. ein Input abfrägst, welches der Benutzer ohne Inhalt lässt, dann kommt er einfach wieder auf die Seite ohne irgendeine Fehlermeldung


Tobias :)
 
Werbung:
Code:
<select name="news">
News ist ein Array und muss news[] heißen. Wärst dem Vorschlag von mermshaus ganz am Anfang der Diskussion gefolgt und hättest das Formular mit php print_r($_POST) ausgegeben, dann hättest sofort gesehen, an welcher Stelle du Probleme hast. Es nervt, wenn Hinweise gegeben werden, und die Hilfesuchenden hören nicht zu. Man verliert dann die Lust, weiter helfen zu wollen.
 
Code:
<select name="news">
News ist ein Array und muss news[] heißen. Wärst dem Vorschlag von mermshaus ganz am Anfang der Diskussion gefolgt und hättest das Formular mit php print_r($_POST) ausgegeben, dann hättest sofort gesehen, an welcher Stelle du Probleme hast. Es nervt, wenn Hinweise gegeben werden, und die Hilfesuchenden hören nicht zu. Man verliert dann die Lust, weiter helfen zu wollen.

tut mir leid... manchmal lese ich schneller als ich denke... ich bin noch recht neu in php... kannst du mir das mit dem array nochmal erklären??

edit:
wohl kaum, er definiert wohl als $news = $_POST['news'] oder ähnlich und sendet das Feld news aber nicht im formular. Verhindern kann man das durch
PHP:
$news = isset($_POST['news']) ? $_POST['news'] : '';

das funktioniert wunderbar. danke. und natürlich auch an alle anderen, die sich mit mir beklagen durften :D
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben