news script fehler

DieterWeber

Mitglied
hoi
ich bastel gerade an nem newsscript und da hab ich ein problem
wenn man das formular abschickt werden variablen in die datenbank geschrieben, das is ja auch gut so, wenn man jetzt aber die seite refresht oder sich neu einloggt, wird immer die zuletzt eigegebene news noch einmal gepostet, weil die variablen ja npch gesetzt sind. wie kann ich das verhindern. ich post hier gerade nochmal den code

PHP:
<html>
</head>
<title>.:HmH.Member.Area:.</title>
<body>
<form action"<?=$PHP_SELF?>" method="post">
<br>
Titel der News
<br>
<input type="text" name="newstitle" maxlength="40">
<br>
<br>
Newstext bitte hierrein:
<br>
<textarea name="newstext" cols=40 rows=4 wrap=hard>
</textarea>
<br>
<br>
Hier bitte related Links eingeben:
<br>
<input type="text" name="related">
<br>
<br>
<br>
<input type="submit" name="neueintrag" value="Abschiggen">
</form>
<?
if (!($verbindung = mysql_pconnect ("localhost", "*********", "******"))) {
	echo("Verbindungsversuch fehlgeschlagen<P>");
	exit();
}
mysql_select_db("test");
if (!$neuintrag) {
		$newstitle = addslashes($newstitle);
		$newstext = addslashes($newstext);
		$related = addslashes($related);

    $sqlkommando = "INSERT INTO news (title, text1) VALUES ( '$newstitle', '$newstext')";    
    mysql_query($sqlkommando) or die("Error: " . mysql_error());
    echo "Eintragung erfolgreich hinzugefügt";
	unset($neueintrag);
}
?>
</body>
</html>
 
mach einfach 2 Dateien draus: eine, die die News anzeigt, und eine die die News in die Datenbank schreibt. Nach dem Eintragen in die Datenbank kannst Du über header("Location: anzeige.html"); wieder auf die Anzeige wechseln.
Wird die Anzeige refresht, wird nicht automatisch was in die DB geschrieben, sondern nur bei Klick auf Submit. ;)

Dunsti
 
der Befehl header("Location: datei.html"); hat die gleiche Funktion, wie eine Weiterleitung per META-Tag in HTML. Soll heißen: das aktuelle Script wird beendet, und es wird zur "datei.html" weitergeleitet.

Allerdings darf vor diesem Befehl KEINE AUSGABE AN DEN BROWSER gesendet werden (also kein echo oder print) sonst kommt es zu einer Fehlermeldung.

Dunsti
 
gibts noch ein anderen weg du machst um die gesamte sqlanfrage ne if -abfrage und als bedienung scheibeste dann

if( isset($test) use. )

{

sqleintrag

}

nun wird nur in die datenbank eingetragen wenn auch die textfelder ausgefüllt sind , das heißt keine leereinträge.

hoffe das meinteste :)
 
-

nun wird nur in die datenbank eingetragen wenn auch die textfelder ausgefüllt sind , das heißt keine leereinträge.
Das ist nicht ganz richtig. Wenn man ein leeres Textfeld abschickt und mit isset() überprüft, dann zeigt er keinen Fehler an, da die Varialbe ja existiert, jedoch leer ist.
In diesem Fall muss man die Variable mit empty() überprüfen, um somit heraus zu finden, ob Informationen vorhanden sind.
 
ich nehm immer isset() und des klappt trotzdem immer :(

mit ausgefüllt meine ich definiert , und sobald es definiert ist, wird es einegtragen.

und wenn man ein leeres feld abschickt dann ist dies feld ja nicht definiert , also wird auch nich eingetragen!
 
-

Wenn man ein leeres Feld abschickt, hat man eine leere Variable. Diese Variable ist vorhanden und gibt bei einer Überprüfung mit isset() , true zurück.
 

Neue Beiträge

Zurück