MySQL Wert einer Checkbox in Datenbank speichern
Uwe
- php
Hallo,
ein Datensatz einer Person enthält auch Checkboxes für eine genauere Beschreibung.
z.B - ist privat
- ist arbeitslos
- etc.
Wie kann ich den Wert in der Datenbank speichern, so daß wenn ich diesen Datensatz erneut aufrufe die Checkboxes wieder angekreuzt sind, sofern dies vorher getan wurde.
Ich hoffe ich habe mich verständlich ausgedrückt. Gruß und Dank für Bemühungen, Uwe
Hallo,
Wie kann ich den Wert in der Datenbank speichern, so daß wenn ich diesen Datensatz erneut aufrufe die Checkboxes wieder angekreuzt sind, sofern dies vorher getan wurde.
Schauen wir uns das Ganze mal verkehrt herum an. Wie kannst Du in HTML ein Checkbox vorselektieren?
(Ich kenn jetzt nicht die PHP-Syntax so wirklich, ich machs deshalb 'in Perl', aber im Prinzip sollte das auch in PHP gleich laufen)
Antwort: mit dem Attribut 'checked'.
Es muß also folgender Output rauskommen:
<input type="checkbox" name="privat" value="irgendwas" checked>
Du siehst schon, der Wert ist eigentlich unerheblich, auf's 'checked' kommts an.
An einfachsten würde es also sein, wenn Du in der Datenbank einfach 'checked' eingibst, und das dann auch beim Output der Checkbox mitangibst.
Sagen wir mal 'checked' steht im DB-Feld 'privat', wenn es ausgewählt wurde.
<input type="checkbox" name="privat" value="checked" $Werte{privat}>
('$Werte{privat}' enthält den Inhalt des DB-Feldes 'privat')
Der Nachteil dieser Vorgehensweise ist, daß dabei zuviel Speicherplatz in der Datenbank benötigt wird (mind. 7 Bytes pro Datensatz).
Deshalb lassen wir uns was anderes einfallen.
Machen wir es indirekt!! Wir verwenden ein Array, in das wir folgendes reinschreiben:
$Selektiert[0] = "";
$Selektiert[1] = " checked ";
<input type="checkbox" name="privat" value="1" $Selektiert[$Werte{privat}]>
In der Datenbank schreiben wir dann den Wert '1' rein, falls es selektiert wurde, und nichts falls nicht ;-)
Der Feldtyp könnte byte oder char(1) sein, ist eigentlich mehr oder weniger egal.
Alternativ zum Array könntest Du, in Perl zumindestens, ein Hash benutzen, um in der Datenbank ein ja/nein (j/n) zu verwenden. Dann siehts halt so aus:
$Selektiert{'j'} = " checked ";
<input type="checkbox" name="privat" value="1" $Selektiert{$Werte{privat}}>
Du siehst es gibt mehrere Varianten. Wichtig beim Entwickeln von Lösungen ist halt ab unzu mal das Pferd von hinten aufzuzäumen. Also das gewünschte Ergebnis auszuformulieren, und dann zu überlegen, wie Du am besten zu diesem Ergebnis kommst. Denk ich ;-)
Es gibt sicherlich noch andere Möglichkeiten, aber mir fällt momentan keine mehr ein.
Ich hoffe, ich bin jetzt nicht zu langatmig geworden.
Grüße
Klaus
Hallo Uwe, hallo Klaus,
Deshalb lassen wir uns was anderes einfallen.
Machen wir es indirekt!! Wir verwenden ein Array, in das wir
folgendes reinschreiben:$Selektiert[0] = "";
$Selektiert[1] = " checked ";
Ich will es nicht beschreien, aber IMHO klappt das in PHP mit dem
Array nicht so ganz; aber da der Grundansatz ja eine wenn/dann-Ab-
frage ist, würde ich es so machen:
if($privat == 1) { $privat = " checked "; } else { $privat = ""; }
Zu der feststellung, dass es auf den Wert nicht ankommt:
Irgendwie muss der Wert ja in die DB gelangen... und gerade bei der
Array bzw. if-Variante kommt es schon auf den value-Wert an, denn
der bildet ja den Bezug zum splitten des Array bzw. zur Ausführung
der Abfrage.
Und da der Wert einer CheckBox ja nur dann als Variable zur Verfügung
steht, wenn sie angekreuzt ist, genügt hier "0" bzw. "1"
Ich hoffe, ich bin jetzt nicht zu langatmig geworden.
IMHO ganz im Gegenteil. Das war ein Posting, wie Stefan es sich bei
(fast) allen Fragen wünscht und für das viele dankbar wären:
Beispielorientiert, praxisnah, mit Hilfe zur Selbsthilfe > Fördern der
Energie des Verstehens > Self-Prinzip ;-)
Das war Deine "gute Tag des Tages" *fg*
<img src="http://home.germany.net/100-80215/alex/images/promo/signet.gif" alt="">
<img src="http://home.germany.net/100-80215/alex/images/promo/akonline.gif" alt="">
Hallo Klaus, Hallo Alexander,
vielen Dank für die Lösung des Knotens. Das fehlende Glied war wirklich "checked". Dann funktioniert auch das:
<input type="Checkbox" name="es_persona" value="checked" <? if($mod_fix){echo $es_persona;}else{ echo $spalte[es_persona];} ?>> Es Persona
$mod_fix ist ein Wert der mit dem Forumlar abgeschickt.
Wird das Formular abgeschickt, dann ändert sich der Wert auf $es_persona, wenn nicht, dann wird der Wert aus der Datenbank ausgelesen.
Das MySQL-Feld habe ich mit ENUM definiert und den Wert "checked" als einzigen (leer geht dann auch) angegeben.
Nochmlas Danke, Uwe
Hallo Alexander,
IMHO ganz im Gegenteil. Das war ein Posting, wie Stefan es sich bei
(fast) allen Fragen wünscht und für das viele dankbar wären:Beispielorientiert, praxisnah, mit Hilfe zur Selbsthilfe > Fördern der
Energie des Verstehens > Self-Prinzip ;-)Das war Deine "gute Tag des Tages" *fg*
Danke für die Blumen. Das tut der Seele gut.
Ich hab mir halt die Postings der letzten Zeit angesehen, und mir ist aufgefallen, daß die Antworten (oft auch meine) auf viele Fragen zwar meist richtige und dem Problem entsprechende Lösungen anbieten, aber wenig dazu beitragen, daß der Fargende lernt, _wie_ Probleme überhaupt gelöst werden können.
"Gibt dem Hungernden nicht jeden Tag einen Fisch, lehre ihn das fischen" ist da ,glaube ich, das Motto, nach dem geantwortet werden sollte. Sicherlich ist da oft nicht so einfach, aber ich will es in Zukunft nach bestem Wissen und Gweissen versuchen.
Es gab in letzter Zeit einige Postings rund um die 'Gesprächs'-Kultur im Forum. Deine Antwort nehme ich als Gelegenheit , meine Meinung zum Thema kundzutun (mein Gott, klingt das geschwollen).
Anlaß für Fragen ist, daß der Fragende das wirklich nicht findet, wonach er sucht. Dabei ist erst mal unerheblich, ob die Lösung für andere trivial oder auch nicht ist. Es wurde keine Lösung für das Problem gefunden. Das ist erst einmal ein Fact.
Warum das so ist, dafür gibt es m.E. mehrere Gründe:
Ungeduld:
"Ach was, ich poste mal bevor ich mich anstrenge, irgendwer wird's schon wissen".
Diese Haltung ist, denk ich, nicht nur unverschämt, sonder hilft auf Dauer vor allem den Fragenden nicht. Sie werden nichts lernen, weil sie dann ja auch nur eine konkreten Antwort, am besten eine fertige Lösung, erwarten.
Eigentlich tun mir diese Leute leid, weil sie dadurch nie das wohltuende Gefühl des persönlichen Erfolges verspüren werden.
Dies sind auch die Leute, denk ich die Stefan in seinem Posting 'Ferien' als Therapie verschrieben hat.
Ich denk mir, die beste Art mit solchen Leuten umzugehen ist, sie einfach zu ignorieren, dann löst sich das Problem von selbst. Rügen oder beschimpfen bringt nicht viel, weil das wieder nur einen Unmut der Fragenden nach sich zieht, und dann entstehen halt Threads, wo nur mehr rumgeflegelt wird.
Probleme beim Formulieren einer Frage, bzw. beim Suchen nach einer Lösung:
Ich hab' füher mal EDV unterrichtet, dabei war das Wesentliche, daß ich lernen mußte das, daß verschiedene Leute verschiedene Methoden entwicklen, an ein Problem heranzugehen. Viele sehen den Wald vor lauter Bäume nicht mehr. Wenn was schief geht, dann ist oft Panik angesagt, und es fehlen die notwendigen gendanklichen Werkzeuge, den Grund des Fehlverhaltens rauszufinden.
Mein Beitrag dazu kann nur so aussehen, daß ich diesen Fragenden teilhaben lasse, _wie_ so ein Problem lösen würde, in der Hoffnung, hier nicht nur beim konkrete Problem zu helfen, sondern auch andere, ähnlich gelagerte, Probleme zu lösen lernen.
Ich glaube, das hast Du so treffend mit "Energie des Verstehens" ausgedrückt.
Mürrische Antworten, oder einfach nur hingeknallte Links sind m.E. nicht geeignet, wirklich weiter zu helfen. Wobei ich mir dessen schon bewußt bin, daß das oft einfach von der Tagesverfassung der einzelnen abhängt. Auch ich hab so meine Tage, da ist es besser, wenn mir niemand über den Weg läuft.
Fragen, die sich mit neume Terrain beschäftigen:
Hier kann ich nur sagen: "Auf daß es eine angeregte Diskussion unter 'Experten' komme"
Leider kommen solche Diskussionen nur sehr, sehr selten vor :-(
Es liegt an uns allen, der Intention von Stefan, die ihn dazubewegten, dieses Forum ins Leben zu rufen, zu folgen.
Ich hoffe, wenn ich oben gesagtes für micht umsetze, daß ich dem gerecht werden.
nochmals Danke
Klaus
Hallo klaus,
Danke für die Blumen. Das tut der Seele gut.
Na, Du hast es Dir ja auch verdient *g*
Ich hab mir halt die Postings der letzten Zeit angesehen, und mir
ist aufgefallen, daß die Antworten (oft auch meine) auf viele
Fragen zwar meist richtige und dem Problem entsprechende Lösungen
anbieten, aber wenig dazu beitragen, daß der Fargende lernt,
_wie_ Probleme überhaupt gelöst werden können.
... und das hatte Stefan unlängst bemängelt. Ich bin zu faul, den
Thread aus dem Archiv zu suchen, aber letzte Woche hatte Stefan hier
eine Step-by-Step-Lösung mit Erläuterungen gepostet und dann er-
läuternd hinzugefügt, dass das die Art ist, wie er sich antworten
wünscht.
"Gibt dem Hungernden nicht jeden Tag einen Fisch, lehre ihn das
fischen"
"Hilfe zur Selbsthilfe".
Dabei ist erst mal unerheblich, ob die Lösung für andere trivial
oder auch nicht ist. Es wurde keine Lösung für das Problem
gefunden. Das ist erst einmal ein Fact.
Jepp. Erstens gibt es ja den alten Spruch, wonach es keine dummen
Fragen, sondern nur dumme Antworten gibt (was ich mit der Einschränk-
ung der Zwei-Frame- und Nicht-unterstrichenen-Link-Problematik auch
hier gelten lassen würde) und zweitens ist es schwer zu beurteilen,
ob bzw. warum jemand sein Problem als schwerwiegend erachtet.
Das hatte mich an dem Content-Thread letztens auch ein bisschen
gestört: klar kann ich eine Frage abbürsten mit dem Hinweis "guter
Content braucht kein 'Clicki-Bunti'", aber habe ich das Recht, einem,
der einfach seine private Site machen will und diese - objektiv sicher
"unnötigen" oder zumindest nicht weltbewegenden Inhalte - optisch gut
aufbereiten will, die Legitimation seines Ansinnens zu entziehen?
IMHO ist es besser, wenn "seichte" Inhalte wenigstens gut dargestellt
werden, als die Masse der privaten Seiten, die nur so nach FP Express
_und_ Fehlbedienung schreien...
Diese Haltung ist, denk ich, nicht nur unverschämt, sonder hilft
auf Dauer vor allem den Fragenden nicht. Sie werden nichts
lernen, weil sie dann ja auch nur eine konkreten Antwort, am
besten eine fertige Lösung, erwarten.
Erstens würde man hier durch eine fertige Lösung nur diese "Haben-
will"-Mentalität bestärken und zweitens tut man wirklich keinem den
Gefallen. Ich denke da nur an den Thread vor paar Wochen, wo der
eine partout kein JavaScript begreifen wollte, sondern wirklich
penetrant eine fertige Lösung zum "copy&pase" wollte... und ich
bewundere immer noch Antje's Geduld...
Mein Beitrag dazu kann nur so aussehen, daß ich diesen Fragenden
teilhaben lasse, _wie_ so ein Problem lösen würde, in der
Hoffnung, hier nicht nur beim konkrete Problem zu helfen, sondern
auch andere, ähnlich gelagerte, Probleme zu lösen lernen.
Ich glaube, das hast Du so treffend mit "Energie des Verstehens"
ausgedrückt.
Ähem... "Die Energie des Verstehens" ist der Untertitel von SELFHTML
Mürrische Antworten, oder einfach nur hingeknallte Links sind
m.E. nicht geeignet, wirklich weiter zu helfen.
Wobei es im letzteren auf den Link ankommt: Wenn sich in SELFHTML
oder im Archiv bereits eine adäquate und "auskommentierte" Lösung
findet, kann man IMHO auch einen Link dahin setzen. Aber manche
reagieren auch wie der Pawlowsche Hund und setzen Links alleine nach
dem Überfliegen einer Message und merken gar nicht, dass es zwar
ein ähnlicher Sachverhalt ist, aber eine neue Facette dazugekommen ist
und die "gelinkte" Lösung nicht wirklich weiterhelfen wird/kann.
Fragen, die sich mit neume Terrain beschäftigen:
Hier kann ich nur sagen: "Auf daß es eine angeregte Diskussion
unter 'Experten' komme"
Leider kommen solche Diskussionen nur sehr, sehr selten vor :-(
Naja, wobei auch hier manche Leute einfach was posten und eher für
mehr Verwirrung denn für Klarheit sorgen. Bei komplexeren Sachen halte
ich entweder die Klappe, wenn mir die Zeit zum testen fehlt, oder
teste meine Lösung schnell durch, denn manchmal verhaddert sich auch
der Antwortende und löst zwar das Ursprungsproblem, fügt aber einen
neuen "Bug" hinzu - und dann wird's richtig lustig...
Es liegt an uns allen, der Intention von Stefan, die ihn
dazubewegten, dieses Forum ins Leben zu rufen, zu folgen.
...also das wirkliche SELF-Prinzip, das Verstehen und das Erlernen zu
fördern, umzusetzen; wobei man IMHO akzeptieren muss, dass es Leute
gibt, die eindeutig unter die Rubrik "beratungsresistent" fallen
(*g* Gruss an Wilhelm, der sich über einen bestimmten Poster immer
so ereifern kann *g*)
nochmals Danke
ein 'Danke' hätte auch gereicht ;-)
Schönes Wochenende!
<img src="http://home.germany.net/100-80215/alex/images/promo/signet.gif" alt="">
<img src="http://home.germany.net/100-80215/alex/images/promo/akonline.gif" alt="">
Hallo,
Ähem... "Die Energie des Verstehens" ist der Untertitel von SELFHTML
ups, da sieht man'S wieder. Jeder sieht das, was er sehen will, und das rundherum verschwindet.
Fragen, die sich mit neume Terrain beschäftigen:
Hier kann ich nur sagen: "Auf daß es eine angeregte Diskussion
unter 'Experten' komme"
Leider kommen solche Diskussionen nur sehr, sehr selten vor :-(
Naja, wobei auch hier manche Leute einfach was posten und eher für mehr Verwirrung denn für Klarheit sorgen.
Seh' ich nicht ganz so. Oft haben mir bei meinen Problemen auch ganz 'abwegige' Gedanken anderer die Birne für den absolut genialen Ansatz geöffnet. Stichwort 'Brainstorming'.
*nochimmerrotenkopfhab*
Klaus