formfields=-EingabeDatum - 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 H.Fehde (724 Beiträge) am Dienstag, 24.Juni.2003, 22:28. WWW: bei123.de
    formfields=-EingabeDatum

      Problem mit formfields: Mit nachfolgendem kleinen Perlcode kann ich verhindern, dass alle mit formfields ausgeschlossenen Felder beim Ändern mit Leerzeichen überschrieben werden.

      <perl>
      if (%_put && $cmd eq "mod")
      {
      get "Id==!$Id","$db";
      map {$_loop{$_}=$_put{$_}} keys(%_put);
      %_put=%_loop;
      }
      </perl>
      

      <do action=all db=test formfields=-Passwort,Alter,EingabeDatum>
      ....

      Allerdings funzt das nicht mit Datumsfeldern vom Typ Nutzereingabe, da ja dann das Datum in drei Teile ($_EingabeDatum_Tag, ....e.t.c) gesplittet wird.
      Gibst es da vielleicht ne elegante Lösung, so dass es auch mit diesem Datum funzt ?

      H.Fehde


    Ihre Antwort:

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

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von H.Fehde (724 Beiträge) am Dienstag, 24.Juni.2003, 22:28. WWW: bei123.de
    formfields=-EingabeDatum

      Problem mit formfields: Mit nachfolgendem kleinen Perlcode kann ich verhindern, dass alle mit formfields ausgeschlossenen Felder beim Ändern mit Leerzeichen überschrieben werden.

      <perl>
      if (%_put && $cmd eq "mod")
      {
      get "Id==!$Id","$db";
      map {$_loop{$_}=$_put{$_}} keys(%_put);
      %_put=%_loop;
      }
      </perl>
      

      <do action=all db=test formfields=-Passwort,Alter,EingabeDatum>
      ....

      Allerdings funzt das nicht mit Datumsfeldern vom Typ Nutzereingabe, da ja dann das Datum in drei Teile ($_EingabeDatum_Tag, ....e.t.c) gesplittet wird.
      Gibst es da vielleicht ne elegante Lösung, so dass es auch mit diesem Datum funzt ?

      H.Fehde

     Antworten

    Beitrag von H.Fehde (724 Beiträge) am Dienstag, 24.Juni.2003, 22:35.
    Re: formfields=-EingabeDatum - Ergänzung

      Sorry:
      es muß nattürlich lauten:
      <do action=all db=test formfields=-Passwort,Alter allfields=Name,Ort,EingabeDatum>
      

      Das EingabeDatum soll also schon angezeigt werden und auch änderbar sein.
      H.Fehde

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Dienstag, 24.Juni.2003, 23:08.
    Re: formfields=-EingabeDatum - Ergänzung ->laut Gedacht

      >Das EingabeDatum soll also schon angezeigt werden und auch änderbar sein.
      

      Wenn das Feld in Formfilds vorhanden ist dann brauchst du es auch nicht in deinem Script.

      Was anderes: Wenn ich das so richtig gesehen habe, dann kann man "garnichtmehr" Felder leeren.

      Man müsste schon nur die Felder übernehmen die nicht im formfields vorhanden sind. (dann ist das Prob oben auch gelösst)

     Antworten

    Beitrag von H.Fehde (724 Beiträge) am Dienstag, 24.Juni.2003, 23:22.
    Re: formfields=-EingabeDatum - Ergänzung ->laut Gedacht

      EingabeDatum soll sichtbar und auch änderbar sein.

      Nicht geändert werden dürfen die Felder Passwort und Alter, deshalb ein "Minus", es sollen die alten Werte erhalten bleiben.

      Im %_put steht aber das änderbare EingabeDatum gesplittet, im %_loop aber nicht. Andereseits stehen aber im %_loop die Felder mit Werten, die unverändert bleiben sollen. Wie soll ich dies dem %_put sagen ?

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Dienstag, 24.Juni.2003, 23:29.
    Re: formfields=-EingabeDatum - Ergänzung ->laut Gedacht

      In der Art funktioniert es:


      if(%_put){
      get "Id==$_put{Id}";
      $_put{Passwort}=$Passwort; 
      $_put{Alter}=$Alter; 
      }
      

      <do action=all db=test formfields=-Passwort,Alter allfields=Name,Ort,EingabeDatum>



      ...bin vonhin davon ausgegangen das du vorhast was generell gültiges zu finden.

     Antworten

    Beitrag von H.Fehde (724 Beiträge) am Dienstag, 24.Juni.2003, 23:31.
    Re: formfields=-EingabeDatum - Ergänzung ->laut Gedacht

      will was generell gültiges finden un d deshalb auf so Sachen wie
      $_put{Passwort}=$Passwort; 
      $_put{Alter}=$Alter; 
      

      natürlich verzichten.

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Mittwoch, 25.Juni.2003, 00:23.
    Re: formfields=-EingabeDatum - Ergänzung ->laut Gedacht

      ...hatte ich es mir doch gedacht.


      Aber ich sehe gerade du nimmst die Schlüssel von %_put, das könnte sogar funktionieren. (scheint sonst noch niemand drauf gekommen zu sein)

      Laute Gedanken:

      Da könnte man jetzt entweder nen mehr oder weniger kompliziertes Gerüst hinter hängen was die Schlüssel die zu einem Datumsfeld gehören in %_put (EingabeDatum_Tag ... etc.) zu den Schlüssel EingabeDatum in %_loop zuordnet und dann je nach dem entweder die ganzen oder den einen in %_put überträgt.


      Oder ne andere sache währe es das ganze andersrum zu machen man holt sich die Namen der Felder aus .fields
      get "","$db.fields";
      die nicht in %_put vorhanden sind un nimmt NUR diese aus %_loop und hängt sie mit an %_put.   
      


      Dann hat man das aufwendige Umrechnen der Schlüssel umgangen. Ok, man muss in der 2. Variante noch das Hash in eine Liste umwandel die alle felder aus .fields holt die nicht als schlüssel vorhanden umrechnen.


      könnte simpler sein

      Sorry, zum arbeiten an sowas hohen fehlt mir jetzt die Lust,
      aber vieleicht haben die Gedankengänge ja ein wenig geholfen. ;)

      Wenn du das hin bekommst, Top Sache!

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Mittwoch, 25.Juni.2003, 07:50.
    Re: formfields=-EingabeDatum - Ergänzung ->laut Gedacht

      Hallo, Harald,
      ich mach das in ner Schleife auf die db.fields, allerdings hab ichs bisher nur für eigene Formulare eingesetzt, wo der Parameter anstatt cmd act heisst und die Felder mittels feldname= benannt sind.
      Vielleicht hilft dir aber das Codeschnipsel ein Stück weiter:
      ---schnipp
      ...
            }elsif ($act eq "c" && $dsn ne "") #dsn wird überg. ist ID des enstpr.DS
            {  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
               # Wenn Daten aus eig. Form mit "feldname=" übergeben werden und
               # %_put deshalb nicht da ist; Workaround f. chg, damit DS-Inhalte nicht
               # gekillt werden, die erhalten bleiben sollen (Feld bspw. nicht im eigenen Formular)
               if (not defined $_put{_amount})   # wenn %_put nicht vorhanden
               {
               $_put{_amount} = 1;       # Wichtigstes Paar f. %_put, damit es aktiv ist und chg undef richtig ausgef. wird
               get "Id==!$dsn", "$db_daten", "hole_chgds";
               $a_debug.="DS mit Id \$dsn($dsn) aus $db_daten geholt<br>";
               get "Id==*", "$db_daten.fields", "edsfelder";
               $a_debug.="<font color=red>DS aus \$db_daten($db_daten).fields geholt<br></font>";
               while(get_next("edsfelder"))
                    {
                    if ($Field ne "Id") # ID nicht mit in \%_put (Ändern) - sonst inkonsistente DB!
                       {
                       $_put{$Field} = ${$Field};  #alle Werte ausser ID des DS
                       $a_debug.="\%_put Key-Wertpaar: (\$_put{$Field} - ${$Field})<br>";
                       }
                    if (exists ($_get{$Field}) && $_get{$Field} ne $_put{$Field})
                       {
                       $_put{$Field} = $_get{$Field} ;  # Inh. ändern wenn in get vorh. und anders
                       $a_debug.="´Diff. in \%_get geändert:  (\$_put{$Field} - $_put{$Field})<br> ";
                       }
                    }
               }
               # - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
               chg "Id==!$dsn", undef, "$db_daten";
               # undef %_put; undef %_get;
               # get "Id==!$dsn", "$db_daten", "hole_chgds";
               $act = "n";
               $a_actiontext = "Datensatz geändert...";
               $a_actionalert = "alert('Datensatz geändert !');";
               $a_debug.=".. chg (in db $db_name) ausgeführt<br>";
               }elsif ($act eq "d" && $dsn ne "")
               {
               del "Id==!$dsn", "$db_daten";
               $act = "n";
      
      ....
      ----schnapp

     Antworten

    Beitrag von H.Fehde (724 Beiträge) am Mittwoch, 25.Juni.2003, 00:02.
    Re: $_put{Id}

      Ist das überhaupt definiert ?

     Antworten


     
 Liste der Einträge von 36900 bis 37050:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < 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!