Checkboxen in Datenbank Speichern - Tutorial?

wallis

Mitglied
Hallo Freund,

bin auf dem Gebiet PHP noch blutiger Anfänger und arbeite gerade das Quake-Net Tutorial durch.

Auf einer internen Seite habe ich 4 Checkboxen erstellt.

PHP:
<input type="checkbox" name="magazin_checkbox[]" value="Stadt1" />Stadt1<br />
<input type="checkbox" name="magazin_checkbox[]" value="Stadt2" />Stadt2<br />
<input type="checkbox" name="magazin_checkbox[]" value="Stadt3" />Stadt3<br />
<input type="checkbox" name="magazin_checkbox[]" value="Stadt4" />Stadt4<br />

Nun möchte diese Checkboxen in meine MySQL Datenbank eintragen.
Habe schon viel über "foreach()", "implode()" etc. gelesen, kann sie allerdings nicht anwenden.

Mein INSERT-Befehl für den Eintrag in die Datenbank sieht folgendermaßen aus:
PHP:
if ($_POST['submit'])
{
$sql = 'INSERT INTO adressen
    (Firma, Vorname, .... , Magazin)
VALUES
    ("'.$_POST['Firma'].'","'.$_POST['Vorname'].'","'.$_POST['Nachname'].'", ..... ,"'.$_POST['Magazin'].'")';

mysql_query($sql); 
  echo "<script type='text/javascript'>location.href='index.php?go=ok';</script>";
}

Wie kann ich jetzt die Einträge der Checkboxen in eine kommagetrennte Variable speichern und diese nachher in die Datenbank eintragen?

Ich bekomme den Eintrag einfach nicht hin.
Kann mir jemand helfen?

Vielen Dank!
 
Danke für die schnelle Hilfe. In welchem Bereich meines Codes muss ich das jetzt eintragen?
Ist doch eigentlich egal oder?

Anbei mal der Code:
PHP:
<?php 
include 'config.inc.php'; 
mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");
mysql_select_db($db); 

$sql_branchen = "SELECT * FROM branchen ORDER BY Branchen ASC"; 
$ausgabe_branchen = mysql_query($sql_branchen); 

$sql_magazine = "SELECT * FROM magazine ORDER BY Magazine ASC"; 
$ausgabe_magazine = mysql_query($sql_magazine); 


if ($_POST['submit'])
{	
$sql = 'INSERT INTO adressen (Firma, Vorname, ..... , Magazin) VALUES("'.$_POST['Firma'].'","'.$_POST['Vorname'].'", ..... ,"'.$_POST['magazin'].'")';
mysql_query($sql); 
  echo "<script type='text/javascript'>location.href='index.php?go=ok';</script>";
}
?>

Hier steht ein HTML-Formular...

PHP:
<input type="checkbox" name="magazin_checkbox[]" value="Stadt1" />Stadt1<br />
<input type="checkbox" name="magazin_checkbox[]" value="Stadt2" />Stadt2<br />
<input type="checkbox" name="magazin_checkbox[]" value="Stadt3" />Stadt3<br />
<input type="checkbox" name="magazin_checkbox[]" value="Stadt4" />Stadt4<br />

Kommt der Code von euch

PHP:
$staedte = implode(',', $_POST['magazin_checkbox']);

ganz oben mit rein?

Habe alles schon versucht... ich bekomme keinen DB-Eintrag. :-/
 
Da wo die übergebenen Daten gespeichert werden:

PHP:
if ($_POST['submit'])
{
// hier kommt die zusätzliche Anweisung hin
$staedte = implode(',', $_POST['magazin_checkbox']);
// und jetzt die Variable $staedte in die SQL-Anweisung einbauen
$sql = 'INSERT INTO adressen (Firma, Vorname, ..... , Magazin) VALUES("'.$_POST['Firma'].'","'.$_POST['Vorname'].'", ..... ,"'.$_POST['magazin'].'")';
mysql_query($sql);
  echo "<script type='text/javascript'>location.href='index.php?go=ok';</script>";
}
?>
 
Sehr geil!

Danke, hat funktioniert. Wenn du mir jetzt noch sagen kannst, wie ich den Eintrag auf einer anderen Seite auslesen kann, dann bin ich wunschlos zufrieden. :-)

Vielen Dank nochmals!
 
Du meinst wie du die Checkboxen markierst nachdem du den Inhalt der Datenbank ausgelesen hast?

Das könntest du so machen:

PHP:
<?php
// das Array dient nur als Beispiel
// hier muss der Inhalt des Datenbanlfeldes übergeben werden
// die "Kommaliste" der Datenbank kannst du mit explode in ein Array umwandeln
$staedte = array("Stadt1", "Stadt3", "Stadt4");
?>

<input type="checkbox" name="magazin_checkbox[]" value="Stadt1" <?php if(in_array("Stadt1", $staedte)) echo "checked"; ?> />Stadt1
<br />
<input type="checkbox" name="magazin_checkbox[]" value="Stadt2" <?php if(in_array("Stadt2", $staedte)) echo "checked"; ?> />Stadt2
<br />
<input type="checkbox" name="magazin_checkbox[]" value="Stadt3" <?php if(in_array("Stadt3", $staedte)) echo "checked"; ?> />Stadt3
<br />
<input type="checkbox" name="magazin_checkbox[]" value="Stadt4" <?php if(in_array("Stadt4", $staedte)) echo "checked"; ?> />Stadt4
<br />

Immer wenn der Vaule-Wert der Checkbox im Array enthalten ist, wird der Haken gesetzt.
 
Vielen vielen Dank für deine Antworten.
ich komme immer ein Stückchen weiter.

Habe mir jetzt die Checkboxen aus der Datenbank geholt. Dynamisch per while-Schleife.

Sieht folgendermaßen aus:
PHP:
<?php while ($magazine2 = mysql_fetch_object ($ausgabe_magazine)) { ?>
                                
<input type="checkbox" name="magazin_checkbox[]" value="<?php echo($magazine2->Magazine); ?>" /><?php echo($magazine2->Magazine); ?><br />
                                
 <?php } ?>

Meine Checkboxen hole ich folgendermaßen aus der Datenbank:
PHP:
$sql_magazine = "SELECT * FROM magazine ORDER BY Magazine ASC"; 
$ausgabe_magazine = mysql_query($sql_magazine);

Die Ausgabe meiner Checkboxen geht ohhne Probleme.
Allerdings bin ich jetzt schon überfragt, wie ich das Array füllen muss.
Aber ich bin froh, das mir hier jemand mit guten Beiträgen hilft. Ist leider nicht immer so selbstverständlich.

Also wenn du mir nochmal eine genau Hilfestellung geben könntest, wäre es schön.
 
Hi,

das array bekommst du mit explode():

PHP:
<?php 
while ($magazine2 = mysql_fetch_object ($ausgabe_magazine)) { 
  $array = explode(',', $magazine2->Magazine);

  foreach ($array as $magazin):
?>

<input type="checkbox" name="magazin_checkbox[]" value="<?php echo($magazin); ?>" /><?php echo($magazin); ?><br />
                                
 <?php 
  endforeach;
}
 ?>

Ungetestet.. aber so ähnlich sollte es sein. ;)

Best regards
 
Zurück