mehrere Datenbankeinträge via Checkbox
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
artikel
ausstattung
bestellten artikels
code
datenbank
datum
einlesen
erstellen
feld
http
jeweilige anzahl
machen
menge
sinn
tabelle
url
variable ausstattung
verwalten
zweck
-
Hallöchen,
ich wusel gerade an einem Formular, bei dem man per Checkbox einige Dinge auswählen kann, die dann in eine Datenbank eingetragen werden sollen. Ich hab allen Checkboxen den gleichen Namen gegeben und via value soll nun der Eintrag in die Datenbank erfolgen. Soweit klappt das ja auch hervoragend. Allerdings wenn ich mehrere Checkboxen auswähle, wird nur die letzte eingetragen. Wie ist es möglich, mehrere eintragen zu lassen (in das gleiche Datenbankfeld, versteht sich)? Oder muss ich für jede Checkbox ein eigenes Feld anlegen?
Gleichzeitig hab ich mal noch eine andere, ähnliche Frage: Ich habe ein kleines Bestellformular auf meiner Webseite, bei dem nur die jeweilige Anzahl des bestellten Artikels eingetragen werden. Hierbei habe ich tatsächlich für jedes Feld ein extra Datenbankfeld erstellt. Ist dies auch irgendwie möglich, dass ich dafür nur ein Datenbankfeld erstellen kann? Sodass darin angezeicht wird: Artikel XY = 1 ... oder so ähnlich.
So, dann gehe ich mal einkaufen und hoffe, dass ihr mir weiterhelfen könnt. Bis später ;) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
klar ist das möglich. Es kommt nur drauf an, wie du es an die Datenbank schickst, sie also in PHP verarbeitest. Allerdings ist das nicht unbedingt die beste Form Daten abzuspeichern.
Für den Umgang mit Checkboxen und den Möglichkeiten der Auswertung in PHP kannst du dir mal diese Seite anschauen: http://aktuell.de.selfhtml.org/artikel/php/checkboxen/ Hier wird darauf eingegangen und ein paar mehr Informationen gegeben. Ebenso hilft dir dieses Beispiel weiter: http://www.php-mysql-tutorial.com/wikis/php-tutorial/php-forms.aspx (auf Englisch)
Eine Datenbank soll dir helfen Daten zu verwalten und zu organisieren, durch das Einfügen einer Liste (mehrere Daten mit einem Trennzeichen) in ein Datenbankfeld machst du dir die Arbeit nicht unbedingt leichter. Hier macht es mehr Sinn ein eigenes Feld für jeden Wert zu haben. Allerdings muss dabei auch der Zweck beachtet werden.
Bei deiner zweiten Frage, macht es mehr Sinn eigene Tabellen zu erstellen. Eine Tabelle mit den Artikeln und ihren Beschreibungen, eine Tabelle mit der Bestellung (Adresse usw. aber ohne die Menge der Artikel) und eine Tabelle in der die Bestell-ID, die Artikel-ID und die Menge steht. Dadurch kannst du ohne Überschneidungen deine Daten abspeichern und einfach darauf zugreifen.
Für Tutorials zu dem Thema, einfach mal bei Google suchen oder http://www.schattenbaum.net/php/mstart.php oder http://www.php-kurs.com/mysql---datenbank-unter-php.htm mal schauen und einlesen.
Gruß
Karlja -
1. Musst du den Checkboxen unterschiedliche Namen geben. Wenn nämlich alle Checkboxen den Namen "xyz" haben, wie soll dann die Variable $_POST['xyz'] bzw. $_GET['xyz'] aussehen? Der Wert (value) einer Checkbox true oder false.
2. Kannst du natürlich mehrere Werte in ein Datenbankfeld schreiben. Diese musst du dann über ein Trennzeichen trennen (z.B. mit |) und beim wiederauslesen über explode() auseinandernehmen. Einfach sind wahrscheinlich mehrere Datenbankfelder. -
Nein, du mußt nicht jeder Checkbox einen anderen Namen geben. Allerdings müsstest du den Namen als Array angeben, dann bekommst du die Werte in einem Array übergeben.
<input type="checkbox" name="ausstattung[]" value="Airbag"> // bzw. <input type="checkbox" name="ausstattung[Airbag]" value="1">
Dann ist die Variable "ausstattung" ein Array mit dem Inhalt "Airbag".
Die Werte kannst du dann mit PHP aus der Variable auslesen mit: array_values($_POST['ausstattung']);
bzw. mit der zweiten Variante:
mit array_keys($_POST['ausstattung']) die Keys auslesen
Schau dir einfach mal die Rückgabewerte an mit:
echo "<pre>"; var_dump($_POST['ausstattung']); echo "</pre>";
Grüßle -
Was man auch bedenken sollte ist, dass HTTP keine Checkboxen überträgt die nicht gecheckt wurden. Das kann mitunter eine echte Qual sein.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage