array und formular

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

  • array und formular

    Hallihallo,

    ich möchte ein paar eingaben mittels formular einem array übergeben, das geht ja auch wunderbar.

    nun kann ich die daten ja mit foreach ausgeben. Ich möchte aber diese array Daten in verschiedenen Datensätzen speichern.

    Es werden z.b. folgende array werte übergeben


    Code:
    id,artikel_nr,bez
    bei 2 artikeln sieht das array also folgendermaßen aus:

    Code:
    id,artikel_nr,bez,id,artikel_nr,bez
    nun möchte ich jeweils id,artikel_nr,bez in einem eigenen datensatz speichern.

    Das Ergebnis müsste mir praktisch das array element id als $id etc.. ausgeben damit ich es für eine INSERT query nutzen kann.

    Der Hintergrund des ganzen, ich möchte über ein formular eingaben mehrerer artikel ermöglichen. Der User kann auswählen wieviel eingabefelder er will und kann dann dementsprechend viele artikel hinzufügen.

  • #2
    worüber du dich informieren solltest, sind multidimensionale arrays.
    damit lassen sich solche klassischen strukturen hervorragend verwalten.

    Kommentar


    • #3
      werde ich mir mal ansehen.. danke für den tipp..

      Kommentar


      • #4
        hmm..

        kann das sein, dass ich da weit mehr als 2 dimnsionen anlegen muss? Kann doch nicht sein,oder?

        Kommentar


        • #5
          ne.
          PHP-Code:
          $arr[0]['id'] = 17;
          $arr[0]['artikel_nr'] = 'A000017';
          $arr[0]['bez'] = 'Tigertanga';

          $arr[1]['id'] = 18;
          $arr[1]['artikel_nr'] = 'A000018';
          $arr[1]['bez'] = 'Voodoopuppe von jhaustein'
          etc.

          Kommentar


          • #6
            aha.. hätte mich jetzt auch gewundert danke ich werds so mal probieren

            Kommentar


            • #7
              gut, auf das array greif ich nun folgendermaßen zu...


              PHP-Code:

              foreach($artikel as $a){

                   foreach(
              $a as $element){
                      echo 
              "$element<br><hr noshade>";
                      }

              die formularfelder sehen folgendermaßen aus:

              Code:
              <input type="text" name="artikel[0][id]">
              <input type="text" name="artikel[0][art_nr]">
              <input type="text" name="artikel[1][id]">
              <input type="text" name="artikel[1][art_nr]">
              aber wie kann ich jetzt die einzelnen elemente für meine INSERT query nutzen?

              Ich möchte alle zusammengehörigen elemente in einen datensatz packen. Hab mit arrays noch nicht so viel gearbeitet..

              Kommentar


              • #8
                1. solltest du nicht auf register globals setzen,
                2. mach mal ein print_r($_POST) und schau dir das ergebnis <pre>-formatiert an.

                Kommentar


                • #9
                  zu 1: Ist eigentlich egal, da das Programm eine lokale Anwendung sein wird.

                  zu2: also ich hab jetzt rausgefunden dass ich 2 array habe und so darauf zugreifen kann

                  PHP-Code:
                  echo $_POST[artikel][0][artikel_name]; 
                  aber ich glaub ich bin zu doof diese erkenntnis in ein foreach einzubauen das mit dann die entspechenden werte in meine query einfügt..

                  die query sieht ja noch so aus:

                  PHP-Code:
                  $query "INSERT INTO bestellungen(id,best_nr,best_datum,lieferant,warengruppe,art_nr,vpe,menge,ek)";
                  $query .= "VALUES '$id','$best_nr','$best_datum','$lieferant','$warengruppe','$art_nr','$vpe','$menge','$ek')"
                  der erste Teil (mit den tabellen feldern) bleibt ja.
                  ich muss also den 2. Teil mit den Werten aus dem Formular so umbauen dass er die werte aus dem array einträgt. Ich weiß aber nicht wie ich diese werte da rein bastel..

                  hab mal in meinem schlauen php buch nachgelesen.. aber auch nichts ähnliches gefunden

                  Kommentar


                  • #10
                    PHP-Code:
                    $string 'hier und da ' $array['element'][0] . ' und da und ' 
                       
                    $array[0]['wieauchimmer'] . ' hier und dort.';

                    echo 
                    $string

                    Kommentar


                    • #11

                      Kommentar


                      • #12
                        den letzten beiden posts entnehme ich, dass wir beide wissen, wie man array-elemente mit strings verbindet und dann zu testzwecken ausgibt. was hält uns beide davor auf, unsere update-query mit den richtigen werten zu versehen?

                        Kommentar


                        • #13
                          Das verbinden von strings und array ist ja auch kein problem

                          Ich versteh nur nicht was hiermit gemeint ist:

                          Original geschrieben von penizillin
                          PHP-Code:
                          $array['element'][0]
                          $array[0]['wieauchimmer']; 
                          beziehst du dich hier auf meinen array namen oder auf das globale array (nennt man das so?)

                          Das zweite was ich nicht verstehe ist

                          ich füge mit den formfeldern ja z.B. 2 oder mehrere Artikel in die db ein.
                          Ich nehme als bsp. nur mal den artikel namen..

                          dann sieht das ja so aus (form felder)

                          Code:
                          <input type="text" name="artikel[0][artikel_name]";
                          weitere felder.. der 1. dimension
                          
                          <input type="text" name="artikel[1][artikel_name]";
                          weitere felder der 2. dimension.
                          ich nehme an, das hier ist die 1. dimension : $array['element'][0]
                          und das die 2. dimension : $array[0]['wieauchimmer']

                          wieviel eingabefelder jedoch angezeigt werden ist nicht fest vorgegeben.. es können mal 2 mal 10 sein.. je nachdem was der anwender wünscht.

                          die felder würden sich also folgendermaßen erweitern..


                          <input type="text" name="artikel[1][artikel_name]"> usw.

                          mit anderen worten muss sich die query ja anpassen.. kann auch sein, ich habs total falsch verstanden..

                          so langsam versteh ich mich selbst nicht mehr.. ich mag keine arrays..

                          Kommentar


                          • #14
                            ach was,
                            "arrays sind klasse"


                            natürlich sollte mein code nur als beispiel dienen.

                            die zahl (nummer des artikels) solltest du durch eine laufvariable ersetzen, die du in der schleife durchläufst und die einzelnen werte (art.nr., titel, etc) in eine query packst.

                            Kommentar


                            • #15
                              Funktioniert jetzt alles soweit, habs sogar mit nem 1 dimensionalen Array hinbekommen

                              Nur hab ich jetzt ein anderes Problem... mittels eingabefeld kann ich auswählen wieviel artikel ich eingeben möchte, darauf hin werden dann soviele felder generiert wie angegeben wurden.. funktioniert auch..

                              wenn ich mich jetzt aber entschließe weniger artikel einzutragen als ich felder habe dann werden die leeren felder dennoch als datensatz in die db einfgefügt..

                              wie kann ich das verhindern.. es soll zum schluss so funktionieren wie bei phpmyadmin.. dort kann ich z.b. sagen 10 felder hinzufügen.. werden nur 5 felder ausgefüllt werden diese auch nur berücksichtigt.

                              Kommentar

                              Lädt...
                              X