checkboxen
mana
- php
0 David Tibbe0 TomIRL0 PHP_Dude0 mana
0 Tom
So, hab schon alles durchstöbert, aber nix gefunden.
Naja, gefunden schon, aber nichts was mit mySQL DB zu
tun hat.
Mein Problem:
Ich habe "4" Checkboxen und will die angeklickten in
meine mySQL DB schreiben...
_________________________________________________
<input name="abteilung[]" type="checkbox" value="multimedia"> Multimedia Abteilung
<input name="abteilung[]" type="checkbox" value="werbeagentur"> Werbeagentur
<input name="abteilung[]" type="checkbox" value="donnerbalken"> Donnerbalken
<input name="abteilung[]" type="checkbox" value="cheffe">
Cheffe
ich will sie wie folgt in die datenbank integrieren:
_________________________________________________
$sql = "INSERT INTO t_auftraege
(betreff, content, email, abteilung, datum)
VALUES
('".addslashes(htmlspecialchars($_POST['betreff']))."',
'".addslashes(htmlspecialchars($_POST['content']))."',
'".addslashes(htmlspecialchars($_POST['email']))."',
'".addslashes(htmlspecialchars($_POST['abteilung[]']))."',
NOW())";
mysql_query($sql) OR die(mysql_error());
meine frage: warum übergibt er die values "werbeagentur, cheffe..."
nicht in die DB zeile abteilung? (sie steht mitlerweile auf "text"!!!
Hallo mana,
<input name="abteilung[]" type="checkbox" value="multimedia"> Multimedia Abteilung
abteilung ist ein Array.
'".addslashes(htmlspecialchars($_POST['abteilung[]']))."',
Hier versuchst du ein Array in einen String zu packen. Das geht aber so nicht, vielleicht hilft dir implode() oder serialize() weiter.
Grüße
David
meine frage: warum übergibt er die values "werbeagentur, cheffe..."
nicht in die DB zeile abteilung? (sie steht mitlerweile auf "text"!!!
Moin
Ausrufezeichen kaputt? :-)
Weil man ein Array nicht so einfach als Text speichern kann,
Warum zerlegst Du das Array nicht und versuchst wie üblcih einen String in die Datenbank zu schreiben?
TomIRL
Hi,
'".addslashes(htmlspecialchars($_POST['abteilung[]']))."',
Nimm hier mal '".addslashes(htmlspecialchars(implode(',',$_POST['abteilung'])))."',
mfg
PHP_Dude
Nimm hier mal '".addslashes(htmlspecialchars(implode(',',$_POST['abteilung'])))."',
THX, diese Lösung klappt.
Hello,
meine frage: warum übergibt er die values "werbeagentur, cheffe..."
nicht in die DB zeile abteilung? (sie steht mitlerweile auf "text"!!!
Meine Gegenfrage:
Welchen Typ haben die Datenbankfelder?
Das Feld ABTEILUNG
schreit förmlich nach einem "String Untertyp Set".
Und dann findest Du hire ein paar ältere Threads von mir im Archiv unter dem Stichwort "get_info()"
Das Eintragen von Daten in eine MySQL-Datenbank erfordert eigentlich zwei Schritte:
Die billige Art, einfach immer alles ungeprüft einzutragen (oder es zu versuchen) ist nicht die feine Art, auch wenn sie funktioniert.
Und dann noch eine Frage:
Was soll das mit "addslashes(htmlspecialchars())"?
richtiger wäre doch
mysql_escape_string(stripslashes(formularwert))
oder beim Datentyp Set eben
$abteilung = mysql_escape_string(stripslashes(implode(',',$_POST['abteilung']))) ## [1]
also in keutz dann:
insert into t_auftraege set abteilung
= '$abteilung';
Dabei muss man bei SET-Feldern aber (zumindest bei PHP 3.23.x noch) auf numerische Feldwerte verzichten. Die bereiten einem Kummer. Warum erkläre ich gerne extra, wenn es interesiert, bzw. kann man im Archiv schon finden.
[1] siehe hierzu aber die Abhandlung im Thread zu get_info()
Harzliche Grüße aus http://www.annerschbarrich.de
Tom