Hallo Leutz,
bin seit gestern am verzweifeln. Stelle meine Seiten jetzt auf CSS
um und möchte immer wiederkehrende Teile auslagern um sie später einfacher ändern zu können.
Speziell geht es jetzt darum ( Eigentlich was Einfaches ) einen Datensatz in die DB einzugeben, anzeigen und ggf. ändern zu können.
Ich habe das gleiche seit langer Zeit übrigens mit loop gemacht und da funktioniert es auch einwandfrei. Nur jetzt tauchen seltsame Probleme auf wenn ich es ohne Loop machen will.
Der Einfachheit halber hier jetzt das vereinfachte Schema:
Ich habe ein Template ( nennen wir es archiv ) welches immer wiederkehrende Formularteile enthält.
Das sieht dann so aus:
*****************************************************************
template archiv
*****************************************************************
<perl>
if($code==formulardaten)
{
out <<EOF;
<html>
<div">
<label>Feld1</label><input type="text" name="Feld1:="><br/>
</div>
</html>
EOF
}
if($code==formulardaten_holen)
{
out <<EOF;
<html>
<div">
<label>Feld1</label><input type="text" value="$Feld1" name="Feld1:="><br/>
</div>
</html>
EOF
}
</perl>
In diesem Beispiel ist der einzige Unterschied zwischen diesen beiden Blöcken, das im 2.Block als Wert value="$Feld1" steht. dieser Block wird später dazu benutzt um Daten aus der DB wieder anzeigen zu lassen.
*****************************************************************
template_a
*****************************************************************
Hier werden die Daten eingegeben und an das template_b gesendet.
Als Beispiel wird Apfel eingegeben.
<html>
<form name="_baseportal_form" method="post" action="http://www.domain.com/cgi-bin/baseportal.pl?htx=/verzeichnis/template_b&cmd=add" method=post enctype="multipart/form-data">
<include src=archiv code==formulardaten>
<input class="submit" type="submit" value="Daten absenden" name="senden">
</form>
</body>
</html>
*****************************************************************
template_b
*****************************************************************
Daten werden in die DB "geputtet" und gleich wieder angezeigt.
Bis hier stimmt noch alles. In der DB steht Apfel.
Die Daten können jetzt ggf. geändert werden und werden dann
an template_c gesendet.
Jetzt wird Apfel im Textfeld gelöscht und Birnen eingetragen.
<perl>
put [ "Feld1", "$Feld1",], "datenbankname";
</perl>
<perl>
get "Id==#", "datenbankname";
</perl>
<html>
<form name="_baseportal_form" method="post" action="http://www.domain.com/cgi-bin/baseportal.pl?htx=/verzeichnis/template_c&cmd=add" method=post enctype="multipart/form-data">
<input type=hidden name="Id:=" value="$Id">
<include src=archiv code==formulardaten_holen>
<input class="submit" type="submit" value="Daten absenden" name="senden">
</form>
</body>
</html>
*****************************************************************
template_c
*****************************************************************
<perl>
chg "Id==$Id", undef, "datenbankname";
</perl>
<perl>
get "Id==$Id", "datenbankname";
</perl>
<html>
<form name="_baseportal_form" method="post" action="http://www.domain.com/cgi-bin/baseportal.pl?htx=/verzeichnis/template_c&cmd=add" method=post enctype="multipart/form-data">
<input type=hidden name="Id:=" value="$Id">
<include src=archiv code==formulardaten_holen>
<input class="submit" type="submit" value="Daten absenden" name="senden">
</form>
</body>
</html>
Und hier passiert jetzt etwas Seltsames:
Im Feld1 steht jetzt Apfel Apfel Birnen !
Es wird also der alte Wert nochmal eingetragen + dem Neuen.
Es stehen jetzt also 3 Werte drin ????
Es müßte aber nur Birnen drinstehen.
Ich komme nicht dahinter, warum der bestehende Wert jetzt nicht geändert
wird sondern immer neue dazukommen.
Wie gesagt, das ähnliche Schema habe mit loop und da funktioniert das alles mit dem chg einwandfrei.
Irgendwie hat das was mit dem get und oder dem auslagern zu tun.
Wäre nett wenn jemand eine Idee hätte.
Gruß
Thomas