SQL-Query INSERT: komischer Fehler

Kyoko

Erfahrenes Mitglied
Hi,

ihc habe heute für eine Homepage ein kleines PHP-Programm geschrieben, welches Werte aus einer Datenbank abfragt und auch Werte schreiben kann. Zum schreiben habe ich ein Formuler gemacht ,welches die Werte an ein PHP-Programm übergibt, welches für das Schreiben zuständig ist. Zum Schreiben habe ich folgende Felder:
Beschreibung
Kunde
Erfüllungsdatum
Gesamtbetrag
Bezahlt
Ausständig

Schreibe ich jetzt aber etwas, so sind alle Felder bis auf Gesamtbetrag genau so. wie sie sein sollte, also die ins Formular eingetragenen Werte stehen in der Tabelle, aber bei Gesamtbetrag steht nie der eingetragene Werte sonder einfach Gesamtbetrag.

Hier sind mal meien Codes:

Die Datei read.php
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table border="1">
<tr><th>Beschreibung</th><th>Kunde</th><th>Erfuellungsdatum</th><th>Gesamtbetrag</th><th>Bezahlt</th><th>Ausstaendig</th><th>Auftragsnummer</th></tr>
<?php

$soll_user = "spct";
$soll_pw = "starlight#";
$user = $_POST['username'];
$pw = $_POST['password'];

function ReadMySQL()
{
	$host = "localhost";
	$database = "spct";
	$mysql_user = "spct";
	$mysql_pw = "spctmysql";
	$conn = mysql_connect($host, $mysql_user, $mysql_pw);
	mysql_select_db($database, $conn);

	$sql = "select * from auftraege";
	$erg = mysql_query($sql, $conn);
	
	while ($row = mysql_fetch_object($erg))
	{
		print "<tr><td>".$row->Beschreibung."</td><td>".$row->Kunde."</td><td>".$row->Erfuellungsdatum."</td><td>".Gesamtbetrag."</td><td>".$row->Bezahlt."</td><td>".$row->Ausstaendig."</td><td>".$row->Auftragsnummer."</td></tr>";
	}
}

if ($user == $soll_user)
{
	if ($pw == $soll_pw)
	{
		ReadMySQL();
	}
}

?>
</table>
<p>&nbsp;</p>
<hr>
<p><strong>Neuen Auftrag erfassen:</strong></p>
<form action="write.php" method="get">
Beschreibung:<br>
<input type="text" name="beschreibung" size="100"><br>
Kunde:<br>
<input type="text" name="kunde" size="100"><br>
Erfuellungsdatum:<br>
<input type="text" name="datum" size="30"><br>
Gesamtbetrag:<br>
<input type="text" name="betrag" size="30"><br>
Bezahlt:<br>
<input type="text" name="bezahlt" size="30"><br>
Ausstaendig:<br>
<input type="text" name="ausstaendig" size="30"><br>
<br>
<input type="submit">
</form></p>
</body>
</html>

und die Datei write-php
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php

$beschreibung = $_POST['beschreibung'];
$kunde = $_POST['kunde'];
$datum = $_POST['datum'];
$betrag = $_POST['betrag'];
$bezahlt = $_POST['bezahlt'];
$ausstaendig = $_POST['ausstaendig'];

$host = "localhost";
$database = "spct";
$mysql_user = "spct";
$mysql_pw = "spctmysql";

$conn = mysql_connect($host, $mysql_user, $mysql_pw);
mysql_select_db($database, $conn);

$sql = "insert into `auftraege` (`Beschreibung`, `Kunde`, `Erfuellungsdatum`, `Gesamtbetrag`, `Bezahlt`, `Ausstaendig`) values ('".$beschreibung."', '".$kunde."', '".$datum."', '".$betrag."', '".$bezahlt."', '".$ausstaendig."')";
$erg = mysql_query($sql, $conn);

?>

<script type="text/javascript">
history.back();
</script>
</body>
</html>

Ich danke euch im Vorraus für eure hilfe und verbleibe mit freundlichen Grüßen
M. Mayerl
 
Also dein Problem ist das er die Werte nicht in die DB einfügt, versteh ich das richtig?

Also ich seh kein fehler beim groben überblicken, jedoch warum definierst du $sql = INSERT INTO....mach doch sofort $sql = mysql_query(INSERT INTO....);
 
Füge am Anfang deines Skriptes mal ein error_reporting( E_ALL ) ein. Dann zeigt dir PHP auch alle Fehler und du würdest bei deiner Funktion zum lesen der Daten sehen, dass
PHP:
while ($row = mysql_fetch_object($erg)) {
  
  print "<tr><td>".
             $row->Beschreibung.
          "</td><td>".
             $row->Kunde.
          "</td><td>".
             $row->Erfuellungsdatum.
          "</td><td>".
             Gesamtbetrag.    // Hier liegt der Fehler
          "</td><td>".
             $row->Bezahlt.
          "</td><td>".
             $row->Ausstaendig.
          "</td><td>".
             $row->Auftragsnummer.
          "</td></tr>";
}
falsch ist, da Gesamtbetrag hier von PHP als Konstante interpretiert werden würde.
Sicher kannst du dir denken dass du hier einfach ein "$row->Gesamtbetrag" draus machen mußt.

Gruß!
 
kleiner Tip am rande schreib die datnbankverbindungsdaten in eine extra php datei und include sie einfach, so hast du nicht in jedem script deine daten stehen ;)

und setzt nach dem mysql_query() or die(mysql_error()); falls du mal ausversehen ein Fehler in sql - satz einbaust sagt er dir sofort wo der Fehler ist ;).
 
Zurück