Re: @CB put/mod(Datei)/Nachfrage;-) - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Samstag, 10.September.2005, 18:47.
    Re: @CB put/mod(Datei)/Nachfrage;-)

      wenn du das automatisch willst (also das Radiofeld für "Neue Datei" - "Datei behalten" - "keine Datei" dann kommst du nicht umhin, den JavaScript-Teil, der von Baseportal genuzt wird zu nutzen.
      Der Feldname dafür muss zwingend mit "_filec_Dateifeldnam=" gebaut werden, und auch die Werte müssen beibehalten werden - 0 für Bild behalten, 1 für kein Bild (bei Ändern eines DS und vorh. Bild wird dieses bei entsprechender Einstellung in der DB gelöscht!) 2 für Neues Bild (das alte wird bei entsprchender Einstellung der DB und bei mod/chg gelöscht, wenn eins vorhanden ist).
      Man kann dies auch nicht nachholen, evtl. könnte der Feldname anders lauten und vor dem mod per Bedingungsabfrage je nach Wert eines anderen Feldes direkt in den Put-Hash geschrieben werden.
      Ich hab mir da ein Stück Standardcode dazu gebaut, die mir automatisch für eigene Formulare die Felder zusammenbaut.
      Hier mal ein bischen Code:

      ---schnipp
      ....
      if ($action eq "n"){# wenn Form f. Neuanlage DS sein soll
      
      ...
      # Die Radiofelder für Datei-Aktionen in Var
         $feld1_datei=<<EOF;
         <input type=radio name="_filec_bild=" value=1 checked="checked"> Kein Bild </input>
         <input type=radio name="_filec_bild=" value=2> Neues Bild: </input><br>
      EOF
      
      ...
      } elsif ($action eq "c") { # wenn Form f. Änderungen DS sein soll
      ...
         $feld1_datei=<<EOF;
         <input type=radio name="_filec_bild=" value=0 $cistfile> Bild behalten ($bild)</input>
         <input type=radio name="_filec_bild=" value=1 $cnofile> Kein Bild </input>
         <input type=radio name="_filec_bild=" value=2> Neues Bild </input><br>
      EOF
      
      ...
      }
      # und nun die wichtigsten Teile des Formulars
      $tab_form=<<EOF;
          <form name="$use" action="$_link$a_ra_link"  method=post enctype="multipart/form-data" onSubmit="return form_check1()" onReset="return confirm('Eingaben wirklich verwerfen?')">
      ....
                 <!-- Feld für Formularaktion, Neu oder Ändern kommt per Link, post und/oder Voreinstellung mit rein-->     <input type=hidden name="act=" value="$act"></input>            <!-- Feld für Datensatznummer (ID) beim Ändern per Link bzw. im post mit übergeben -->     <input type=hidden name="dsn=" value="$dsn"></input>
      ....
                 Bild:<br>
          $feld1_datei<br>
                 <input type=file name="bild:=" 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;"></input>
      
      ....
      ---schnapp
      Wobei zwingend für eine richtige Funktion die Reihenfolge zu beachten ist, erst die Radiobuttons, dann das Dateifeld. Eine Vorbelegung von HTML-File-Feldern ist nicht möglich, deshalb muss man den Dateiname aus der DB als Text ausgeben (s.a. RFCs zum File-Feld)
      Ich bin mir nicht ganz sicher, aber ich dachte MK hat da noch ne andere Lösung gefunden, musste mal im Forum suchen...
      Hoffe, es hilft dir weiter.
      Ruben


    Ihre Antwort:

    Name: EMail: EMail bei Antwort? WWW:
    Titel:
    Text:

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Claus (4645 Beiträge) am Mittwoch, 7.September.2005, 18:49.
    @CB put/mod(Datei)

      Hallo Christoph,

      ich habe mal eine etwas "pikante" Frage;-)

      Wenn ich ein eigenes Template für Normal- oder Optionsfelder mit get und mod mache, ist die $Var-Übergabe recht simpel:

       <TD align=middle bgColor=#000000><FONT size=2><FONT 
                          color=#ffdab6><FONT 
                        face=Arial>Vorname:</FONT></FONT></FONT></TD>
                        <TD bgColor=#000000><FONT size=2><FONT color=#ffdab6><FONT 
                          face=Arial><INPUT value=$Vorname 
                          name=Vorname:=></FONT></FONT></FONT></TD>
      

      Wie sieht das aber mit dem Dateifeld aus?

      Einfach "$Dateifeldname" beim 1. Input z.B.

      <TD bgColor=#000000><FONT size=2><FONT color=#ffdab6><FONT 
                          face=Arial><INPUT type=radio CHECKED value=0 
                          name=_filec_Dateifeld=>Datei behalten: $Dateifeld
      

      oder wohin damit?;-))

      Denke ich mal wieder falsch oder zu kompliziert;-)

      Gruß

      Claus

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 7.September.2005, 18:53.
    Re: @CB put/mod(Datei)

      Äh, was willst Du denn genau machen? Im Prinzip musst Du einfach den HTML-Code kopieren wie ihn baseportal erzeugt ;-)

     Antworten

    Beitrag von Claus (4645 Beiträge) am Mittwoch, 7.September.2005, 19:09.
    Re: @CB put/mod(Datei)

      Das soll ein eigenständiges Template werden, ohne do action, do_all usw.;-)

      mal in groben Zügen:

      <perl>
      

      angemeldeter user, Zugriff auf eigene Daten:

      get.........usw;
      

      Ausgabe:

      Formular mit den bisherigen Inhalten ausgeben.....

      Änderungen vornehmen, Bild/er hinzufügen und abschicken

      Datensatz ändern

      </perl>
      

     Antworten

    Beitrag von Claus (4645 Beiträge) am Mittwoch, 7.September.2005, 20:01.
    Re: @CB put/mod(Datei)/Nachtrag;-)

      Hätte das natürlich auch weiterhin mit do_all usw. machen können, aber da werden "zuviele" Informationen im Link mit ausgegeben;-))

      ach ja, vielleicht sollte ich die Tests morgen unter Miete machen, falls es einen Crash gibt;-)

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Mittwoch, 7.September.2005, 20:52.
    Re: @CB put/mod(Datei)/Nachtrag;-)

      So in der Art

      ----
      get ... <form> ... etc.
      
       my($o, $fsel)=("", " checked");  $name = "Feldname";  $value = $_get{$name};  if($value ne "")  {  out "<input type=radio name=\"_filec_$name=\" value=0 checked>behalten: $value ";  $fsel="";  }  out "<input type=radio name=\"_filec_$name=\" value=1$fsel> keine";  out "<input type=radio name=\"_filec_$name=\" value=2> neue:<br>";  out "<input name=\"$name:=\" type=\"file\" size=20 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 Claus (4645 Beiträge) am Mittwoch, 7.September.2005, 21:06.
    Re: @CB put/mod(Datei)/Nachtrag;-)

      Danke,

      Dachte, ich könnte das einfacher haben;-)

      an "if" hatte ich alternativ auch schon gedacht, aber eleganter wäre natürlich, den Quelltext zu nehmen und mit den durch get geholten Inhalten($Ort, $Land, $Dateifeld....) zu füllen und danach die neuen Inhalte mit mod.... an die Id zu übergeben.

      Vielleicht hat Christoph ja noch 'ne Idee, sonst werde ich morgen mal testen;-))

      Gruß

      Claus

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 9.September.2005, 16:56.
    Re: @CB put/mod(Datei)/Nachfrage;-)

      Habe das Problem anders gelöst, nachdem mir das Beispiel von Pouraga zu "kompliziert" war;-)

      Bleibt aber noch die Frage, wie der mod-Befehl aussehen muss.

      <perl>
      

      ..........

      ----schnipp

      if ($cmd eq "mod")
      {
      mod "Id==$_Id",["Feld1", "$Feld1",..... ], "datenbank"; 
      }
      if (......)
      {
      

      get "Id==$_Id", "datenbank";


      $bcBild=$Details?" checked":"";
      $bcBild2=$Details?"":" checked";
       
      out <<EOF;
                    <TABLE cellSpacing=2 cellPadding=4 border=0>
                      <FORM name=_baseportal_form0 
                      action=baseportal.pl?..........<INPUT 
                      type=hidden value=mod name=cmd=><INPUT type=hidden.......
      


       
                      <TBODY>
                      <TR>
                        <TD align=middle bgColor=#000000><FONT size=2><FONT 
                          color=#ffdab6><FONT 
                        face=Arial>Details:</FONT></FONT></FONT></TD>
                        <TD bgColor=#000000><FONT size=2><FONT color=#ffdab6><FONT 
                          face=Arial><INPUT type=radio $bcBild value=0 
                          name=_filec_Details=>Datei behalten: $Details 
                          <INPUT type=radio value=1 $bcBild2 name=_filec_Details=> Keine Datei 
                          <INPUT type=radio value=2 name=_filec_Details=> Neue 
                          Datei:<BR><INPUT 
                          onfocus="a=this.form.elements; for(i=0; i<a.length; i++) if(a[i].name==this.name) break; a[i-1].checked=1;" 
                          type=file size=30 name=Details:=></FONT></FONT></FONT></TD></TR>
                      <TR>
                        <TD align=middle bgColor=#000000><FONT size=2><FONT 
                          color=#ffdab6><FONT 
                          face=Arial>Bundesland:</FONT></FONT></FONT></TD>.......
      

      ----------schnapp

      Jetzt die Frage:

      Muss beim mod auch noch jedes Dateifeld mit "eingebaut" werden in etwa so:

      mod "Id==$$_Id", ["_filec_Details", 2, "Details", "$Details"], "datenbank";
      

      oder läuft das außerhalb des mod-Befehls automatisch?

      Ich hoffe, ich habe mich jetzt nicht zu kompliziert ausgedrückt;-)


      Gruß

      Claus

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 10.September.2005, 14:15.
    Re: @CB put/mod(Datei)/Nachfrage;-)

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Samstag, 10.September.2005, 18:47.
    Re: @CB put/mod(Datei)/Nachfrage;-)

      wenn du das automatisch willst (also das Radiofeld für "Neue Datei" - "Datei behalten" - "keine Datei" dann kommst du nicht umhin, den JavaScript-Teil, der von Baseportal genuzt wird zu nutzen.
      Der Feldname dafür muss zwingend mit "_filec_Dateifeldnam=" gebaut werden, und auch die Werte müssen beibehalten werden - 0 für Bild behalten, 1 für kein Bild (bei Ändern eines DS und vorh. Bild wird dieses bei entsprechender Einstellung in der DB gelöscht!) 2 für Neues Bild (das alte wird bei entsprchender Einstellung der DB und bei mod/chg gelöscht, wenn eins vorhanden ist).
      Man kann dies auch nicht nachholen, evtl. könnte der Feldname anders lauten und vor dem mod per Bedingungsabfrage je nach Wert eines anderen Feldes direkt in den Put-Hash geschrieben werden.
      Ich hab mir da ein Stück Standardcode dazu gebaut, die mir automatisch für eigene Formulare die Felder zusammenbaut.
      Hier mal ein bischen Code:

      ---schnipp
      ....
      if ($action eq "n"){# wenn Form f. Neuanlage DS sein soll
      
      ...
      # Die Radiofelder für Datei-Aktionen in Var
         $feld1_datei=<<EOF;
         <input type=radio name="_filec_bild=" value=1 checked="checked"> Kein Bild </input>
         <input type=radio name="_filec_bild=" value=2> Neues Bild: </input><br>
      EOF
      
      ...
      } elsif ($action eq "c") { # wenn Form f. Änderungen DS sein soll
      ...
         $feld1_datei=<<EOF;
         <input type=radio name="_filec_bild=" value=0 $cistfile> Bild behalten ($bild)</input>
         <input type=radio name="_filec_bild=" value=1 $cnofile> Kein Bild </input>
         <input type=radio name="_filec_bild=" value=2> Neues Bild </input><br>
      EOF
      
      ...
      }
      # und nun die wichtigsten Teile des Formulars
      $tab_form=<<EOF;
          <form name="$use" action="$_link$a_ra_link"  method=post enctype="multipart/form-data" onSubmit="return form_check1()" onReset="return confirm('Eingaben wirklich verwerfen?')">
      ....
                 <!-- Feld für Formularaktion, Neu oder Ändern kommt per Link, post und/oder Voreinstellung mit rein-->     <input type=hidden name="act=" value="$act"></input>            <!-- Feld für Datensatznummer (ID) beim Ändern per Link bzw. im post mit übergeben -->     <input type=hidden name="dsn=" value="$dsn"></input>
      ....
                 Bild:<br>
          $feld1_datei<br>
                 <input type=file name="bild:=" 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;"></input>
      
      ....
      ---schnapp
      Wobei zwingend für eine richtige Funktion die Reihenfolge zu beachten ist, erst die Radiobuttons, dann das Dateifeld. Eine Vorbelegung von HTML-File-Feldern ist nicht möglich, deshalb muss man den Dateiname aus der DB als Text ausgeben (s.a. RFCs zum File-Feld)
      Ich bin mir nicht ganz sicher, aber ich dachte MK hat da noch ne andere Lösung gefunden, musste mal im Forum suchen...
      Hoffe, es hilft dir weiter.
      Ruben

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 10.September.2005, 19:49.
    Re: @CB put/mod(Datei)/Nachfrage;-)

      Hallo Ruben,

      besten Dank erstmal für die ausführliche Antwort. Werde mich, wenn nicht wieder mal was unvorhergesehenes dazwischen kommt, morgen damit in Ruhe auseinandersetzten.

      Problem ist allerdings auf den ersten Blick, wenn man mehrere Dateifelder hat, wird das Template ganz schön "aufgebläht".

      Hatte auch schon mal daran gedacht, über "if"-Abfragen das Dateifeld auf Inhalt zu prüfen, z.B. $Dateifeld =, <> oder leer.

      Egal, ich werde mich damit befassen. Mal schauen, was dabei rauskommt;-)

      Gruß

      Claus

     Antworten


     
 Liste der ersten 150 Einträge:Einklappen Zur Eingabe 
 Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!