Beitrag von wizard_merlin (32 Beiträge) am Mittwoch, 17.September.2003, 15:14.
HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
Antworten
Beitrag von mk (966 Beiträge) am Mittwoch, 17.September.2003, 15:34.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
ich habs in der lizensversion hingekrigt,
melde mich heut Abend.
Antworten
Beitrag von wizard_merlin (32 Beiträge) am Mittwoch, 17.September.2003, 15:50.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 17.September.2003, 17:48.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
Antworten
Beitrag von mk (966 Beiträge) am Mittwoch, 17.September.2003, 18:15.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
Antworten
Beitrag von wizard_merlin (32 Beiträge) am Mittwoch, 17.September.2003, 18:37.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
Antworten
Beitrag von mk (966 Beiträge) am Mittwoch, 17.September.2003, 18:42.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
Antworten
Beitrag von wizard_merlin (32 Beiträge) am Mittwoch, 17.September.2003, 19:05.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
Mmh, ich verstehe jetzt nicht recht was du damit meinst.
Mein Template läuft mit 24 Einzelfeldern problemlos,
von Auswahlmenü bis Textarea funktioniert alles, nur
der Bildupload macht Zicken.
Antworten
Beitrag von mk (966 Beiträge) am Mittwoch, 17.September.2003, 19:13.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
du kannst mit put if %_put; alle Felder mit einemmal übergeben,
oder so wie du jeden einzelnen.
andere können das bestimmt besser erklären.
Hier nun wie man das Dateifeld ändern kann.
nach dem man die Daten geholt hat, muß mann feststellen ob das Dateifeld belegt ist:
$csBild=$Bild?" checked":"";
$csBild2=$Bild?"":" checked";
dann später dies hier:
<input type=radio name="_filec_Bild=" value=0 $csBild>Datei behalten: $Bild
<input type=radio name="_filec_Bild=" value=1 $csBild2> Keine Datei
<input type=radio name="_filec_Bild=" value=2> Neue Datei:<br>
<input name="Bild:=" type="file" size=30 onfocus="a=this.form.elements; for(i=0; i<a.length; i++) if(a[i].name==this.name) break; a[i-1].checked=1;">
Antworten
Beitrag von wizard_merlin (32 Beiträge) am Mittwoch, 17.September.2003, 19:52.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
ist, glaube ich, nur eine Schreibersparnis
und hat wohl keinen tieferen Sinn. Um zu
verstehen um was es geht und wieso was
passiert ist die Einzelübergabe vermutlich
auch besser geeignet und übersichtlicher.
Danke für dein Beispiel, werde es verwenden
wenn bei mir alles klappt wie es soll.
Vielleicht kann ja doch noch jemand sagen
warum das nicht funktioniert mit der Übergabe
von dem Produktfoto. Stehe momentan mit dem
Rücken an der Wand und komme nicht weg davon :-(
wizard_merlin
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 17.September.2003, 20:21.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
Mhm - also nu hammer ja den Salat ;-)
ganz klar an deiner Speicheranweisung - erstens: Feldname anders als Du die Variable zum Speichern nennst und zweitens die "verrückte" Art zu speichern.
Probier doch mal aus, dir die Inhalte der Vars anzeigen zu lassen, einfach so:
out "\$Produktfoto ($Produktfoto) // \$ein_Produktfoto ($ein_Produktfoto)<br>";
und dann wird in den Klammern der tatsächliche Inhalt der Variablen angegeben.
Nu isses mir zwar unerklärlich, wieso er $ein_Hersteller abspeichert, da dürfte ja auch kein Wert drin sein oder speicherst du irgendwo irgendwelche Werte um?
Die von mk beschriebene Variante zum Speichern ist aber m.E. die bessere, da läuüfts fast elektrisch.
Der Hash %_put ist nur gefüllt, wenn du ein Formular an das Template mit Feldnamen der Form name="Feldname:=" übergibtst (also wichtig das doppelpunkt-istgleich Duo); und nur wenns den hash %_put gibt, wird dann gespeichert; es sei denn, du machst es tatsächlich hart und nutzt die Anweisung
put["feld",$feldinhalt], "datenbank";
Wenn du Formularfelder der Form name="Feldname=" (also nur das istgleich) übergibst, werden diese in den get-Hash geschrieben.
In beiden Fällen sind die Werte nach Templateaufruf direkt als Variable über Ihren Feldnamen ansprechbar - bei nem get aber werden sie dann mit den aktuellen Werten überschrieben (naja - da bin ich aber noch nich so richtig eindeutig dahintergestiegen wann und wie gleichnamige Key-Wertpaare aus %_get %_put oder %_loop im Scriptverlauf überschrieben werden...).
Das fixe put braucht man eigentlich eher so nicht oft; das ist mehr fürs mod und chg zu gebrauchen (wenn man nur bestimmte Feldinhalte ändern will, ist aber auch ein extra Kapitel, da nicht ganz "rund" in bp [gelle Christoph;-)???]
Das put legt ja einen Neuen Datensatz an und da ist ein
eher recht sinnvoll.
Ist halt immer etwas verzwickt, wenn du nicht alle Felder der DB im eigenen Formular hast und was ändern willst. Da werden dann keine komplett leeren Felder zugelassen, wenn ein leeres Formfeld übergeben wird, wird der Inhalt mit mod einfach halt mal nicht geändert - da muss man wieder das chg nehmen. Wenn man das aber nimmt und nicht explizit alle Feldwerte übergibt, werden die nicht übergebenen 'einfach mal so' geleert. Das zu umschiffen ist ein kleines Stück Programmierarbeit - ich hab mir da was gebaut, wo das dann im Endeffekt "sch..egal" ist, wie die Werte reinkommen, es passiert alles elektrisch und zwar werden beim Ändern einfach alle Feldwerte des zu ändernden Datensatzes geholt, mit $_put{feld} oder $_get{feld}, je nachdem ob %_put-Werte oder %_get-Werte ans Template übergeben wurden, verglichen und dann, wenn die reingekommenen Werte anders als die vorhandenen Werte sind, in den put-hash geschrieben und auf undef geändert. Das haut auch mit Dateifeldern hin, da das _filec_Feldname= ja im get-hash steht und der Basportal.pl sagt, sie solle mal das entsprechende mit der Datei machen (also löschen, ins voreingestellte Verzeichnis uploaden oder halt ändern [das ist dann beides, löschen und uploaden ;-)] - in die Datenbank wird nur der Dateiname abgespeichert, also wirklich nur die reinen alphanumerischen Zeichen).
So und dann speicherst du hart ab, da bin ich mir dann nicht ganz sicher, ob Dateifelder überhaupt mitnehmbar sind - der binäre Datenstrom des Dateiinhaltes wird durchs _fielec geregelt, der Name müsste aber wohl mit abgespeichert werden.
Bau mal dein Template testhalber auf das put if %_put um, vielleicht so:
put undef, "datenbank" if $datensatz_neu_speichern eq "Ja" && %_put;
Da brauchste nichts an deinen Parametern zu ändern (denk ich mal, kenne ja nur die paar Zeilen Code von dir) und es müsste dann gehen. Die Variante von mk ist auch nicht schlecht, vor allem, wenn man als Voreinstellung Kein Bild haben will.
Übrigens, die Terme
$csBild=$Bild?" checked":"";
$csBild2=$Bild?"":" checked";
kannst du auch bisserl auseinanderziehen und sind ne vereinfachte Schreibweise für ein wenn dann sonst
$csBild = $Bild ? " checked" : ""; # wenn in $Bild was steht, dann checked sonst nichts
$csBild2 = $Bild ? "" : " checked"; # analog vor halt nur wenn was in Bild,dann nichts sonst checked
und das dann unten eingesetzt ergibt schön elektrische Radiobuttons in Abhängigkeit vom Feldinhalt des Bildfeldes (aber halt abhängig vom alphanumerischen Inhalt - unabhängig, ob die Datei physikalisch vorhanden ist oder nicht - du merkst das, wenn du die mal per ftp auf dem Server löscht....)
So, nu hab ich ein halbes Handbuch geschrieben - hoffe, du kannst es halbwegs verstehen
Gruß
Ruben
Antworten
Beitrag von wizard_merlin (32 Beiträge) am Mittwoch, 17.September.2003, 20:56.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
wow, starker Tobak.
Da muß ich jetzt aber erst mal durchsteigen
und die kleinen grauen Zellen bemühen.
Ich Danke dir für die Ausführliche Erklärung
und hoffe die Lösung für mein Problem liegt
in deinem "Handbuch".
PS. Warum hat noch keiner eine Art Handbuch für den
Zugriff via Perl auf Baseportal geschrieben? Es könnten
Erklärungen und Beispieltemplates etc. zum Download
angeboten werden. Das Ganze würde sicher einige Euros
abwerfen können, ich zumindest wäre bereit dafür zu zahlen,
gerne sogar.
Danke Ruben und mk
Antworten
Beitrag von wizard_merlin (32 Beiträge) am Mittwoch, 17.September.2003, 18:27.
Re: HELP - Ich komme einfach nicht weiter mit dem Bildupload ...
Hi Ruben,
ich hab dein Beispiel nun 1:1 übernommen und das Ergebnis
ist wie gehabt, es geht einfach nicht. Die Auswahl des
entsprechenden Bildes funktioniert zwar, aber es wird
nicht auf dem Server abgelegt und auch nicht in der
Dateiausgabe mit einer möglichen Bilddatei ins Leere
verlinkt. Hab auch in der DB den Feldtyp überprüft
und der steht auf Datei, also ganz so wie es sein soll.
Was ich mir jetzt noch als Fehlerquelle vorstellen könnte
ist dieser put-Bereich zum speichern eines neuen Datensatzes:
schnipp --------------
}
if ($datensatz_neu_speichern eq "Ja") {
put ["Hersteller",$ein_Hersteller,
... ,
... ,
... ,
... ,
"Produktfoto",$ein_Produktfoto,
... ,
... ,
... ,
... ,
],"datenbank";
-------------- schnapp
$ein_Produktfoto stimmt ja so nicht, nur was gebe ich hier zum
speichern des Produktfotos an? Ich hoffe du kannst mir helfen,
Perl ist leider noch ein Buch mit 7 Siegeln für mich.
PS. Ist mir gerade erst aufgefallen. Sollte dies wirklich
die Fehlerquelle sein, dann trete ich mir selbst in den Hintern.
Gruß
wizard_merlin
Antworten