DB: Speichern von Mehrfachauswahl-Daten

tittli

Erfahrenes Mitglied
Hallo

Ich habe ein Formular mit einer Auswahlliste (Mehrfachauswahl):

PHP:
   <select name="klasse" size="3" multiple="multiple">
    <option value="1">1. Klasse</option>
    <option value="2">2. Klasse</option>
    <option value="3">3. Klasse</option>
    <option value="4">4. Klasse</option>
    <option value="5">5. Klasse</option>
    <option value="6">6. Klasse</option>
   </select>

Wenn ich jetzt mit echo die Variabel $klasse ausgebe, kommt immer nur eine Zahl. Wie ist es möglich, mehrere Zahlen ausgeben zu lassen bzw. sie in einer DB zu speichern? Hab dasselbe auch mit Checkboxen versucht, ging auch nicht.

Danke

gruss
 
Original geschrieben von Spescha
Wie ist es möglich, mehrere Zahlen ausgeben zu lassen bzw. sie in einer DB zu speichern?
HTML-Formular:
Code:
<form name="test" action="test.php" method="post">

<select name="klasse[]" size="3" multiple="multiple"> 
    <option value="1">1. Klasse</option> 
    <option value="2">2. Klasse</option> 
    <option value="3">3. Klasse</option> 
    <option value="4">4. Klasse</option> 
    <option value="5">5. Klasse</option> 
    <option value="6">6. Klasse</option> 
   </select><br /><br />
   <input type="submit" value="senden">
</form>
Jetzt wird automatisch ein Array angelegt: Als Key ein numerischer Index, als Value der Wert, der im Select-Element angegeben ist:

PHP:
<?php
print_r($_POST['klasse']);
?>
Ausgabe:
Code:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Die Array-Inhalt kannst Du jetzt wie gewünscht weiterverarbeiten.

Das nächste mal bitte :suchen:, wurde schon mehrfach behandelt das Thema!
 
Bei Checkboxen ist es noch einfacher. Da nennst du sie einfach array[0], array[1] usw. und dann stehen sie alle im array $array zur verfügung.

MfG
Jesus0190
 
so?

Code:
   <input type="checkbox" value="1" name="klasse[0]">
   <input type="checkbox" value="2" name="klasse[1]">
   <input type="checkbox" value="3" name="klasse[2]">
   <input type="checkbox" value="4" name="klasse[3]">
   <input type="checkbox" value="5" name="klasse[4]">
   <input type="checkbox" value="6" name="klasse[5]">

irgendwie verstehe ich das ganze nicht...
 
Zuletzt bearbeitet:
ok.

danke. das hilft mir schon mal weiter. Was ist jetzt hier angebracht. Ich will die Angaben in einer DB speichern. Was ist besser? Für jede Klasse eine eigene Spalte oder für alle eine? Der Sinn der Sache ist dass die Informationen nachher nach Klassen aufgeteilt ausgegeben werden sollen. Also im Formular kann man eine (oder mehrere) Klassen auswählen und dazu einen Text eintippen. Danach sollte man unter den angekreuzten Klassen die jeweiligen Texte sehen. Wie mach ich das am besten?

gruss
 
