Mit <select><option> verschiedene Tabellen in einer Datenbank füllen

Mahatmas

Mitglied
Hallo zusammen,

stehe hier grad vor einem Problem.
Ich hab eine Auswahl mit <select> programmiert und möchte bei einer Newseingabe, somit die Tabelle einer Datenbank bestimmen, in der die News abgelegt werden.

Hier mein Code:
HTML:
<?
include ("mysql.inc");

function PostVar($variablen_name)
{
	$ergebnis = $_POST[$variablen_name];
	if (get_magic_quotes_gpc())
	{
		$ergebnis = stripslashes($ergebnis);
	}
	return trim($ergebnis);
}

function format ($text)
{
	$ergebnis = htmlentities($test);
	$ergebnis = str_replace("\r\n\r\n","<br><br>",$text);
	return $ergebnis;
}

$ueberschrift = PostVar("ueberschrift");
$eintrag = PostVar("eintrag");
$autor = PostVar("autor");
$rubrik = PostVar("rubrik");
$status = $_POST['status'];


$anzeigen = true;
$fehler = "";
if (!empty($status)) {	
		if (empty($eintrag))
		{
			$fehler .= "<center> Der Eintrag ist leer </center>";
		}
		if (empty($autor))
		{
			$fehler .= "<center> Bitte tragen Sie einen Namen ein </center>";
		}
		if (empty($ueberschrift))
		{
			$fehler .= "<center> Bitte tragen Sie eine Überschrift ein </center>";
		}
		if ($rubrik ==0 )
		{
			$fehler .= "<center> Bitte tragen Sie eine Rubrik ein </center>";
		}
	}
?>

<table border = "0" style = "width: 500px">

<tr>
<td>
	<h1 style = "text-align: center">Newseingabe</h1>
	<br>
	<form action = "newseingabe.php" method="post">
	<p>
	<small><b>Überschrift:</b></small><br>
	<input style = "color: #fff; background-color: #178822; width: 500px" type = "text" maxlength = "50" name = "ueberschrift" value="<?htmlentities($ueberschrift)?>">
	</p>
	<p>
	<small><b>Ihr Eintrag (maximal <?=$grenzwert ?> Zeichen): </b></small><br>
	<textarea style = "color: #fff; background-color: #178822; width: 500px; height: 240px" name="eintrag"><?=htmlentities($eintrag)?></textarea>
	</p>
	<p>
	<small><b>Ihr Name:</b></small><br>
	<input style = "color: #fff; background-color: #178822; width: 500px" type = "text" maxlength = "50" name = "autor" value="<?htmlentities($autor)?>">
	</p>
	<p>
	<table>
	<tr>
	<td><small><b>Rubrik:   </b></small></td>
  
	<td><select name="rubrik" style="width: 150px">
    	<option value="0">Rubrik ausw&auml;hlen</option>
		<option value="1">Aktive</option>
		<option value="2">Jugend</option>
		</select>
	</td>
	</tr>
	</table>
	<br>
	<input type = "submit" name = "status" value = "Eintragen" style = "color: #fff; background: #178822">
	</p>
	</form>
	
</td>
</tr>
<?
	if ($fehler)
	{
		$anzeigen = false;
		echo "<p><b>Leider konnte ihr Eintrag nicht angenommen werden:</b></p>";
		echo "<ul>$fehler</ul>";
	}
	elseif($status == "Eintragen")
	{
			$query = "INSERT INTO news SET
			datum = now(),
			ueberschrift = '".addslashes($ueberschrift)."',
			eintrag = '".addslashes($eintrag)."',
			autor = '".addslashes($autor)."',
			rubrik = '".addslashes($rubrik)."'
			";
			$sql = mysql_query($query) or die(mysql_error());
	}
	
// $rubrik = "2"; // um die Eingabe in der Tabelle "jugend" zu testen

	switch( $rubrik )
	{
		case "1":
			$query = "INSERT INTO aktive SET
			datum = now(),
			ueberschrift = '".addslashes($ueberschrift)."',
			eintrag = '".addslashes($eintrag)."',
			autor = '".addslashes($autor)."'				
			";
			$sql = mysql_query($query) or die(mysql_error());
		unset($ueberschrift,$eintrag,$autor);
		break;

		case "2":
			$query = "INSERT INTO jugend SET
			datum = now(),
			ueberschrift = '".addslashes($ueberschrift)."',
			eintrag = '".addslashes($eintrag)."',
			autor = '".addslashes($autor)."'				
			";
			$sql = mysql_query($query) or die(mysql_error());
		unset($ueberschrift,$eintrag,$autor);
		break;	
	}	
	?>

</table>

Nun wird in der Tabelle "news" alles ("ueberschrift", "autor" und "eintrag") richtig abgelegt. "rubrik" ist leer! Wieso?
In der gewünschten weiteren Tabelle (aktive oder jugend) wird nichts gespeichert., da wohl die Variable "$rubrik" leer ist.

Wenn ich z.B. "$rubrik = "2"; vor switch($rubrik) schreibe, so erstellt er zwar einen neuen Eintrag in der "jugend"-Tabelle, doch die Werte für "ueberschrift", "autor" und "eintrag" sind leer.

Wo löscht der mir die Werte? Und wieso funktioniert die "Übergabe" des Wertes für "$rubrik" aus der <select>-Anweisung nicht?

Hoffe ich konnte das Problem gut schildern. Wäre echt super, wenn mir da einer helfen könnte.

Gruß,

Mahatmas
 
Hi,

also um herauszufinden was eigentlich passiert würde ich zum einen erst einmal an den Anfang der Seite den folgenden Befehl setzen um zu sehen: Was wird alles übergeben?

PHP:
var_dump( $_POST );

Außerdem wäre es interessant welchen Wert die Variable "$rubrik" nach dem Aufruf von "PostVar" hat. Evtl. hat diese Methode was damit zu tun.

Übrigens gibt es für die Sicherheit von MySQL Statement Parametern eine extra Methode:
http://us.php.net/manual/en/function.mysql-real-escape-string.php

Gruß
Manuel.
 
Ah ok, danke...

Jetzt weiß ich, dass der mir keine Werte vom html-Teil in den php-Teil übergibt.
Der Grund lag daran, dass ich hier:

HTML:
<form action = "newseingabe.php" method="post">

ganz einfach die falsche Datei aufruf und er mir so die Werte nicht übergeben hat.

Ruf jetzt wieder die gleiche Datei auf und jetzt passts.

Danke...
 
Zurück