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

Wer sieht den Fehler??

Jeremygolf

Mitglied
Hallo,

ich kann nicht herausfinden wo der feler liegt :S aber die Daten werden einfach nicht in die DB geschrieben.

Code:
<?php
if ($_POST['titel'] != "") {
include_once('connect_to_mysql.php');


$numRows = mysql_num_rows($sql);


$id = $_POST["id"];
$titel = $_POST["titel"];
$text = $_POST["text"];
$date = $_POST["date"];
$sql = mysql_query("SET NAMES 'utf8'");


$sql_insert = mysql_query("INSERT INTO newsletter_body VALUES ('$id', '$titel', '$text', now()')") or die (mysql_error());
echo '<script type="text/javascript">alert("Dein Newsletter wurde erfolgreich versendet.");</script>'; 
}
?>


form action="newsletter.php" method="post" enctype="multipart/form-data">
			Titel: <br /> <input class="titel" name="titel" type="text" value="<?php echo $titel; ?>" /><br />
			Text: <br /> <textarea name="text" cols="35" rows="10" value="<?php echo $text; ?>"></textarea><br /> 
			<input class="button" name="submit" type="submit" value="Speichern" /><br/><br/>
			</form>
 
Auf den ersten Blick würde ich sagen: Dein Form-Tag ist unvollständig.
Gibt dein die() irgendwas aus?
Bekommst du leere Einträge oder gar keine Einträge in der Datenbank?

Alles so Fragen ... hilfreich ist sicher ein var_dump($_POST) bevor du die Post-Daten in deine Variablen schreibst.

Dass dein Skript nicht läuft, hat übrigens auch einen großen Vorteil: So wie es konzipiert ist, wäre es, wenn es denn funktionieren würde, ein scheunengroßes Einfallstor für Menschen, die sich mal auf deiner Datenbank umsehen wollen.
Insofern:
Wenn es sich bei der Id in deiner Datenbank um eine natürliche Zahl handelt, übergib die Daten so:

$id = (int) $_POST["id"];

Für Strings und alles andere gibt es z.B. mysql_real_escape_string(), die zum Beispiel auch verhindert, dass ein Apostroph in einem Datenfeld den String im sql beendet. Darüberhinaus erschwert die Funktion auch böswillige Hacks, denn derzeit wird alles, was man bei dir ins Formular schreibt blind an die Datenbank zur Ausführung weitergeleitet. Auch wenn jemand SQL-Code eingibt ...
 
PHP:
if ($_POST['titel'] != "")
Falsch! Richtig ist:
PHP:
if (isset($_POST['titel']))
Was soll
PHP:
$numRows = mysql_num_rows($sql);
Und dazu
PHP:
mysql_query("INSERT INTO newsletter_body VALUES ('$id', '$titel', '$text', now()')") or die (mysql_error());
müsste dir eigentlich eine Fehlermeldung ausgegeben werden.
 
PHP:
if ($_POST['titel'] != "")
Falsch! Richtig ist:
PHP:
if (isset($_POST['titel']))
Was soll
PHP:
$numRows = mysql_num_rows($sql);
Und dazu
PHP:
mysql_query("INSERT INTO newsletter_body VALUES ('$id', '$titel', '$text', now()')") or die (mysql_error());
müsste dir eigentlich eine Fehlermeldung ausgegeben werden.

Es gibt auch eine Fehlermeldung nämlich diese:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '')' at line 1
 
Schön, dass du jetzt erst mit der Fehlermeldung kommst :(

MySQL sagt dir doch, wo das Problem zu finden ist. Ich würde mal auf die ) und ' achten
 
Zurück
Oben