Hallo liebes Forum,
ich habe mal wieder ein Problem, an dem ich schon lange (2 Tage) herumtüftel - erfolglos.
Vielleicht kann mir jemand helfen?
Das Problem ist der INSERT-Befehl, der nicht funktioniert. Alle Datenfelder sind korrekt gefüllt, was ich über eine ganze Reihe von ECHO-Befehlen überprüft habe.
Ich habe auch versucht den INSERT-Befehl mit einer "Minimal-Konfiguration" zu testen, ebenfalls erfolglos.
Eine Fehlermeldung erscheint nicht, das Programm läuft einfach durch, ohne den Insert-Befehl auszuführen.
Vermutlich ist es ein logisches Problem in MySQL, aber welches?
Hier meine Script:
PHP
<html>
<?php
header('Content-Type: text/html; charset=ISO-8859-1');
// include "entwickler.inc.php";
?>
<head>
<link rel="stylesheet" type="text/css" href="rechnungen.css">
<script type="text/javascript">
</script>
<?php
if (isset($_POST['gesendet']))
{
$conn = @mysqli_connect("localhost","root", "");
if ($conn == FALSE) {
echo "<p>DB-Verbindung ist fehlgeschlagen</p>\n";
exit();
}
mysqli_select_db($conn, "firma");
SESSION_START();
$resdatum1 = $_POST['rd'];
$_SESSION['resdatum1'] = $resdatum1;
$resdatum2 = "'" . $_POST['rd'] . "'";
$_SESSION['resdatum2'] = $resdatum2;
$zeit = $_POST['rz'];
$_SESSION['zeit'] = $zeit;
$personen = 0;
$betrag = 0;
/* Tabellen-Beginn */
echo "\n\n<table border>"
. "<tr>"
. "<td>Datum</td>"
. "<td>Zeit</td>"
. "<td>Raum</td>"
. "<td>Tisch</td>"
. "<td>AnzPers</td>"
. "<td>RgBetrag</td>"
. "</tr>";
/* Reservierungen lesen */
$sql = "select * from reservierungen";
$sql .= " where resdatum = $resdatum2";
$sql .= " and reszeit = $zeit";
$sql .= " and resbetrag > 0";
$sql .= " order by reszeit, resraum, restisch";
$res = mysqli_query($conn, $sql);
/* Anzahl Datensätze ermitteln und ausgeben */
$num = mysqli_num_rows($res);
If ($num>0)
{
echo "$num gezahlte Rechnungen (Betrag > 0) gefunden";
$_SESSION['num'] = $num;
/* Alle vorhandenen Datensätze */
while ($dsatz = mysqli_fetch_assoc($res))
{
$id = $dsatz['res_id'];
$personen = $personen + $dsatz['resanzpers'];
$betrag = $betrag + $dsatz['resbetrag'];
echo "\n\n<tr>"
. "<td><input name='rd[$id]' value='" . $dsatz['resdatum'] . "' size='10' /></td>"
. "<td><input name='rz[$id]' value='" . $dsatz['reszeit'] . "' size='10' /></td>"
. "<td><input name='ra[$id]' value='" . $dsatz['resraum'] . "' size='10' /></td>"
. "<td><input name='ti[$id]' value='" . $dsatz['restisch'] . "' size='10' /></td>"
. "<td><input name='ap[$id]' value='" . $dsatz['resanzpers'] . "' size='10' /></td>"
. "<td><input name='rb[$id]' value='" . $dsatz['resbetrag'] . "' size='10' /></td>"
. "</tr>";
}
echo "</table>";
echo "</form>";
}
// die folgenden 'echo-datenfelder" werden über SESSION_START an den Include-Script übergeben
echo "<br />";
echo "$num bezahlte Rechnungen gefunden";
echo "<br />";
echo "<br />";
echo "$personen Summe aller Personen";
echo "<br />";
$_SESSION['personen'] = $personen;
echo "<br />";
printf ("%.2f", $betrag);
echo " Euro ist der Gesamtbetrag aller Rechnungen";
echo "<br />";
$_SESSION['betrag'] = $betrag;
echo "<br />";
$einzelwert = $betrag / $num;
printf ("%.2f", $einzelwert);
echo " Euro ist der durchschnittliche Rechnungswert";
echo "<br />";
echo "<br />";
$durchschnitt = $betrag / $personen;
printf ("%.2f", $durchschnitt);
echo " Euro ist der durchschnittliche Pro-Kopfverzehr";
echo "<br />";
echo "<br />";
$sql2 = include "statistik_aufbauen.php";
mysqli_close($conn);
}
else
{
echo "Bisher wurden keine gezahlten Rechnungen gefunden ";
echo "<br />";
}
echo "<p><font color='#ff0000'>";
echo "Die Dateneingabe wurde erfolgreich verarbeitet, weitere Auswahl?";
echo "</font></p>";
?>
</head>
<body>
<h2>gezahlte Rechnungen nach Datumsauswahl und Zeit-KZ</h2>
Reservierungsdatum und Zeit-KZ eingeben und Daten absenden</p>
<form action = "auswertung_rechnungen.php" method = "post">
<p><input name="rd" value="<?=date("Y-m-d")?>" /> Reservierungsdatum eingeben</p>
<p><input name="rz" /> Reservierungszeit 1=Mittag, 2=Abends frueh, 3=Abends spaet</p>
<p><input type="submit" name="gesendet" />
<input type="reset" /></p>
</form>
</body>
</html>
Alles anzeigen
Hier der 2. Code:
PHP
<html>
<?php
header('Content-Type: text/html; charset=ISO-8859-1');
// include "entwickler.inc.php";
?>
<head>
<?php
echo "die folgenden 'echo-Befehle' habe ich zur Fehlersuche eingebaut";
echo "<br />";
echo $_SESSION['resdatum2'];
$dat = $_SESSION['resdatum2'];
echo " dat: " . $dat;
echo "<br />";
echo $_SESSION['zeit'];
$zeit = $_SESSION['zeit'];
echo " zeit: " . $zeit;
echo "<br />";
echo $_SESSION['num'];
$num = $_SESSION['num'];
echo " num: " . $num;
echo "<br />";
echo $_SESSION['personen'];
$pers = $_SESSION['personen'];
echo " pers: " . $pers;
echo "<br />";
echo $_SESSION['betrag'];
$betrag = $_SESSION['betrag'];
echo " betrag: " . $betrag;
echo "<br />";
echo "hier ist das Statistik-Ende";
echo "<br />";
$sql2 = "select * from statistik";
$sql2 .= " where stat_datum = $resdatum2";
$sql2 .= " and stat_zeit = $zeit";
$res2 = mysqli_query($conn, $sql2);
/* Anzahl Datensätze ermitteln und ausgeben */
$num2 = mysqli_num_rows($res2);
echo "num2: " . $num2;
echo "<br />";
If ($num2 == 0); /* Datensatz fehlt, dann schreiben */
{
echo "resdatum2 aus dem select-befehl für statistik: " . $resdatum2;
echo "<br />";
// der folgende Befehl funktioniert nicht - keine Ahnung warum!
$sql2 = "insert into statistik
. (stat_datum, stat_zeit, stat_anztische, stat_anzgaeste, stat_umsatz) values ('"
. $dat . "','"
. $zeit . "','"
. $num . "','"
. $pers . "','"
. $betrag . "')";
}
// den folgenden Befehl (aktiviert) habe ich auch probiert, klappt auch nicht!
// $sql2 = "insert into statistik (stat_datum) values ('$resdatum2')";
echo "Die Statistikdaten wurden verarbeitet : " .$num2;
echo "<br />";
?>
</head>
<body>
</body>
</html>
Alles anzeigen
... und hier die Bildschirmausgabe:
ich danke Euch vielmals für die Unterstützung.
mfG Hans-Werner