Nur ausgewählte Datensäzte einfügen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nur ausgewählte Datensäzte einfügen

    Hallo,

    ich möchte daten aus einem formular in eine mysql tabelle einfügen, bei dem eine checkbox aktiviert ist, die restlichen felder sollen nicht eingefügt werden.

    Hintergrund

    Ich lese aus einer Tabelle Artikel aus, die bestellt werden können. Die Werte werden in Textfelder eingelesen.. Nun gibt es z.b eine Auswahl mit 20 Artikeln die bestellt werden können. Mittels Checkbox sollen die Artikel zur Bestellung ausgewählt werden können. Diese gewählten Artikel sollen nun in die Datenbank gespeichert werden, aber auch nur diese, nicht die unselektierten.

    Die Checkboxen haben als aktivierten Wert die ID (Primärschlüssel) des Artikels.

    Überlegung

    Ich dachte mir, man könnte die ganzen Artikel nach dem absenden der Form in ein array laden und dann die array Einträge entfernen bei denen der wert der checkbox = '' ist.

    Ich habe leider keine array funktion gefunden die sowas ermöglicht. Ich weiß auch nicht ob das der richtige ansatz ist..

    Man könnte natürlich auch alle artikel einfügen lassen und danach mit DELETE die felder löschen bei denen der checkbox wert leer ist, aber wenn bei längeren listen 200 Artikel oder so erst eingespeichert werden und danach 180 wieder gelöscht werden.. net wirklich toll..

    Vielleicht hat ja schonmal jmd. so was gemacht oder kann mir helfen..

    Danke im Vorraus

  • #2
    Ansatz ist schon falsch.

    Wozu holst du die artikel und füllst damit ein formular?

    Richtig: Du holst die Artikel, füllst nur die Ids in ne checkbox. :

    <input type="checkbox(?)" name="ids[$id]" ...>
    vielleicht geht auch
    <input type="checkbox(?)" name="ids" value="$id" ...>
    da musst du dir das verhalten mal ansehen, ich habs gerade nicht im kopf.

    den rest schreibst du ganz normal auf die Seite, schließlich hast du es ohnehin schon in der datenbank.

    dann sendest du das form ab, und erhältst im array $_POST['ids'] alle die IDs, die der Kunde haben will. der rest interessiert dich ohnehin nicht.

    Anhand der Ids kannst du dann weiterarbeiten..

    Comment


    • #3
      die checkboxen wollte ich eh so in ein array packen

      <input type="checkbox" name="auswahl[$i]">

      stimmt, die felder erhalten ja nur die id wenn sie aktiviert sind

      Dann iss es ja mal wieder einfacher als zuerst gedacht

      Comment


      • #4
        gibt dennoch ein problem!

        Ich übergebe nicht nur die id per checkbox sondern auch die zu bestellende menge in einem textfeld, somit steh ich wieder am anfang

        Comment


        • #5
          nee nicht wirklich. Dass die bestellte menge mit übergeben werden muss, ist ja kein problem.

          1. kannst du dir die checkbox dann auch sparen, weil du anhand der menge bestimmen kannst, ob bestellt wird, oder nicht
          2. kannst du leere felder mit empty() prüfen. Praktischer weise wird afaik 0 auch als leer erkannt.

          Comment


          • #6
            Nenn die Textfelder doch menge[$i], dann kannst du per
            PHP Code:
            foreach ($_POST['ids'] as $id)
              echo 
            $_POST['menge'][$id]; 
            darauf zugreifen

            Vorausgesetzt, du verwendest $i als value für deine checkboxen
            Ich denke, also bin ich. - Einige sind trotzdem...

            Comment


            • #7
              zu 1. Die Checkbox brauche ich damit ich die Artikel id übergeben kann, sonst weiß ich ja nicht was ich bestelle

              Comment


              • #8
                ach bin ich doof wenn bei menge nichts eingetragen ist erscheint der datensatz ja auch nicht im $_POST array

                Comment


                • #9
                  ach bin ich doof wenn bei menge nichts eingetragen ist erscheint der datensatz ja auch nicht im $_POST array
                  ist dem so?

                  was spricht gegen

                  input type="text" name="menge[ID]"

                  ?

                  aber schau dir doch einfach mal an, wie die ganzen anderen leute einen warenkorb erstellen? bist sicher nicht der erste...

                  Comment


                  • #10
                    Original geschrieben von TobiaZ
                    ist dem so?

                    was spricht gegen

                    input type="text" name="menge[ID]"

                    ?

                    aber schau dir doch einfach mal an, wie die ganzen anderen leute einen warenkorb erstellen? bist sicher nicht der erste...
                    aber wie verhindere ich nun, dass die leeren formfelder auch in das array übergeben werden ?

                    kann ich sagen dass er nur die felder in das array packt bei denen die menge = 0 ist?

                    oder muss ich über sql eine DELETE Abfrage starten die alle felder löscht bei denen die menge leer ist?
                    Last edited by yakuzza; 18-10-2005, 13:27.

                    Comment


                    • #11
                      aber wie verhindere ich nun, dass die leeren formfelder auch in das array übergeben werden ?
                      2. kannst du leere felder mit empty() prüfen. Praktischer weise wird afaik 0 auch als leer erkannt.

                      kann ich sagen dass er nur die felder in das array packt bei denen die menge = 0 ist?
                      Klar, aber was soll dir das bitte bringen? Willst du herausfinden, welche Artikel der kunde nicht bestellt???

                      oder muss ich über sql eine DELETE Abfrage starten die alle felder löscht bei denen die menge leer ist?
                      quatsch.

                      Comment


                      • #12
                        ... vielleicht solltest du (@yakuzza) einfach mal etwas mehr nachdenken - die Umsetzung ist nicht besonders kompliziert, und ich denke du kriegst das selbst hin.

                        Also: erst einmal den Ablauf logisch aufstellen, und dann an der Umsetzung arbeiten (und wie TobiaZ schon sagte, schau dir einfach mal ein bisschen Code von anderen an)
                        [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

                        [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

                        [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
                        (from here)

                        Comment

                        Working...
                        X