put (Neue Datensätze schreiben) |
Definition:
Alle Felder sind optional. Ohne irgendeine Angabe werden die per URL oder einem Formular übergebenen Parameter genommen. Wird nur ein Parameter übergeben, wird in die Datenbank mit diesem Namen der Standard-Hash %_put geschrieben.
Beispiele:
put ["Name", "Gustav Griebig", "Auto", "BMW"], "kunden";
Schreibt einen neuen Datensatz in die Datenbank "kunden". Das Feld "Name" bekommt den Inhalt "Gustav Griebig" und das Feld "Auto" den Inhalt "BMW". Die einzelnen Werte geben also im Wechsel den Namen eines Feldes und den darin zu speichernden Inhalt an. Es müssen dabei nicht alle vorhandenen Felder angegeben werden (entspricht einem leergelassenen Feld in einem Formular), auch die Reihenfolge der Feldangabe ist egal (zuerst das Auto, dann der Name geht ebenfalls)
Man kann damit auch mehrere Datensätze auf einmal hinzufügen, einfach indem man einen Feldnamen, der bereits angegeben wurde wiederholt:
put ["Name", "Gustav Griebig", "Auto", "BMW", "Name", "Hans Haberl", "Auto", "VW Golf"], "kunden";
Schreibt zwei neue Datensätze in die Datenbank "kunden" und zwar Eintrag 1 mit Namen "Gustav Griebig" und dem Auto "BMW" und Eintrag 2 mit Namen "Hans Haberl" und dem Auto "VW Golf".
Aus verschiedenen Gründen ist diese Form für mehrere Datensätze aber nicht sonderlich geeignet. Zum ersten kann es Probleme geben, wenn Felder weggelassen werden und zum zweiten muss man ständig die Feldnamen wiederholen. Besser man verwendet gleich folgende Übergabeart:
put { Name => ["Hans", "Gisela", "Thomas"], Auto => ["Mercedes", undef, "Toyota"] }, "kunden";
Schreibt drei neue Datensätze in die Datenbank "kunden": Eintrag 1 mit Name "Hans" und Auto "Mercedes", Eintrag 2 mit Name "Gisela" und keinem Eintrag beim Auto und Eintrag 3 mit Name "Thomas" und Auto "Toyota".
Man kann auch vorher den Hash %_put selbst füllen:
%_put= ( Name => ["Stefan", "Tina"] Alter => [43, 39], ); put "datenbank";
Schreibt %_put in die Datenbank "datenbank".
Nach Beschreiben einer Datenbank mit dem Befehl put stehen in %_put_last die tatsächlich geschriebenen Werte:
put ["Name", "Sepp4", "Telefon", 23487623]; out "Id=$_put_last{Id}, Name=$_put_last{Name}, Telefon=$_put_last{Telefon}";
könnte z.B. folgende Ausgabe liefern:
Id=5, Name=Sepp, Telefon=23487623
Das Ermitteln des geschriebenen Eintrag ist meistens zum Erhalt der Id wichtig. Dafür existiert eine eigene Variable: $_put_id.
Sinnvoll ist es darüber hinaus bei von der Datenbank gesetzten Werten (z.B. das aktuelle Datum) oder wenn Werte beim Eintrag verändert werden (z.B. bei einem Zahlfeld, das auf 2 Nachkommastellen eingestellt ist):
put ["Datum", "jetzt", "Zahl", 3.1415926]; out "Datum=$_put_last{Datum}, Zahl=$_put_last{Zahl}";
würde als Ausgabe z.B.
Datum=2006-09-02,00:15.23#2, Zahl=3.14
ergeben. Mehrfacheinträge gehen natürlich auch:
<perl> put { "Name" => ["Andrea", "Beate", "Christoph"], "Telefon"=> [1234,5678,9012] }; out <<EOF; Id=$_put_last{Id}[0], Id=$_put_last{Id}[1], Id=$_put_last{Id}[2], EOF </perl>
Liefert die 3 vergebenen Id's der Einträge. Oder (für die echten Perl-Freaks ;-) ) die Ausgabe als einzeilige Schleife:
out "Id=$_, " foreach (@{$_put_last{Id}});