Re: chg und get Problem - 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 

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Thomas H. (180 Beiträge) am Freitag, 24.März.2006, 12:30.
    chg und get Problem

      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

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 24.März.2006, 14:09.
    Re: chg und get Problem

      Also ich hab jetzt Deinen Code nicht vom Ablauf überprüft, weil schon gleich einige Syntaxfehler drin sind:

      if($code==formulardaten)
      

      kann so nicht stimmen, richtig ist:

      if($code eq "formulardaten")
      

      dasselbe hier:

      if($code==formulardaten_holen)
      

      muss

      if($code eq "formulardaten_holen")
      

      heissen. Hier:

      put [ "Feld1", "$Feld1",], "datenbankname";
      

      ist ein , zuviel, wobei ich glaube es macht nix, also:

      put [ "Feld1", "$Feld1"], "datenbankname";
      

      wäre besser. Und:

      <include src=archiv code==formulardaten_holen>
      

      muss wahrscheinlich so aussehen:

      <include src=archiv code=formulardaten_holen>
      

      Ein

      <div">
      

      mit " kommt mir auch komisch vor ;-)

      <div>
      

      sollte es sein...

      Das fiel mir jetzt nur beim Überfliegen auf, vielleicht gehts ja dann ;-)

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 24.März.2006, 14:24.
    Re: chg und get Problem

     Antworten

    Beitrag von Thomas (441 Beiträge) am Freitag, 24.März.2006, 14:36.
    Re: chg und get Problem / funzt

      Hi,

      mit

      if($code eq "formulardaten_holen")
      

      geht es.:-)

      Diese Variante hatte ich bisher aber noch nie gesehen und auch noch nie
      verwendet, weil es mit

      if($code==formulardaten_holen)
      

      immer einwandfrei funktioniert hat. Jedenfalls wenn die Formulardaten oder auch andere html Teile im loop laufen.
      Wieder was Neues gelernt.

      ( Das mit dem <div" war nur ein Übertragungsfehler )

      Danke nochmal.

      Gruß
      Thomas

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 24.März.2006, 14:59.
    Re: chg und get Problem / funzt

      Also zur Erklärung:

      if($code==formulardaten_holen)
      

      kann nicht wirklich funktionieren, weil "==" in Perl ein Zahlenvergleich ist und

      formulardaten_holen
      

      ohne Anführungsstrichen zwar u.U. doppeltdeutig, in diesem Fall aber als Text gesehen wird und ein Text in einem Zahlenvergleich ist immer 0, d.h.

      if($code==formulardaten_holen)
      

      bedeutet eigentlich

      if($code==0)
      

      Wenn $code gleich 0 ;-)

     Antworten


     
 Liste der Einträge von 19350 bis 19500: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.09s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!