Website übermittelt nicht alles in die Datenbank

einfachpeer

Lt. Commander
Registriert
Apr. 2022
Beiträge
1.363
Moin zusammen.
Im Rahmen eines Schulprojekts habe ich die Aufgabe eine Buchungswebsite für eine fiktives Museum in einer ausgelosten Stadt zu erstellen. Die Sachen sollen in HTML eingegeben werden und dann in eine SQL Datenbank gehen. Doch es kommt nur die Hälfte an. Ich weiß nicht warum...
Weiteres im Anhang.
Wäre super wenn ihr mal drüberschaut. DANKE DANKE DANKE
1696953691337.png
1696953786692.png
 

Anhänge

Es wurde ja Eigenleistung erbracht ^^ Es ist ja nicht nur für die Schule relevant sondern könnte ja auch ein normales Projekt sein ist ja kein Arbeitsblatt xD
 
Erster Tipp: Git nutzen! Wäre jetzt eine schöne Commit-History in deinem Zip (oder du würdest gleich auf Github verweisen), würde dir das sicher helfen, vielleicht auch uns.
 
  • Gefällt mir
Reaktionen: netzgestaltung
lad mir bestimmt keine zip runter :D Wie übergibst du denn die Daten? Per URL? Stimmen die Variablen dazu?
 
  • Gefällt mir
Reaktionen: BeBur
  • Gefällt mir
Reaktionen: pseudopseudonym
Fehlt da nicht der ganze Code, um überhaupt mit deinem PHP-Backend zu kommunizieren? Oder war der Arbeitstag schon zu lang?

Edit: Ja, der Tag war zu lang.
 
Es wird mit XAMPP gearbeitet und das dann in Htdocs :)
Ergänzung ()

Habs selber durch geprüft die Dateien sind ungefährlich. Hilfe brauchen und dabei Viren einschleusen wäre mir zu dreist
 
In deinem PHP hast du diese Zeile:
PHP:
$preis = $_POST["preis"];

Wenn ich jetzt mal Strg+F drücke und in deiner HTML-Datei suche, finde ich den String "preis" allerdings nicht. Das heißt, dass deine Form diesen Preis gar nicht enthält, den musst du erstmal an einer Stelle ausrechnen (am besten in der PHP-Datei). Du greifst also auf ein nicht-gesetztes Feld zu, weswegen es NULL ist.
 
  • Gefällt mir
Reaktionen: netzgestaltung und kim88
Dein SQL Statement haut nicht hin. Schau mal auf die Spaltennamen.

Würde dir auch empfehlen auf der DB mit Constraints zu arbeiten. Bspw. Anzahl Headsets kann nicht null sein, weil 0 nicht "null" ist. Dort ein Constraint drauf und als Default eine 0 rein. Macht die Sache später einfacher
 
Das beim Preis war tatsächlich gewollt. Wollt das später machen. Aber warum z.B IBAN nicht übertragen wird bleibt mir n rätsel
 
Du führst nur den else-Zweig für Dein insert Statement aus, also eine "Reservierung". Da fehlen nämlich unten z.B. iban und bic. Das passt auch zu deinem Screenshot. Wenn Du alles inserten möchtest solltest Du den if($typ == buchung) Zweig ausführen oder für die Reservierung die fehlenden Felder ergänzen.
... Ok... headsets fehlt da trotzdem noch, aber dass iban und bic in der "reservierungen" Tabelle fehlen passt zum PHP Code.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: einfachpeer
Hi...

einfachpeer schrieb:
Weiteres im Anhang.
Auch, wenn das Zip-File mit den beinhaltenden zwei Dateien ("nur" HTML und PHP) nicht die Gefahr einer Kompromittierung mitbringt, stelle doch bitte die jeweiligen Quellcodes der beiden Dokumente hier innerhalb der entsprechenden Code-Tags (Symbol </> - im Beitragsditor versteckt hinter den zweiten drei Punkten) ein - so wäre entsprechende Hinweisgebung mittels einfacherer Editierbarkeit sicherlich für alle zweckdienlicher.

Btw.:
Im Idealfall könnte (und sollte) das Dokument sogar unter einer (temporären) Domain live getestet werden - meiner Erfahrung nach verhalten sich lokale "Webserver"-Installationen manchmal beim Development doch etwas divergent.​
 
einfachpeer schrieb:
Es wurde ja Eigenleistung erbracht
Die ist aber nicht wirklich erkennbar, weil du nicht mal das Problem vollständig beschreiben kannst. Und der Code ist ggfs bereits Bestandteil der Aufgabe, etc.

einfachpeer schrieb:
Doch es kommt nur die Hälfte an.
Ja was nu? Die Hälfte in Bits? Bytes? Oder nur die halben Texte? Es wäre zu erwarten, dass du mindestens klarstellst welche Felder übertragen werden und welche nicht. Die Eigenleistung erkennt man vorwiegend daran, dass man merkt, dass der Fragende das Problem als solches verstanden hat und erklären kann was er bereits versucht hat, etc.
 