also hab jetzt das mal versucht...aber irgendwie schnall ich das nicht:(

Code:
<input type="checkbox" name="klasse[0]"><b>1. Klasse</b><br>
<input type="checkbox" name="klasse[1]"><b>2. Klasse</b><br>
<input type="checkbox" name="klasse[2]"><b>3. Klasse</b><br>
<input type="checkbox" name="klasse[3]"><b>4. Klasse</b><br>
<input type="checkbox" name="klasse[4]"><b>5. Klasse</b><br>
<input type="checkbox" name="klasse[5]"><b>6. Klasse</b><br>
</select><br><br>

Das ist das Formular. Jetzt muss ich die ausgewählten Checkboxen in ner Datenbank (zusammen mit anderen Infos) speichern. Das Script sieht so aus:
PHP:
include ("dbconnect.php");
 if (isset($klasse[1]))
 	{
 	$klasse = 1;
        $eingabe = "INSERT INTO daten (vonlehrer, anklasse, betreff, nachricht, wochentag, datum, uhrzeit) VALUES ('$von', '$klasse', '$betreff', '$nachricht', '$wochentag', '$datum', '$uhrzeit')";
        $eingeben = mysql_query ($eingabe);
        }
 
  if (isset($klasse[2]))
 	{
 	$klasse = 2;
        $eingabe = "INSERT INTO daten (vonlehrer, anklasse, betreff, nachricht, wochentag, datum, uhrzeit) VALUES ('$von', '$klasse', '$betreff', '$nachricht', '$wochentag', '$datum', '$uhrzeit')";
        $eingeben = mysql_query ($eingabe);
        }
       
 if (isset($klasse[3]))
 	{
 	$klasse = 3;
        $eingabe = "INSERT INTO daten (vonlehrer, anklasse, betreff, nachricht, wochentag, datum, uhrzeit) VALUES ('$von', '$klasse', '$betreff', '$nachricht', '$wochentag', '$datum', '$uhrzeit')";
        $eingeben = mysql_query ($eingabe);
        } 
        
 if (isset($klasse[4]))
 	{
 	$klasse = 4;
        $eingabe = "INSERT INTO daten (vonlehrer, anklasse, betreff, nachricht, wochentag, datum, uhrzeit) VALUES ('$von', '$klasse', '$betreff', '$nachricht', '$wochentag', '$datum', '$uhrzeit')";
        $eingeben = mysql_query ($eingabe);
        }
        
 if (isset($klasse[5]))
 	{
 	$klasse = 5;
        $eingabe = "INSERT INTO daten (vonlehrer, anklasse, betreff, nachricht, wochentag, datum, uhrzeit) VALUES ('$von', '$klasse', '$betreff', '$nachricht', '$wochentag', '$datum', '$uhrzeit')";
        $eingeben = mysql_query ($eingabe);
        }
        
 if (isset($klasse[6]))
 	{
 	$klasse = 6;
        $eingabe = "INSERT INTO daten (vonlehrer, anklasse, betreff, nachricht, wochentag, datum, uhrzeit) VALUES ('$von', '$klasse', '$betreff', '$nachricht', '$wochentag', '$datum', '$uhrzeit')";
        $eingeben = mysql_query ($eingabe);
        }

Ich hab das mal so versucht...aber irgendwie funktioniert da etwas nicht. Es wird immer nur eine Klasse gespeichert. Wiso?...bzw. wie kann man das anders/einfacher lösen?

danke schon mal für die (hoffentlich) kommenden Antworten

gruss
 
Ach ich glaube da hab ich irgendwonoch was ich such mal:
Das HTML Formular:
Code:
<input type="checkbox" name="klassen[]" value="1" />Klasse 1
<input type="checkbox" name="klassen[]" value="2" />Klasse 2
<input type="checkbox" name="klassen[]" value="3" />Klasse 3
<input type="checkbox" name="klassen[]" value="4" />Klasse 4
[...]
Und natürlich alles mit <form> und so dazu.
Jetzt der PHP Teil:
PHP:
<?php
  if ($_POST["klassen"] == "") $_POST["klassen"] = array(); // Falls kein Wert &uuml;bergeben wurde wird ein Array erstellt.
  foreach ($_POST["klassen"] AS $klasse) @mysql_query ("INSERT INTO daten (vonlehrer, anklasse, betreff, nachricht, wochentag, datum, uhrzeit) VALUES ('$von', '$klasse', '$betreff', '$nachricht', '$wochentag', '$datum', '$uhrzeit')"); // Ne Forschleife macht immer nen eintrag in die datenbank
?>
Ist etwas kürzer als deins müsse aber gehen.(nicht getestet)

mfg
 
Zurück