Insert einer Array-Checkbox
Rolf
- datenbank
0 romy0 Rolf0 Thomas Luethi0 Rolf
0 TomIRL
Hallo, möchte checkbox in einzelne Spalten in MySQL einlesen.
Handelt sich um eine Adressdatenbank mit mehreren Tabellen.
<?php
//Inhalt für Sprache auslesen
$spr = mysql_query("SELECT sprache FROM adresse_sprache ORDER BY sprache",$db);
while ($daten = mysql_fetch_assoc($spr)) { ?>
<input type="checkbox" name="sprache[]" value="<?php echo $daten['sprache']; ?>">
<?php echo $daten['sprache'];
} ?>
Wie muss folgendes script für die Aufnahme des Arrays verändert werden?
<?php
$sql3 = "INSERT INTO adresse_sprache (ID,sprache)
VALUES (LAST_INSERT_ID(),'$sprache')";
$spra = mysql_query($sql3,$db);
?>
Hi Rolf,
Hallo, möchte checkbox in einzelne Spalten in MySQL einlesen.
Handelt sich um eine Adressdatenbank mit mehreren Tabellen.
Wie muss folgendes script für die Aufnahme des Arrays verändert werden?
so etwas findet man leicht raus, indem man sich den Inhalt der Variable $sprache mal anzeigen lässt mit var_dump() oder print_r(), dann kannst Du erkennen wie die Daten aufgebaut sind. Vermutlich in einem Array. Desweiteren werden nur die Daten versendet, die auch angeklickt wurden.
Was genau willst Du erreichen, ich werde nicht ganz schlau aus deinem Quellcode für das Einfügen. kann nun nur ein Wert oder auch mehrere Werte eingefügt werden.
ciao
romy
Hi Romy,
ich habe in phpadmin eine Tabelle mit Adressdaten erstellt. Dazu noch mehrere andere Tabellen verknüpft. Wie z.B. eine mit sämtlichen Sprachen. Nun möchte ich einem Mitglied aus der Adressendatenbank mit seinen beherrschenden Sprachen verknüpfen. Da dies ja auch mehrere sein können, wollte ich dies mit checkbox und einer Verbindungstabelle realisieren.
Gruß Rolf
Hi Rolf,
Hallo, möchte checkbox in einzelne Spalten in MySQL einlesen.
Handelt sich um eine Adressdatenbank mit mehreren Tabellen.
Was genau willst Du erreichen, ich werde nicht ganz schlau aus deinem Quellcode für das Einfügen. kann nun nur ein Wert oder auch mehrere Werte eingefügt werden.ciao
romy
Hallo,
Nun möchte ich einem Mitglied aus der Adressendatenbank mit seinen beherrschenden Sprachen verknüpfen. Da dies ja auch mehrere sein können, wollte ich dies mit checkbox und einer Verbindungstabelle realisieren.
Deine DB-Struktur ist mir nicht klar.
Ich gehe von folgendem aus:
Tabelle benutzerdaten
userid, vorname, nachname, nickname, email, ...
Tabelle sprachen
userid, de, fr, en, es, it, ru, ...
Dann kannst Du z.B. die MySQL-Query Stueck fuer Stueck zusammenbauen.
Formular:
<input type="checkbox" name="de" value="1"> Deutsch
<input type="checkbox" name="fr" value="1"> Englisch
<input type="checkbox" name="en" value="1"> Franzoesisch
u.s.w.
PHP-Skript:
$sql="INSERT INTO sprachen SET userid=$userid";
if ($REQUEST['de']==1)
$sql.=", de=1 ";
else
$sql.=", de=0 ";
if ($REQUEST['fr']==1)
$sql.=", fr=1 ";
else
$sql.=", fr=0 ";
u.s.w.
Die fertige Query sieht dann etwa so aus:
INSERT INTO sprachen SET userid=25, de=1, fr=0, en=1, es=0, it=1, ru=0
N.B. es gibt noch andere Varianten fuer die Syntax von Insert, siehe
http://www.mysql.com/doc/de/HANDLER.html
Um die Eintraege nachtraeglich zu aendern, z.B. wenn
ein Benutzer im Urlaub Spanisch gelernt hat,
baust Du die UPDATE-Query nach dem gleichen Muster zusammen.
Falls ich etwas falsch verstanden habe, beschreibe bitte Deine
verschiedenen Tabellen etwas genauer.
mfg
Thomas
Meine Tabellenstruktur ist so:
Tabelle benutzerdaten
id, vorname, nachname, nickname, email, ... (id=Primär, auto)
Tabelle sprachen
spracheid, sprache (spracheid=Primär,auto)
Tabelle verbindung_sprache
id, sprache
Möchte einer id mehrere Sprachen zuordnen können.
Wie funzt INSERT und wie würde SELECT funzen ?
Falls ich etwas falsch verstanden habe, beschreibe bitte Deine
verschiedenen Tabellen etwas genauer.mfg
Thomas
Hallo, möchte checkbox in einzelne Spalten in MySQL einlesen.
Handelt sich um eine Adressdatenbank mit mehreren Tabellen.<?php
//Inhalt für Sprache auslesen
$spr = mysql_query("SELECT sprache FROM adresse_sprache ORDER BY sprache",$db);
while ($daten = mysql_fetch_assoc($spr)) { ?>
<input type="checkbox" name="sprache[]" value="<?php echo $daten['sprache']; ?>">
<?php echo $daten['sprache'];
} ?>Wie muss folgendes script für die Aufnahme des Arrays verändert werden?
<?php
$sql3 = "INSERT INTO adresse_sprache (ID,sprache)
VALUES (LAST_INSERT_ID(),'$sprache')";
$spra = mysql_query($sql3,$db);
?>
Jo Rolf:
checkboxen sind immer etwas Tricky zu verarbeiten:
Überlege ob Radiobuttons nicht ne bessere alternative für Dich sind.
Du versuchst ein Array in die DB zu schreiben, das geht in aller Regel nicht.
Also mußt Du das Array in einem String umwandeln das geht mit implode() und dann speichern.
Bedenke das Checkboxen immer nur dann einen Wert haben wenn diese angeklickt sind.
Sonst existieren die nämlich nicht.
Diesen Fall mußt Du alsoi abfangen. sonst kriegst einen Error irgendwann.
TomIRL