Ralf: Formular / Schleife

Hi Folks,

ich generiere per for-Schleife mehrere Texteingabefelder.
Jedes Feld hat einen Namen, der sich wie folgt unterscheidet:

<input name="headline_1" type="text">
<input name="headline_2" type="text">
<input name="headline_3" type="text">
<input name="headline_4" type="text">
usw...

PHP:
<input name="headline_<?=$m?>" type="text">

Die Daten werden auf eine andere Seite übergeben (post).
Dort sollen die Daten per INPUT in eine DB geschrieben werden.

Wie muß ich eine Schleife program. die diese Daten in eine DB schreibt.

Die Anzahl der Eingabefehler sollte variabel sein!
d.h. die Schleife, die diese Daten entgegen nimmt und in die DB schreibt, sollte variabel sein.

Gruß
Ralf

  1. Hi Folks,

    ich generiere per for-Schleife mehrere Texteingabefelder.
    Jedes Feld hat einen Namen, der sich wie folgt unterscheidet:

    PHP:
    <input name="headline_<?=$m?>" type="text">

    Schreib es doch so:
    <input type="text" name="headline[]">
    damit wird in PHP automatisch ein Array mit allen Werten angelegt. Dieses dann einfach mit implode() zusammenketten -> dynamischer String mit allen Werten.

    Die Daten werden auf eine andere Seite übergeben (post).
    Dort sollen die Daten per INPUT in eine DB geschrieben werden.

    Wie muß ich eine Schleife program. die diese Daten in eine DB schreibt.

    je nachdem, wie deine tabelle aufgebaut ist. du wirst ja wohl kaum eine tabelle mit variabler spaltenanzahl haben, oder? wie willst du dann eine variable anzahl von werten reinschreiben, wenn nicht als einzelnen String, und den bekomsmt du mit implode() (siehe oben).

    Hope that helps,
                      Michael

    1. Hi Michael,

      DANKE

      Wenn ich dich richtig verstanden habe:

      Die Schleife erzeugt
      <input type="text" name="headline[]">
      <input type="text" name="headline[]">
      <input type="text" name="headline[]">
      <input type="text" name="headline[]">
      usw...

      Auf der andern Seite habe ich dann ein Array headline[].

      Ich möchte die Daten nicht verbinden!
      Jede Eingabe soll ein neuer Datensatz in der DB werden.

      Gruß

      1. Hi Michael,

        DANKE

        Wenn ich dich richtig verstanden habe:

        Die Schleife erzeugt
        <input type="text" name="headline[]">
        <input type="text" name="headline[]">
        <input type="text" name="headline[]">
        <input type="text" name="headline[]">
        usw...

        Auf der andern Seite habe ich dann ein Array headline[].

        korrekt

        Ich möchte die Daten nicht verbinden!
        Jede Eingabe soll ein neuer Datensatz in der DB werden.

        also wenn ICH nun DICH richtig verstehe *g*, dann mach es so:

        foreach($headline as $datensatz)
        {
          $sql_query="INSERT INTO tabellenname TEXT='$datensatz'";
          $ergebnis=mysql_query($sql_query) or die("Befehl nix gut");
        }

        Gruß

        1. Hi Michael,

          genau {{{DANKE}}}

      2. Hallo,

        Ich möchte die Daten nicht verbinden!
        Jede Eingabe soll ein neuer Datensatz in der DB werden.

        Das ist, wenn man die Normalisierungsregeln für Datenbanken zugrunde legt, dann auch richtig so. Du musst dann eben nur eine Relation (Fremdschlüssel) mit abspeichern.

        Außerdem macht das die Schleife zum Speichern und lesen wesentlich einfacher.

        Der Nachteil besteht allerdings daarin, dass man beim Speichern auch n einzelne UPDATEs bekommt. Das geht etwas auf die Performance der DB und außerdem muss man n-mal zittern, obs einen Fehler gibt.

        Beim Lesen (SELECT) dauert das nur unwesentlich länger, als wenn die Daten in einem Monsterdatensatz stehen würden, vorausgesetzt, du hast einen Index auf dem Sekundärschlüssel. Aber das gehört sich ja so *gg*

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.