Felix Schwarzer: for-Schleife in einer Mysql-Datenbank

Hallo,
ich habe mit jQuery eine Funktion zum erstellen von Inputfeldern.
In PHP gebe ich die ganz einfach mit einer for-Schleife aus.

<?
for($i=0; $i < count($geninput); $i++)
   {
   sort($geninput );
   echo $geninput[$i] . "<br />";
   }

?>

Klappt auch perfekt. Meine Frage ist wie ich die Inputfelder in einer Mysql-Datenbank speichern kann. Für jedes Feld soll eine neue Reihe angelegt werden.
Die Tabelle sieht so aus: |id |feld |
Kann mir jemand helfen? :)

danke im vorraus schonmal,
Felix Schwarzer

  1. Tach!

    Meine Frage ist wie ich die Inputfelder in einer Mysql-Datenbank speichern kann. Für jedes Feld soll eine neue Reihe angelegt werden.

    Erstelle für jedes Feld ein INSERT-Statement (oder alternativ ein Multi-INSERT-Statement). Was ist deine konkrete Frage dazu?

    dedlfix.

    1. Hallo danke für die schnelle Antwort!

      wie meinst du das? soll ich jedes Input mit seinem Key ansprechen? Ich generiere die mit dem Name="input[]" also ein Array.

      Meine Frage wäre wie sieht der Code aus? Wie sieht der konkrete INSERT-Befehl aus?

      :)
      danke,
      Felix Schwarzer

      1. Hi,

        jedes Input Feld hat ja einen Namen, In deinem Fall vermutlich ein Array, z.B. <input type="text" name="wert[]" />.

        In PHP wird dies als Array erkannt und du kannst es z.B. mittles for-Schleife auslesen:

        for($i = 0; $i < sizeof($_POST["wert"]); $i++) {  
          // Hier drin kannst du nun den INSERT Befehl aufrufen  
          INSERT INTO xyz (x,...) VALUE('".$_POST["wert"][$i]."',...);  
          // Dieser wird dann so oft durchgeführt, bis $i > sizeof($_POST["wert"]) ist. Somit bekommst // du alle Werte in die Datenbanktabelle.  
        }
        

        Gruß
        Jackson

        1. Tach!

          for($i = 0; $i < sizeof($_POST["wert"]); $i++) {

          // Hier drin kannst du nun den INSERT Befehl aufrufen
            INSERT INTO xyz (x,...) VALUE('".$_POST["wert"][$i]."',...);
            // Dieser wird dann so oft durchgeführt, bis $i > sizeof($_POST["wert"]) ist. Somit bekommst // du alle Werte in die Datenbanktabelle.
          }

            
          foreach ist in dem Fall besser, da das gesamte Array durchlaufen werden soll. foreach ($\_POST["wert"] as $value) und dann $value verwenden.  
            
          Auch wenn der Code nur beispielhaft sein soll (und die INSERT-Zeile kein gültiges PHP ist), ist zumindest das Einfügen des Wertes in das INSERT-Statement konkret genug notiert, um einen der häufigsten Programmierfehler zu erkennen. In den Benutzereingaben können alle mögliche Zeichen stehen, die im besten Fall zu Fehlern, im ungünstigen Fall zu ungewollten Statements führen können. [Kontextechsel beachten!](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel)  
            
            
          dedlfix.
          
          1. Hallo nochmal,

            ich wollte wissen wie in PHP for-Schleifen in eine DB eingetragen werden, bzw. Arrays. Bisher kannte ich nur den Umgang mit einzelnen Variablen und einzelnen Werten.
            Danke für die Antworten, das habe ich verstanden. Ich werde mal versuchen das ganze umzusetzen, vielen Dank nochmal für die Antworten.

            Felix Schwarzer

            1. Hallo Felix,

              ich wollte wissen wie in PHP for-Schleifen in eine DB eingetragen werden, bzw. Arrays.

              vielleicht meinst du das Richtige, diese Formulierung ist aber sehr verunglückt. Denn es wird keine for-Schleife in eine DB eingetragen, auch kein Array.

              Bisher kannte ich nur den Umgang mit einzelnen Variablen und einzelnen Werten.

              Es gibt keine besondere Magie um Schleifen und Arrays. Du übergibst immer nur _Werte_ an die DB - z.B. Zahlenwerte oder Strings. Ob diese Werte in einfachen Variablen abgelegt sind oder in einem Array, das in einer Schleife durchlaufen wird, macht keinen Unterschied: Die for- oder foreach-Schleife läuft durch, du liest in jedem Schleifendurchlauf einen Wert aus dem Array (oder mehrere, die zusammen _einen_ Datensatz ausmachen), setzt ein Kommando an die DB ab (z.B. ein INSERT), und fährst dann mit dem nächsten Wert fort.

              So long,
               Martin

              --
              Bitte komme jemand mit einem *g* zum Wochenende, damit nicht über mich gelacht wird.
                (Gunnar Bittersmann)
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Tach!

        wie meinst du das? soll ich jedes Input mit seinem Key ansprechen? Ich generiere die mit dem Name="input[]" also ein Array.

        Was möchtest du genau tun? Den Inhalt des Feldes speichern und dabei der Datenbank die ID-Vergabe überlassen? Dann ist die ID für dich beim Einfügen von einfachen Daten (ohne weitere Beziehungen zu anderen) uninteressant.

        Meine Frage wäre wie sieht der Code aus? Wie sieht der konkrete INSERT-Befehl aus?

        Wie konkreter Code aussieht, beschreiben die jeweiligen Handbücher (PHP und MySQL). 08/15-INSERT-Statements finden sich auch in jedem PHP-mit-MySQL-Tutorial. Nochmal, wo genau steckt dein Problem? Beschreibe bitte, was du dir für einen Ablauf vorgestellt hast und wo dabei das Problem liegt, es in konkreten Code umzusetzen!

        dedlfix.