Mehrere Daten in EIN Tabellenfeld eintragen

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

  • Mehrere Daten in EIN Tabellenfeld eintragen

    Ich bastle schon was länger an einem Skript, das die Daten eines Formulars,
    bei dem man mehrere Daten auswählen kann, die dann zusammengesetzt
    in ein Tabellenfeld eingetragen werden sollen. Im Formular arbeite ich entweder
    mit diesem Formularfeld

    <select name="tier" size="4" multiple class="f200"><option value="hund">Hund</option> ... </select>

    oder mit meheren dieser

    <input type="checkbox" value="hund" name="tier"><input type="checkbox" value="katze" name="tier"> ...

    So, jetzt möchte ich die Angaben des Formularfeldes in NUR EIN Tabellenfeld
    zusammenfassen, wobei die Werte mit Komma getrennt werden sollen.
    Bislang mach ich das so, wie im folgenden gezeigt, was allerdings nicht klappt.

    $_POST['tier'] = array();
    $tiere = join(",",$_POST['tier']);

    $sql = "UPDATE zirkus SET tiere='$tiere' WHERE id='$id' AND email='$email'";
    $do = mysql_query($sql_buy_2);


    Was mache ich falsch?
    Ich weiß schon, dass es an der Array-Zeile (oder der nächsten Umgebung) liegt.

  • #2
    Ein array erzeugt man so:
    <select name="tier[]" size="4" multiple class="f200">
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Ausserdem solltest Du Dir diese Zeilen mal angucken
      PHP-Code:
      $_POST['tier'] = array(); 
      $tiere join(",",$_POST['tier']); 
      wenn Du erst das Feld 'tier' mit einem leeren Array überschreibst, wird in der nächsten Zeile nicht viel fürs join da sein.

      Und hier ist die Query nicht in $sql_buy_2 sondern in $sql
      PHP-Code:
      $sql "UPDATE zirkus SET tiere='$tiere' WHERE id='$id' AND email='$email'"
      $do mysql_query($sql_buy_2); 

      Kommentar


      • #4
        Danke soweit, aber wie kann ich dafür sorgen, dass eben alle Tiere,
        die man ausgewählt hat, in EIN Feld eingetragen werden?

        Wenn ich KEIN neues Array aufmache, kann ich doch alleine mit der Zeile

        $tiere = join(",",$_POST['tier']);

        auch nicht sicherstellen, dass die ausgewählten Tiere, durch Kommata
        getrennt, in ein Feld eingesetzt werden. Ich bekomme einen Parse-Error.

        In normale Sprache übersetzt, will ich folgendes erreichen:
        "Wenn das Formular abgeschickt wird, nimm alle Werte, die im Formularfeld
        >>Tier<< ausgewählt wurden und setze sie - durch Kommata getrennt -
        in das Feld >>tiere<< in der Datenbank ein."

        Kommentar


        • #5
          Bei mir funktioniert das:
          PHP-Code:
          <?
          if (is_array($_POST['tier']))
              echo join(',', $_POST['tier']);
          ?>
          <form action="<?=$PHP_SELF?>" method="POST">
              <select name="tier[]" size="4" multiple>
                  <option value="hund">Hund</option>
                  <option value="katze">Katze</option>
              </select>
              <input type="checkbox" value="hund" name="tier[]">
              <input type="checkbox" value="katze" name="tier[]">
              <input type="submit">
          </form>
          Was Du sicherheitshalber noch einfügen solltest, ist eine Abfrage ob $_POST['tier'] ein Array ist. Sonst stellt sich join quer, wenn Du nichts im Formular ausgewählt hast.

          Kommentar


          • #6
            zeig mal din formular,
            deinen parse error und deinen code.
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Original geschrieben von phake
              In normale Sprache übersetzt, will ich folgendes erreichen:
              "Wenn das Formular abgeschickt wird, nimm alle Werte, die im Formularfeld
              >>Tier<< ausgewählt wurden und setze sie - durch Kommata getrennt -
              in das Feld >>tiere<< in der Datenbank ein."
              Das ist aber boese. Schau' dir mal folgendes an:
              http://ffm.junetz.de/members/reeg/dev/DSP/

              und da besonders das Kapitel 3, und 3.4
              http://ffm.junetz.de/members/reeg/dev/DSP/node6.html

              HTH, jansoch.

              Kommentar


              • #8
                Das Formular:
                PHP-Code:
                <form action="tiereintrag.php" enctype="multipart/form-data" method="post">
                Kunden ID <input type="text" size="24" class="f200" name="id">
                Email <input type="text" size="24" class="f200" name="email">
                Tiere <select name="tier[]" size="4" multiple class="f200"><option value="hund">Hund</option><option value="katze">Katze</option> ... </select>
                <
                input type="submit" size="24" class="f200" name="submit" value="Tiere eintragen">
                </
                form


                Das Skript:

                ...
                PHP-Code:
                if ($real_email != $email) { 
                $message "Unter diesen Angaben ist leider kein Kunde in unserer Datenbank zu finden." 
                } else { 
                $tiere join(",",$_POST['tier']); 

                $sql "UPDATE zirkus SET tiere='$tiere' WHERE id='$id' AND email='$email'"
                $do mysql_query($sql); 
                    
                $message "Ihre Daten wurden erfolgreich ge&auml;ndert. Alle Tere wurden eingetragen."

                Die Fehlermeldung:

                Parse error: parse error in /home/.../tiereintrag.php on line 11

                "Line 11" ist die Zeile, mit dem JOIN-Befehl, wenn ich das richtig sehe (ist was schwer in meinem Programm zu identifizieren)
                EDIT:
                php-tags by wurzel
                Zuletzt geändert von Wurzel; 25.01.2004, 13:29.

                Kommentar


                • #9
                  bei $message ist die zeile nicht abgesclossen => ;

                  und benutz bitte die php-tags, siehe ^
                  Kissolino.com

                  Kommentar


                  • #10
                    "Line 11" ist die Zeile, mit dem JOIN-Befehl, wenn ich das richtig sehe (ist was schwer in meinem Programm zu identifizieren)
                    OffTopic:
                    sehr witzig
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar

                    Lädt...
                    X