Beiträge von hpuettma
-
-
zur Erklärung: ich möchte die Daten aus $tag, $monat, $jahr im Select-Option-Feld AKTUELL vorgeschlagen bekommen, habe aber keine Ahnung, wie der Option-Befehl aussehen muss.
Beispiel:
(nimm bitte heute als Vorauswahl: September)
<select name="monat" size="1">
<option> select-select=date("m")</option> ODER SO ÄHNLICH !!
<option> Januar </option>
<option> Februar </option>
<option> März </option>
....Hallo Sailor, ich habe mir Deine Antwort erneut durchgelesen. Gibt es denn die Möglichkeit über PHP dem HTML-Formular vor der Auswahl bereits die Voreinstellung date("m") mitzugeben? Wenn ja, wie denn?
-
-
Hallo liebes Forum,
ich habe mal wieder eine Frage. Meine Google-Versuche haben leider nicht viel gebracht.
Ein vermutlich simples Problem, das ich aber nicht lösen kann.
Ich habe ein HTML-Formular mit einer Select-Option Anweisung (als Beispiel die Kalendermonate im Langtext), die ich auswählen kann. Es wird, wie üblich, der erste Eintrag, nämlich der Januar vorausgewählt. Ich möchte aber den AKTUELLEN Monat vorgeschlagen haben. Das Drop-Down für den Monat ist ja noch vertretbar, für die Kalendertage 1-31 eher nicht! Das wäre mein zweites Problem. Gibt es einen besseren Lösungsansatz, um den TAG, den MONAT und das JAHR zur Auswahl anzubieten, dabei aber das Tagesdatum in drei Feldern vorzubelegen?Danke für Eure freundliche Unterstützung.
hier ein Code-Beispiel:PHP
Alles anzeigen<html> <?php header('Content-Type: text/html; charset=utf-8'); ?> <head> <link rel="stylesheet" type="text/css" href="../formatierung.css"> <script type="text/javascript"> </script> </head> <?php $tag = date("d"); $monat = date("m"); $jahr = date("Y"); //echo "Tag: " . $tag . " Monat: " . $monat . " Jahr: " . $jahr; ?> <body> <h2>Zeiterfassung</h2> <form action = "ze_verwalten_b.php" method = "post"> <b>Erfassungsmonat auswählen - vorbelegen mit aktuellem Monat:</b></br></br> <select name="monat" size="1"> <option> Januar </option> <option> Februar </option> <option> März </option> <option> April </option> <option> Mai </option> <option> Juni </option> <option> Juli </option> <option> August </option> <option> September </option> <option> Oktober </option> <option> November </option> <option> Dezember </option> </select> <p><input type="submit" name="gesendet" /> <input type="reset" /></p> </form> </body> </html>
-
-
Hallo liebes Forum, aus der Überschrift läßt sich mein Problem gut erklären.
Der Zugriff auf die Tabelle funktioniert, der Echo-Befehl bestätigt das.
Ein Datenfeld soll gespeichert und später abgefragt werden.
Der Speicherbefehl funktioniert nicht, obwohl er unmittelbar nach dem o.g. Echo-Befehl erfolgt.
Was mache ich falsch, ich suche jetzt schon ein paar Stunden.Die MySQL-Tabelle habe ich überprüft und auch mit mehreren verschiedenen Tabellenzeilen ausprobiert.
PHP
Alles anzeigen<html> <?php header('Content-Type: text/html; charset=utf-8'); // Programm: Beispiel ?> <head> <link rel="stylesheet" type="text/css" href="formatierung.css"> <script type="text/javascript"> </script> <?php $con = mysqli_connect("","root"); mysqli_select_db($con, "restaurant"); /* SQL-Abfrage vorbereiten */ $resdatum1 = '2017-07-31'; $resdatum2 = "'" . $resdatum1 . "'"; $restisch = 4; $rt_zeitbis = 0; /* SQL-Abfrage ausführen */ $sql = "select rt_datum, rt_zeitbis, rt_tisch from restische"; $sql .= " where rt_datum = $resdatum2"; $sql .= " AND rt_tisch = $restisch"; $res = mysqli_query($con, $sql); /* Anzahl Datensätze ermitteln und ausgeben */ $num = mysqli_num_rows($res); if ($num>0) { echo "$num Datensätze gefunden<br />"; while ($dsatz = mysqli_fetch_assoc($res)) echo $dsatz['rt_datum'] . ", " . $dsatz['rt_tisch'] . ", " . $dsatz['rt_zeitbis']; /* alle 3 Werte sind korrekt! */ echo "<br />"; $rt_zeitbis = $dsatz['rt_zeitbis']; /* Variable '$rt_zeitbis' bleibt leer */ echo "rt_zeitbis: " . $rt_zeitbis; echo "<br />"; } else { echo "kein Datensatz gefunden " . $resdatum2; } mysqli_close($con); ?> </head> <body> </body> </html>
Hier das Ergebnis der Echo-Befehle:
Hier noch zwei Bilder aus der MySQL-DB:
Danke für eure freundliche Hilfe.
-
-
-
zum Verständnis, hatte ich den obigen Text als einen Lösungsansatz zu verstehen? Oder war es eine generelle Vorgehensweise? Der Test ergab nämlich keine Veränderung, das Problem besteht nach wie vor.
- - - Aktualisiert - - -
hab es korrigiert - leider kein Erfolg beim Löschen
Code
Alles anzeigenif ($zwtisch == $rttisch) { //$num8 = "DELETE FROM zwischenspeicher WHERE $zwtisch == $rttisch"; $delete = "DELETE FROM zwischenspeicher WHERE zw_tisch == $rttisch"; if (mysqli_query($con, $delete)) { echo "Datensatz erfolgreich gelöscht"; } else { echo "Fehler bei Löschen " . mysqli_error($con); echo "<br />"; }
-
Die scheinbar sinnlose Durchnummerierung (sql7, sql8, num7, num8 ...) rührt daher, dass ich den vorliegenden Code nur über einen INCLUDE in einem Hauptprogramm aufrufe. Dabei befürchte ich, dass frühere sql1, sql2 .... Nummerierungen den hier vorliegenden Code beeinflussen könnten. Ist das so?
- - - Aktualisiert - - -
wenn ich im DELETE WHERE das Tabellenfeld ansprechen soll, wäre das 'zw_tisch'. Ist das so gemeint?
- - - Aktualisiert - - -
Habe das auch mal probiert, geht leider auch nicht.
Hier die beiden Tabellenstrukturen:
Code
Alles anzeigenif ($zwtisch == $rttisch) { //$num8 = "DELETE FROM zwischenspeicher WHERE $zwtisch == $rttisch"; $delete = "DELETE FROM zwischenspeicher WHERE zw_tisch == $rttisch"; if (mysqli_query($con, $num8)) { echo "Datensatz erfolgreich gelöscht"; } else { echo "Fehler bei Löschen " . mysqli_error($con); echo "<br />"; }
-
Hallo, ich wollte mich gerade sowieso noch einmal melden.
Zuvor hatte ich mich über den funktionierenden DELETE-Befehl gefreut. Dabei wurden alle Datensätze aus der zweiten Tabelle gelöscht. Danach habe ich den DELETE Befehl modifiziert und habe noch eine WHERE Bedingung eingebaut. Leider funktioniert das auch nicht, ich erhalte folgenden Fehler.Coderestische: 2 Anzahl Zeilen: 5 zw_tisch 1 rt_tisch 2 zw_tisch 2 rt_tisch 2 Fehler bei Löschen You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '= 2' at line 1 Zwischenspeicher wurde gelöscht zw_tisch 5 rt_tisch 2 zw_tisch 8 rt_tisch 2 zw_tisch 9 rt_tisch 2
Hier nochmal der Code zur Kontrolle:
PHP
Alles anzeigen<html> <?php header('Content-Type: text/html; charset=utf-8'); ?> <body> <link rel="stylesheet" type="text/css" href="formatierung.css"> <script type="text/javascript"> </script> <?php error_reporting(E_ALL); ini_set('display_errors', 1); /* Öffnen Befehle (oben) loeschen und den INCLUDE aktivieren */ INCLUDE "oeffnen_datenbank.php"; $rttisch = 0; $zwtisch = 0; /* lesen alle bereits vorhandenen Daten: Tab: restische */ $sql7 = mysqli_query($con, "select * from restische"); /* Anzahl Tische ermitteln und Reservierungen ausgeben */ $num7 = mysqli_num_rows($sql7); /* Datensätze aus Ergebnis ermitteln, */ /* in Array speichern und ausgeben */ while ($dsatz = mysqli_fetch_assoc($sql7)) { if ($num7>0) { echo "restische: " . $dsatz['rt_tisch']; echo "<br />"; $rttisch = $dsatz['rt_tisch']; /* reservierte Tische müssen aus der Tab: zwischenspeicher gelöscht werden, falls gesuchte Tisch-Nr vorhanden */ //$sql8 = mysqli_query($con, "select * from zwischenspeicher WHERE zw_tisch = $rttisch"); $sql8 = mysqli_query($con, "select * from zwischenspeicher"); $num8 = mysqli_num_rows($sql8); echo "Anzahl Zeilen: " . $num8; echo "<br />"; while ($dsatz = mysqli_fetch_assoc($sql8)) { $zwtisch = $dsatz['zw_tisch']; echo "zw_tisch " . $dsatz['zw_tisch'] . " rt_tisch " . $rttisch; echo "<br />"; if ($zwtisch == $rttisch) { $num8 = "DELETE FROM zwischenspeicher WHERE $zwtisch == $rttisch"; if (mysqli_query($con, $num8)) { echo "Datensatz erfolgreich gelöscht"; } else { echo "Fehler bei Löschen " . mysqli_error($con); echo "<br />"; } //$num8 = mysqli_query($con, "DELETE FROM zwischenspeicher WHERE $dsatz['zw_tisch'] == $rttisch"); //$num8 = "DELETE FROM zwischenspeicher WHERE zw_tisch == $rttisch"; echo "Zwischenspeicher wurde gelöscht"; echo "<br />"; } } } } ?> </body> </html>
zuvor habe ich mit Unterstützung von Bandit die Syntax korrigiert. Der DELETE-Befehl funktioniert aber nach wie vor nicht. Eine Anmerkung noch: Hat jemand eine Anregung wie man das Problem der verschachtelten WHILE-Bedingungen besser löst??
-
-
-
Hallo Bandit,
ich habe den Fehler gefunden, es fehlte wohl im if-Befehl der Bezug zur Datenbank $con. Das kommt davon, wenn man an der falschen Stelle etwas kopiert, ohne genau zu wissen, was man tut.
Aber leider ist der Befehl genau so fehlerhaft wie vorher.Code
Alles anzeigenwhile ($dsatz = mysqli_fetch_assoc($sql8)) { $zwtisch = $dsatz['zw_tisch']; echo "zw_tisch " . $dsatz['zw_tisch'] . " rt_tisch " . $rttisch; echo "<br />"; if ($zwtisch == $rttisch) { $num8 = "DELETE FROM zwischenspeicher"; if ($con->query($con, $sql8) === TRUE) { echo "Datensatz erfolgreich gelöscht"; } else { echo "Fehler bei Löschen " . $con->error; echo "<br />"; } //$num8 = mysqli_query($con, "DELETE FROM zwischenspeicher WHERE $dsatz['zw_tisch'] == $rttisch"); //$num8 = "DELETE FROM zwischenspeicher WHERE zw_tisch == $rttisch"; echo "Zwischenspeicher wurde gelöscht"; echo "<br />"; } }
-
Hallo liebes Forum,
Ich habe zwei Tabellen mit den Feldinhalten: "tisch". Die erste Tabelle liefert die Information welche Datensätze (Datum, Uhrzeit ... und den Inhalt: tisch) in der zweiten Tabelle bearbeitet werden sollen. Für jeden Datensatz mit Übereinstimmung im Feld: tisch, soll in der zweiten Tabelle der Datensatz gelöscht werden.
Meine Vermutung ist, dass während der Bearbeitung in einer While-Schleife nicht unmittelbar gelöscht werden kann. Vielleicht ist der Datensatz gesperrt und erst nach dem Durchlauf der Schleife wieder frei?
Noch eine Information. Das von mir eingebaute ERROR-Handling führt zu einer Warn-Fehlermeldung, die ohne ERROR-Handling nicht erscheint. Der Fehler-Code hinter dem Error-Text ist leer.Warning: mysqli::query() expects parameter 1 to be string, object given in C:\xampp\htdocs\restaurant\reservierungen_laufkundschaft\verwalten\zwireservierungen_einzeln_loeschen.php on line 75
Fehler bei LöschenHier mein Programm-Code:
PHP
Alles anzeigen<html> <?php header('Content-Type: text/html; charset=utf-8'); ?> <body> <link rel="stylesheet" type="text/css" href="formatierung.css"> <script type="text/javascript"> </script> <?php error_reporting(E_ALL); ini_set('display_errors', 1); /* öffnen Datenbank, später im Gesamtablauf wieder löschen */ $con = mysqli_connect('localhost', 'root', ''); if (!$con) { die('Verbindung schlug fehl: ' . mysqli_error()); } echo 'Erfolgreich verbunden'; echo "<br />"; /* benutze Datenbank restaurant */ $con_selected = mysqli_select_db($con, 'restaurant'); if (!$con_selected) { die ('Kann restaurant nicht benutzen : ' . mysqli_error()); } /* Öffnen Befehle (oben) loeschen und den INCLUDE aktivieren */ //INCLUDE "oeffnen_datenbank.php"; $rttisch = 0; $zwtisch = 0; /* lesen alle bereits vorhandenen Daten: Tab: restische */ $sql7 = mysqli_query($con, "select * from restische"); /* Anzahl Tische ermitteln und Reservierungen ausgeben */ $num7 = mysqli_num_rows($sql7); /* Datensätze aus Ergebnis ermitteln, */ /* in Array speichern und ausgeben */ while ($dsatz = mysqli_fetch_assoc($sql7)) { if ($num7>0) { echo "restische: " . $dsatz['rt_tisch']; echo "<br />"; $rttisch = $dsatz['rt_tisch']; /* reservierte Tische müssen aus der Tab: zwischenspeicher gelöscht werden, falls gesuchte Tisch-Nr vorhanden */ //$sql8 = mysqli_query($con, "select * from zwischenspeicher WHERE zw_tisch = $rttisch"); $sql8 = mysqli_query($con, "select * from zwischenspeicher"); $num8 = mysqli_num_rows($sql8); echo "Anzahl Zeilen: " . $num8; echo "<br />"; while ($dsatz = mysqli_fetch_assoc($sql8)) { $zwtisch = $dsatz['zw_tisch']; echo "zw_tisch " . $dsatz['zw_tisch'] . " rt_tisch " . $rttisch; echo "<br />"; if ($zwtisch == $rttisch) { $num8 = "DELETE FROM zwischenspeicher"; if ($con->query($sql8) === TRUE) { echo "Datensatz erfolgreich gelöscht"; } else { echo "Fehler bei Löschen " . $con->error; echo "<br />"; } //$num8 = mysqli_query($con, "DELETE FROM zwischenspeicher WHERE $dsatz['zw_tisch'] == $rttisch"); //$num8 = "DELETE FROM zwischenspeicher WHERE zw_tisch == $rttisch"; echo "Zwischenspeicher wurde gelöscht"; echo "<br />"; } } } } ?> </body> </html>
Wie man unterhalb des DELETE Befehls sieht, habe ich zwei andere Varianten des DELETE versucht, auch ohne Erfolg.
Ich bin mir gar nicht sicher, ob dieser Lösungsansatz der richtige Weg ist, vielleicht verkompliziere ich ja das Problem? Für eine Anregung bin ich dankbar.Danke für Eure freundliche Unterstützung.
-
Peinlich !
Mit einem mysqli_query() Befehl hat es dann geklappt.Problem behoben, alles funktioniert, danke für EURE Unterstützung!
-
Hallo Arne,
"Schau bitte mal die Zeile genau an und achte besonders auf den Teil vor der ersten."
Leider verstehe ich diesen Hinweis nicht, sorry. Was ist mit "vor der ersten" gemeint?
Vermutlich möchtest Du mich auf den Punkt vor der Feldleiste aufmerksam machen.
Ich denke, dass das in MySQL ein Hinweis auf das ausgelassene Key-Feld ist?
Kennst Du den Begriff "Verschlimmbesserung"?
Jeder Versuch von mir das Insert-Statment zu korrigieren führt mich weiter weg von einer Fehlerbeseitigung.
Try and Error.STOP!
Habe den Fehler gefunden - der erste Punkt in der Feldleiste ist nicht das Auslassungszeichen für das Key-Feld, sondern das Folgezeichen für eine neue Zeile (bei längeren Befehlen) - verstanden!
Jetzt habe ich den Befehl aus der Befehlsausgabe kopiert und innerhalb von MySQL ausgeführt - es funktioniert! - Aber, wenn ich den Script durchlaufen lasse, wird der Befehl trotzdem ignoriert, komisch.
Hier die Ausgabe - der Insert wurde NICHT durchgeführt.
Code
Alles anzeigen2 bezahlte Rechnungen gefunden 8 Summe aller Personen 365.00 Euro ist der Gesamtbetrag aller Rechnungen 182.50 Euro ist der durchschnittliche Rechnungswert 45.62 Euro ist der durchschnittliche Pro-Kopfverzehr die folgenden 'echo-Befehle' habe ich zur Fehlersuche eingebaut 2017-06-06 dat: 2017-06-06 2 zeit: 2 2 num: 2 8 pers: 8 365 betrag: 365 hier ist das Statistik-Ende num2: 0 resdatum1 aus dem select-befehl für statistik: 2017-06-06 sql2-Inhalt:[COLOR=#ff0000] insert into statistik (stat_datum, stat_zeit, stat_anztische, stat_anzgaeste, stat_umsatz) values ('2017-06-06','2','2','8','365')[/COLOR] Die Statistikdaten wurden verarbeitet : 0 [COLOR=#ff0000]Die Dateneingabe wurde erfolgreich verarbeitet, weitere Auswahl?[/COLOR]
Wenn ich den insert aus der Bildschirmausgabe kopiere und innerhalb von mysql ausführe, funktioniert der Befehl!
-
Hallo Arne,
ich habe aus dem Datum die Quotes herausgenommen. Trotzdem erhalte ich die folgende Fehlermeldung.Code[B]Fehler[/B] [B]SQL-Befehl:[/B] insert into statistik . (stat_datum, stat_zeit, stat_anztische, stat_anzgaeste, stat_umsatz) values ('2017-06-06','2','2','8','365') [B]MySQL meldet: [/B][URL='http://localhost/phpmyadmin/url.php?url=https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.7%2Fen%2Ferror-messages-server.html'][IMG]http://localhost/phpmyadmin/themes/dot.gif[/IMG][/URL] #1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei '(stat_datum, stat_zeit, stat_anztische, stat_anzgaeste, stat_umsatz) values ('20' in Zeile 1
Den 2. Fehler erkenne ich auch nicht mit der Fehlermeldung, da ich den Wert '20' in Zeile 1 - nicht zuordnen kann.
Wo ist hier bitte die '20' zu finden?Eine Ergänzung noch:
in einem funktionierenden SELECT musste ich die Quotes für ein Datum mitgeben,
für einen INSERT darf ich die Quotes NICHT mitgeben, komisch oder? -
Hallo, ich habe im 2. Script das Error-Reporting eingeschaltet. Es kommt aber kein Fehlerhinweis.
Den Tipp mit $sql2 werde ich gleich mal ausprobieren. DankePHP
Alles anzeigen<html> <?php header('Content-Type: text/html; charset=ISO-8859-1'); // include "entwickler.inc.php"; ?> <head> <?php error_reporting(-1); ini_set('display_errors', true); 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) or die(mysql_error()); /* 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 . "')" or die(mysql_error()); } // 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>
- - - Aktualisiert - - -
Habe mir $sql2 mit echo angzeigt. Sieht eigentlich (für mich zumindest) ganz gut aus.
Hier ein Ausschnitt von der Ausgabe:
Code
Alles anzeigen2 bezahlte Rechnungen gefunden 8 Summe aller Personen 365.00 Euro ist der Gesamtbetrag aller Rechnungen 182.50 Euro ist der durchschnittliche Rechnungswert 45.62 Euro ist der durchschnittliche Pro-Kopfverzehr die folgenden 'echo-Befehle' habe ich zur Fehlersuche eingebaut '2017-06-06' dat: '2017-06-06' 2 zeit: 2 2 num: 2 8 pers: 8 365 betrag: 365 hier ist das Statistik-Ende num2: 0 resdatum2 aus dem select-befehl für statistik: '2017-06-06' sql2-Inhalt: insert into statistik . (stat_datum, stat_zeit, stat_anztische, stat_anzgaeste, stat_umsatz) values (''2017-06-06'','2','2','8','365') Die Statistikdaten wurden verarbeitet : 0 [COLOR=#ff0000]Die Dateneingabe wurde erfolgreich verarbeitet, weitere Auswahl?[/COLOR]
... ein weiterer Tipp vielleicht?
- - - Aktualisiert - - -
... das Schlüsselfeld ist Auto-Increment, das kann man ja m. E. im Insert-Befehl weglassen!
- - - Aktualisiert - - -
Hier die Datenstruktur:
-
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
Alles anzeigen<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>
Hier der 2. Code:
PHP
Alles anzeigen<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>
... und hier die Bildschirmausgabe:
ich danke Euch vielmals für die Unterstützung.
mfG Hans-Werner