6 Checkboxen in ein Datenfeld in DB speichern?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 6 Checkboxen in ein Datenfeld in DB speichern?

    Hallo,

    ich habe ein Formular erstellt, wo 6 Stück checkboxen sind.

    In der mysql-Datenbank habe ich ein Feld mit Namen "Veranstaltungsort"

    Wie kann ich jetzt, wenn ich die 2 Checkbox anwähle, diese auch in der Datenbank unter Veranstaltungsort abspeichern.

    Es soll möglich sein, alle 6 checkboxen in ein Datenbankfeld zu speichern.

    Kann mir da jemand helfen
    LG, m-werk

  • #2
    erstell eine tabelle veranstaltungen und eine veranstaltungsort. in der tabelle veranstaltungsort legts du noch ein feld an, das auf die veranstaltungen hinweist. dann kanst du die tabellen mit einem join verknüpfen. das nennt sich normalisierung und eine schöne einführung findest du bei wikipedia

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Das hab ich mir auch schon gedacht.

      Mein Vorschlag: Ich erstelle noch eine 2. Datenbank mit den Orten, welche ich auch gleich befülle.

      Jetzt hab ich nur noch ein Problem damit:

      Wie sieht denn das Script zum Speichern in den DB's aus?

      Ich speichere Name Adresse und e-mail in der Personen-DB.
      Funktioniert ohne weiters bei mir.

      Jetzt hat man im Formular ja auch noch die Möglichkeit, 6 Orte mittels Checkbox auszuwählen.

      In der DB hat ja jeder Ort eine eigene ID. Wie bekomme ich diese ID in die Personen-DB, wenn ich den Ort im Formular anklicke?

      Das mit dem Abrufen der Liste aus der Datenbank ist mir dann schon klar.
      LG, m-werk

      Kommentar


      • #4
        keine zweite datenbank ein zweite tabelle!.

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          OK, das hatte ich auch gemeint.

          In der 1. Tabelle habe ich jetzt Name Adresse OrtID usw. stehen.

          OrtID wird verbunden mit ID in der 2. Tabelle

          Dort habe ich jetzt ID und Ort drinn stehen.

          Jetzt habe ich nur noch das Problem mit dem Speichern in Tabelle 2.
          LG, m-werk

          Kommentar


          • #6
            viel einfacher wäre, du speicherst in deine spalte veranstaltungsort, anhand imlode(); einen string mit den werten aus der checkbox vorausgesetzt er ist als array angelegt:
            beispiel -> 1,3,5
            Zuletzt geändert von pippo; 07.04.2006, 14:23.
            In Flames - Pinbal Map
            Becoming the Archetype - No Fall Too Far
            Pantera

            Kommentar


            • #7
              morgen ..

              sooo dann wollen wir mal..

              es gibt im grunde zwei verschiedene möglichkeiten:

              zum einen könnten wir ein ENUM datenfeld verwenden (was unschön und speicherintensiv ist)..

              die cleverere alternative heißt bitmasken.

              es geht tatsächlich nur um 6 veranstaltungsorte?

              dann haben wir kein problem

              die orte bekommen keine fortlaufende id, sondern wie folgt:

              erster ort: 1
              zweiter ort: 2
              dritter ort: 4
              vierter ort: 8
              fünfter ort: 16
              sechster ort: 32

              und so weiter..

              die checkboxen können dann die werte erhalten und vor dem einfügen in die datenbank einfach aufaddiert werden

              name aller checkboxen wäre dann zum beispiel ortid[]

              wichtig sind die klammern, die dafür sorgen, dass ortid als array hinterher zur verfügung steht..

              dann zum beispiel sowas:

              $neueortid=0;
              foreach ($_POST['ortid'] as $anid) $neueortid+=$anid;

              sooo..

              und schwupps brauchst du nur noch neueortid zu speichern..

              die abfrage würde man dann mit einem logischen und realisieren, etwa in der art:

              select * from orte, leute WHERE ((orte.id & leute.ortid)>0)

              bingo.. wir kriegen alle orte, die in ortid drin stecken..

              nur als ansatz gedacht.. vielleicht sehe ich auch dne wald vor bäumen nicht..

              greetz, high
              Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
              When everything else fails, manipulate the data...
              Beschriftungen / Großformatdruck / Werbemittel

              Kommentar


              • #8
                ich würde dir ja zu einer n zu m verknüpfung raten:

                Code:
                tabelle leute  |        tabelle relation    |        tabelle orte
                               |                            |        
                id             |        leuteid             |        id
                ...            |        orteid              |        ...
                dann kannst du einfach die beziehung zwischen leuten und orten in die tabelle relation speichern.
                bsp: person x hat id 3 und soll mit orten 2,3 und 8 verknüpft werden.

                INSERT INTO relation(leuteid, orteid)
                VALUES (3,2), (3,3), (3,8)


                abfrage:
                SELECT * FROM leute l, relation r, orte o
                WHERE l.id = r.leuteid AND o.id = r.orteid

                Kommentar


                • #9
                  Original geschrieben von pippo
                  viel einfacher wäre, du speicherst in deine spalte veranstaltungsort, anhand imlode(); einen string mit den werten aus der checkbox vorausgesetzt er ist als array angelegt:
                  beispiel -> 1,3,5
                  Keine gute idee. Das stichwort normalisierung ist ja schon gefallen.

                  greets
                  (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                  Kommentar


                  • #10
                    Hallo Leute,

                    erstmal Danke für die Hilfen, aber ich muss sagen, dass ich da nicht durchblicke.

                    Ich habe mir diese Posts des öfteren jetzt durchgelesen und durch den Kopf gehen lassen.

                    Ich fang mal an, wass ich nicht kappiere:

                    1:
                    die orte bekommen keine fortlaufende id, sondern wie folgt:
                    erster ort: 1
                    zweiter ort: 2
                    dritter ort: 4
                    vierter ort: 8
                    fünfter ort: 16
                    sechster ort: 32

                    und so weiter..

                    die checkboxen können dann die werte erhalten und vor dem einfügen in die datenbank einfach aufaddiert werden
                    Ich hatte mir gedacht, dass ich hinter jeder Checkbox eine Zahl schreibe, welche ich dann in die DB übergebe z.B.

                    Ort1 = 1
                    Ort2 = 2
                    Ort3 = 3 usw.

                    In der Personen-Tabelle wird dann entweder 1, 2, 3 oder 4 usw. im OrtNummernfeld geschrieben

                    Dann bei der Abfrage wird einfach dieses Feld mit dem Feld verbunden, welches sich OrtID in der Orte-Tabelle steht.

                    Das klingt für mich logisch.

                    Was ich aber nicht kann ist folgendes: Ich habe 6 Checkboxen mit jeweils einen Wert dahinter. Ich habe aber nur 1 Datenfeld für alle 6 Checkboxen.

                    Wie kann ich diese Werte der Checkboxen in das Datenfeld schreiben?
                    Es kann der User sowieso nur 1 Checkbox auswählen.

                    Was ich noch dazu sagen muss ist:
                    Ich hab noch sehr wenig ahnung in PHP. Darum bitte ich euch, etwas nachsicht mit mir zu haben, wenn ich es nicht ganz schnalle.

                    LG, m-werk
                    LG, m-werk

                    Kommentar


                    • #11
                      ahhh.. jetzt..

                      es geht gar nicht darum, einem user mehrere orte zuzuordnen.

                      sondern nur einen aus einer auswahl?

                      dann haben wir also genaugenommen keine checkboxen, sondern radio-buttons?

                      gut.. dann sollte das so aussehen:


                      <input type="radio" name="ortid" value="1"/>Erster Ort<br/>
                      <input type="radio" name="ortid" value="2"/>Zweiter Ort<br/>

                      usw..

                      wichtig: die radiobuttons müssen alle den selben "name" bekommen, sonst funktioniert das nicht. Damit hast du auch das Problem gelöst, dass man nur einen auswählen kann (das macht der browser dann von aleine)

                      der wert (value) der ausgewählten box wird dann mit dem formular übergeben, so dass du in dem auswertenden script in $_REQUEST['ortid'] ganz genau den ausgewählten wert drin stehen hast und diesen so auch in die datenbank schreiben kannst..


                      greetz, high
                      Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                      When everything else fails, manipulate the data...
                      Beschriftungen / Großformatdruck / Werbemittel

                      Kommentar


                      • #12
                        Hallo, das hat ja prima funktioniert. Genau das habe ich gesucht. Das speichern funktioniert genauso, wie ich es wollte.

                        2 Fragen habe ich jetzt aber trotzdem noch.

                        1. Wie bekomme ich denn jetzt noch das aktuelle Datum und die Uhrzeit hinein. Dafür habe ich ein Datenfeld namens datum erstellt. Es würde mir auch reichen, die aktuelle Uhrzeit hineinzubekommen.

                        2. Das mit der Abfrage erweist sich doch als Problem bei mir.

                        Ich habe ein Formular, welches ein List-Menü hat. In dieses habe ich nun alle Orte (alle 6 Orte) als Listenwerte eingegeben habe.

                        Wenn ich nun einen Ort auswähle, wie komme ich dann zum ergebniss?

                        Für das Ergebnis habe ich schon eine eigene Seite erstellt, in die dann dies in einer Tabelle aufgelistet wird.

                        PS: Eigentlich bräuchte ich gar keine 2 Tabelle für die Orte. Ich könnte ja bei der Radio-Box als Value gleich den Ort eingeben und dieser wird dann in der Tabelle, wo auch die Kundendaten stehen gespeichert.

                        Ist das dann nicht einfacher für die Abfrage?
                        LG, m-werk

                        Kommentar


                        • #13
                          Hallo,

                          so, das mit dem Datum hat sich erledigt. Das habe ich hinbekommen.

                          Weiters habe ich jetzt nicht 2 Tabellen sondern nur eine. In dieser Tabelle habe ich ein Datenfeld mit ORT. Darin werden jetzt die Orte gespeichert, welche der User im radio-Button auswählt.

                          Das funktioniert jetzt alles.

                          Dafür habe ich ein Select Problem.
                          Es funktioniert folgende Abfrage ohne Probelme. (Es werde alle Daten ausgelesen.)

                          PHP-Code:
                          include("db_connect_pw.php");
                          $result mysql_query("SELECT * FROM zukunftsinvestments ORDER BY ID DESC");
                          $reihen mysql_num_rows($result);
                          $zeigen floor($reihen 100);
                          if(!
                          $start) { $start 0; }
                          $result1 mysql_query("SELECT * from zukunftsinvestments order by ID desc limit $start,100");
                          ?> 
                          Dieser Code geht prima.

                          Jetzt habe ich aber eine Abfrageseite und darin habe ich ein Feld namens Auswahl1.

                          Wenn jetzt der Ort eingegeben wird, kommt folgende Abfrage zur geltung:

                          PHP-Code:
                          $result mysql_query("SELECT * FROM zukunftsinvestments where Ort like '$Auswahl1' ORDER BY ID DESC");
                          $reihen mysql_num_rows($result);
                          $zeigen floor($reihen 100);
                          if(!
                          $start) { $start 0; }
                          $result1 mysql_query("SELECT * from zukunftsinvestments where Ort like '$Auswahl1' order by ID desc limit $start,100");
                          ?> 
                          Wenn ich jetzt in der Seite im Feld Auswahl1 den Ortname eingebe (welcher ja auch in der Tabelle unter Ort steht) kommt kein Ergebniss.

                          Woran kann das jetzt liegen? Es ist doch eine einfache SELECT Anweisung oder?

                          LG, m-werk
                          Zuletzt geändert von m-werk; 10.04.2006, 11:44.
                          LG, m-werk

                          Kommentar


                          • #14
                            Morgen..

                            du hast da einen kleinen Flüchtigkeitsfehler eingebaut.

                            deine Abfrage vergleicht gehen die zeichen folge "Auswahl1" nicht gegen die variable $Auswahl1

                            das $ fehlt....


                            greetz, high
                            Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                            When everything else fails, manipulate the data...
                            Beschriftungen / Großformatdruck / Werbemittel

                            Kommentar


                            • #15
                              Das habe ich doch eingebaut (hab meinen vorigen Beitrag editiert). Hab dies auch schon bemerkt.

                              Das funktioniert aber trotzdem nicht.
                              LG, m-werk

                              Kommentar

                              Lädt...
                              X