phpbar.de logo

Mailinglisten-Archive

[php] checkboxes

[php] checkboxes

Lutz Horn php_(at)_phpcenter.de
Mon, 11 Mar 2002 09:52:02 +0100


Hallo,

* Erik Bender [Mon, Mar 11, 2002 at 09:29:52AM +0100]:
> Mittels Array wird in einem Datenbankfeld 'kreditkarten' ein String
> dieser Form abgelegt:
> Amex Master Visa Diner EC (jeweils durch SPACE getrennt.)

Je nach Datenbank-System wäre es sinnvoll, hier einen speziellen Typ zu
verwenden. Unter MySQL gibt es dazu z.B. "set", also eine "Menge".

> <input type="checkbox" value="Amex" name="check_kredit[]" <?if
> ($row["kreditkarten"] = Amex) print "checked";?>>
> 
> Diese Checkbox habe ich für jede Kreditkarte angelegt. Aber wenn ich
> ein '=' setze, bleibt die Box immer unmarkiert, wenn ich ein '=='
> setze ist sie immer markiert. Unabhängig davon, was in dem String in
> der Datenbank steht.

Wie Du ja schon selbst gemerkt hast, ist der Zuweisungsoperator "=" hier
nicht sinnvoll. Außerdem solltest Du eine Zeichenkette immer in
Anführungszeichen einschließen, sonst wird sie als (nicht definierte)
Konstante betrachtet. In Deinem Beispiel vermutet PHP eine
Zeichenkettenkonstante mit dem Namen "Amex", die einen nicht definierten
Wert hat.

Der Vergleichsoperator "==" ist schon das, was Du verwenden solltest.
Die Frage ist nur, was Du genau vergleichst. Eine Zeichenkette "Amex
Master ...", wie Du sie oben angibst, ist nicht gleich der Zeichenkette
"Amex". Hier helfen Dir die String-Funktionen, z.B. strstr() oder
strpos() weiter.

Ich würde Dir aber empfehlen, Dein Datenbankmodell noch einmal zu
überdenken.

Gruß, Lutz


php::bar PHP Wiki   -   Listenarchive