mana: checkboxen

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"!!!

  1. 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

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
  2. 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

  3. Hi,

    '".addslashes(htmlspecialchars($_POST['abteilung[]']))."',

    Nimm hier mal  '".addslashes(htmlspecialchars(implode(',',$_POST['abteilung'])))."',

    mfg

    PHP_Dude

    1. Nimm hier mal  '".addslashes(htmlspecialchars(implode(',',$_POST['abteilung'])))."',

      THX, diese Lösung klappt.

  4. 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:

    • Typ und Werteprüfung
    • Eintragung

    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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau