Dabei seit: 20.03.2007 Ort: - Alter: 25 Geschlecht:
Verfasst Mi 19.03.2008 11:05 Titel
Problem mit PHP, Arrays und MySQL
Hallo,
zunächst mal eine kleine Info: ich habe versucht mich bei Google schlau zu machen, konnte aber leider nichts finden, da ich auch gar nicht so richtig weiß, wonach ich suchen soll. Deshalb schreibe ich hier:
Ich habe folgendes Problem:
ich arbeite an einem Buchungsformular, indem der buchende Kunde bis zu 50 weitere Mitreisende Eintragen kann. Diese werden aber nur mitgeschickt, wenn die entsprechenden Felder dafür auch ausgefüllt sind.
Der entsprechende Code dafür sieht so aus:
Jetzt müsste ich ja für jeden Mitreisenden alle entsprechenden Felder in der SQL-Tabelle anlegen. Allein das wäre ja schon ne lange Beschäftigung - gibt es eine Möglichkeit, dass diese Felder in der Datenbank automatisch und nur wenn sie auch ausgefüllt wurden erstellet werden? Das muss dann ja auch mit diesem [$i] funktionieren!?
Mal angenommen es geht nicht und ich muss diese Felder wirklich vorher anlegen, wie muss ich dann diesen "SQL-Eintrags-Code" anlegen? So vielleicht (beachte jeweils letzen Eintrag von "Insert Into" und "Values"):
Da bekomme ich dann nämlich eine Fehlermeldung, dass es ein Problem mit der Klammer in der Klammer gibt.
"Weiß" die Datenbank denn durch diese Möglichkeit überhaupt, dass sie bei einem 2. Mitreisenden den Vornamen in das Feld "vorname-mitreisender2" usw eintragen muss oder gibt es da Probleme? Oder kann ich vielleicht auch "$_POST[mf_vorname[$i]]" durch "$_POST[mf_vorname[1]]" ersetzen?
Ich weiß... viele Fragen, ich hoffe ihr steigt da durch!? =)
Dabei seit: 06.07.2006 Ort: hamburg Alter: 38 Geschlecht:
Verfasst Mi 19.03.2008 11:31 Titel
fangen wir erstmal vorne an. du sagst, dass die "50" nur erfasst werden sollen, wenn auch was eingetragen wurde... in der if schleife steht aber "15"
du überprüftst nirgends, ob die (wie oben gewünscht) einträge leer sind. schau dir dafür mal isset() und/oder empty() an.
beim eintragen in der db hättest du zwei möglichkeiten. 1) mit $i - also mit der schleife (da könnten max(array_keys($array)) oder count() stichworte sein), oder den kompletten datensatz in einen eintrag zu setzen (serialisieren könnte da ein stichwort sein).
ich denke, mit den paar infos hast du schon mal ne menge zu lesen
Dabei seit: 20.03.2007 Ort: - Alter: 25 Geschlecht:
Verfasst Mi 19.03.2008 19:22 Titel
pixelpapst303 hat geschrieben:
fangen wir erstmal vorne an. du sagst, dass die "50" nur erfasst werden sollen, wenn auch was eingetragen wurde... in der if schleife steht aber "15"
Sorry, das hatte ich noch vergessen zu schreiben: das Ganze gibt es mehrmals, also in 3 Teilen!
Zitat:
du überprüftst nirgends, ob die (wie oben gewünscht) einträge leer sind. schau dir dafür mal isset() und/oder empty() an.
Nochmals sorry Das steht noch irgendwo im Quelltext drin und funktioniert auch schon so weit. Das waren beides nur Infos um zu erklären was ich mit der Datenbank vor hab.
Zitat:
beim eintragen in der db hättest du zwei möglichkeiten. 1) mit $i - also mit der schleife (da könnten max(array_keys($array)) oder count() stichworte sein), oder den kompletten datensatz in einen eintrag zu setzen (serialisieren könnte da ein stichwort sein).
Das versteh ich jetzt erstmal überhaupt nicht =) aber ich werde mich mal schlau machen und mich ggf. wieder melden. Bin aber trotzdem für weitere Hilfestellungen dankbar!
und Google kennt natürlich noch weiteres... Einfach mal nach Tutorials suchen.
Grundlegender Aufbau der Datenbank sollte vorher überdacht sein. Gehört zum Basiswissen.
Wenn mit einem relationalen Datenbanksystem gearbeitet wird, sollte man auch wissen, was Relationen sind und sich Gedanken über Redundanzen machen und wie weit man Normalisieren sollte.
Dabei seit: 20.03.2007 Ort: - Alter: 25 Geschlecht:
Verfasst Di 25.03.2008 12:29 Titel
Vielen Dank für die Antworten und die hilfreichen Links.
Eine ID bekommt übrigens jeder bei mir schon. Allerdings wird diese automatisch von MySQL generiert (fortlaufend), sodass es auch nie eine ID doppelt geben kann. Ich glaube, das wäre dann nicht das Richtige für den Vorschlag mit der ID-Zuordnung oder geht das damit auch?
Dabei seit: 11.12.2003 Ort: ~/ Alter: 35 Geschlecht:
Verfasst Di 25.03.2008 12:36 Titel
Zitat:
Allerdings wird diese automatisch von MySQL generiert (fortlaufend), sodass es auch nie eine ID doppelt geben kann.
Ja, auto_increment.
Zitat:
Ich glaube, das wäre dann nicht das Richtige für den Vorschlag mit der ID-Zuordnung
Doch, das ist genau das Richtige.
Warum bekommen denn deine Datensätze automatisch eine ID verpasst?
Und was glaubst du, wofür die Bezeichnung "ID" denn überhaupt steht? Natürlich zur Eindeutigen Identifizierung der Datensätze.
Mach das genau so, wie achwasweisich es dir geschrieben hat.
Zitat:
Das ganze ist absolutes Basis-Datenbank-Layout-Design.
Da solltest Du Dich erst mal ein bißchen schlau machen drüber.
Ja, das ist es - und das solltest du tun...
Wirf mal einen Blick in ein Tutorial, wie wir das schon gesagt haben. Hast du dir eigentlich mal einen der Links angeschaut?
Dabei seit: 20.03.2007 Ort: - Alter: 25 Geschlecht:
Verfasst Mi 26.03.2008 16:12 Titel
Zitat:
Warum bekommen denn deine Datensätze automatisch eine ID verpasst?
Weil ich anhand der ID online per PHP bestimmte Datensätze löschen kann usw... Und mir war es nur wichtig, dass jede Person eine ID hat, welche war mir aber bisher immer egal - deshalb einfach per auto_increment
Zitat:
Hast du dir eigentlich mal einen der Links angeschaut?
Dazu bin ich leider noch nicht gekommen, was aber nicht heißen soll, dass ich mir diese Links nicht anschauen werde - ganz im Gegenteil! Ich wollte das nur noch mit ID klären, ob ich da alles richtig verstanden habe!
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.