einfachpeer schrieb:
Habs selber durch geprüft die Dateien sind ungefährlich. Hilfe brauchen und dabei Viren einschleusen wäre mir zu dreist

sry, kann dir nicht helfen bei deinen Problem, aber ich kann dir einen guten Rat mit auf deinen Lebensweg geben:

Bring solche Sätze und Aussagen nicht. Das sagt genausoviel aus wie eine "I am not a Virus.exe". Denn wer soll deine Aussage verifizieren? Deine Freunde, die auf jeden Fall immer die Wahrheit sagen und nie für dich lügen würden gegenüber Fremden?

Solche Aussagen werden dir im späteren Leben sonst massiv auf die Füße fallen.
Denke am besten immer: WIE würde ICH auf eine SOLCHE Aussage reagieren, wenn mir das jemand sagen würde und ich eine gesunde Portion Skepsis gegenüber der Aussage habe.

In der Situation wäre es besser zu Fragen, WAS es denn für Alternativen gibt zu der zip Datei. Eine Alternative hat dir @pseudopseudonym schon genannt.


p.s. und ja Schadwareschreiber sind extrem dreist!
 
Da es ein eigenständiges Schulprojekt ist nur ganz kurz:
  • gucke dir die Daten beim Absenden von deinem Form mit dem Chrome DevTools ("F12" im Browser drücken) an. Im "Netzwerk"-Tab ist der Request mit allen Daten. Wenn dort Daten fehlen, ist dein Form kaputt: https://developer.chrome.com/docs/devtools/network/
  • Xdebug ist ein Debugger für PHP; den einzurichten ist aber zu aufwendig. Stattdessen mach einen Variable-Dump in PHP:
    • die(var_dump($_POST)); // zeigt alle Daten, die in $_POST stehen
    • die(var_dump(get_defined_vars())); // zeigt alle Variables an
  • innerhalb von JS kannst du mit "debugger;" + den Chrome DevTools einen einfachen Debugger für JS. Alternativ kannst du auch in JS Variablen dumpen mit:
    • console.dir(var1, var2, usw)
    • console.table(var1, var2, usw)
  • in PHP kannst du Werte als string, integer etc. konvertieren. Das geht auch, wenn die Werte <null> sind:
    • (string)$_POST['example1']
    • (int)$_POST['example2']
  • beim Überprüfen von Werten könntest du einfach eine Assertion machen. Damit wird eine Bedingung überprüft und es kommt ein Fehler, wenn die Bedingung fehlschlägt:
    • assert((int)$_POST['abc'] > 0, '"abc" muss > 0 sein!');
    • das machst du in einem try-catch-Block. Im Fehlerfall gibst du eine JSON-Fehlermeldung für den Browser aus. Im HTML zeigt du den Fehler dann einfach ganz oben an. Wenn der User dann das Form erneut absendet, blendest du den Fehler aus.
Solltest du tatsächlich Interesse an deinem Projekt haben, solltest du mit einer richtigen IDE arbeiten. Für PHP empfiehlt sich PhpStorm (kann 30 Tage kostenlos getestet werden), Fleet (https://www.jetbrains.com/fleet/) oder VSCode (https://code.visualstudio.com/).

Zudem solltest du dir den Packagemanager Composer (https://getcomposer.org/) sowie Doctrine DBAL angucken und einrichten. Das ist eine Library, um einfacher mit unterschiedlichen SQL DBs arbeiten zu können (also insert/update/delete sowie select-queries): https://www.doctrine-project.org/projects/doctrine-dbal/en/3.7/reference/introduction.html

Würde dir aber als Anfänger aber eher Python mit der kostenlosen PyCharm Community IDE empfehlen.

Viel Erfolg!
 
Habe nicht alles gelesen aber hier ein paar Tipps:
Dein Formular <form> muss alle Input Felder einschließen, nur was innerhalb des Form-Tags steht, wird übermittelt beim Submit.

Prüfe als erstes in PHP was im $_POST steht, fehlen da Daten, ist das Problem HTML und nicht PHP.
Sind alle Daten da, dann scheint PHP das Problem zu sein.

Nun verfolge den Dataflow deiner Applikation.
Was machst du mit den Daten, wo schleust du sie hin, wie manipulierst du sie und wann kommen sie in der DB an? Arbeite dich Step für Step durch, immer tiefer bis dz kurz vom Speichern in die DB bist. Spätestens dann siehst du wo sie untergehen.
 
wakko0815 schrieb:
Du führst nur den else-Zweig für Dein insert Statement aus, also eine "Reservierung". Da fehlen nämlich unten z.B. iban und bic. Das passt auch zu deinem Screenshot. Wenn Du alles inserten möchtest solltest Du den if($typ == buchung) Zweig ausführen oder für die Reservierung die fehlenden Felder ergänzen.
... Ok... headsets fehlt da trotzdem noch, aber dass iban und bic in der "reservierungen" Tabelle fehlen passt zum PHP Code.
Das wars ;)DANKE
 
Zurück
Oben