Re: ein wert vom get im form übergeben - 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 sebastian (533 Beiträge) am Freitag, 20.Mai.2005, 18:58.
    Re: ein wert vom get im form übergeben

      guten abend,

      habe das ganz mal ausprobiert und wieder ein stück mehr verstanden. bei der suche_001 und suche_002. funktioniert alles. muss man eigentlich nicht bei der suche_002 auch als hidden-feld $FD_01 mit übergeben ?
      das große problem ist aber jetzt ein neues, auf der detail-seite, obwohl auf get "D_01==$FD_01 & Name==$FName .... umgestellt habe, kommen da plötzlich keine werte mehr an.

      habe suche_002 mal so abgeändert, und auf der detail kommt im $FName, genau der wert von $FD_01 und $FD_01 ist leer. hier mal der code:

      out<<EOF;
      <form action="http://luftus-shop.de/cgi-bin/baseportal.pl?kid=$kid&htx=/luftus-shop.de/test_01/detail" method="post" enctype="multipart/form-data">
       <input type="hidden" name="Name=" value="$FName"> ####verwende ich name="FName=" kommt gar nicht an werten an, so wenigstens der Name !!!!!!!!!
       <input type="hidden" name="D_01=" value="$FD_01">
       <select name="FName~=" style="font-family:'verdana'; color: #003399 ; background-color:#E5E5E5;">
       $optionwerte
       </select>
       <input type="submit" value="ANZEIGEN" class="schrift2a" style="background-color:#00315A; color: white; font-size: 9pt">
      </form>
      EOF
      </perl> 
      

      und hier mal url:
      http://luftus-shop.de/cgi-bin/baseportal.pl?htx=/luftus-shop.de/test_01/suche_001


      sebastian


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von sebastian (533 Beiträge) am Mittwoch, 18.Mai.2005, 21:38.
    ein wert vom get im form übergeben

      guten abend,

      mit folgendem code möchte ich einen wert den ich mit get hole in einem <form> an eine neue seite übergeben. der erste wert wird auch schon per <form> und get an dieses seite übergeben. jetzt beginnt mein <form> aber vor dem get und so mit ist der wert "D_01" noch nicht vorhanden. da er ja erst mit dem get geholt wird. habe auch schon versucht das get überhalb des <form> zu setzen, aber dann wir mir immer nur der erste wert der datenbank geholt. wo liegt den mein denkfehler ? hier mal der code

      out "<FORM ACTION=\"http://luftus-shop.de/cgi-bin/baseportal.pl?kid=$kid&htx=/luftus-shop.de/test_01/detail&Name==$Name&D_01==$D_01\" METHOD=\"post\" ENCTYPE=\"multipart/form-data\" value=\"/luftus-shop.de/test_01/detail&Name==$Name&D_01==$D_01\">";
      ############oben der anfang vom form als werte wird $Name und $D_01 mit übergeben
      get "D_01==* & Name==$Name", "artikel";
      

      #############hier werden die doppelten werte aussortiert und die restlichen in einem auswahlmenue angezeigt


      out "<select name='Name~=' style=\"font-family:'verdana'; color: #003399 ; background-color:#E5E5E5;\">";
      

       
      while(get_next("artikel"))
      {
      if ($D_01_ist ne $D_01){
       
       out "<option value=\"$D_01\">$D_01";
      }
      $D_01_ist = $D_01;
      

      }
       


      out "</OPTION>";
      out "</select>";
      </perl>  <INPUT TYPE="submit" VALUE="ANZEIGEN"
            CLASS="schrift2a"
            STYLE="background-color:#00315A; color: white; font-size: 9pt">
            </FONT></P></FORM>
      

      sebastian

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 19.Mai.2005, 07:57.
    Re: ein wert vom get im form übergeben

      Mhm - erst mal die Frage, was willst du erreichen?
      Weil, Du übergibst zum einen im Link Name==$Name (für Name ist gleich dem Namenswert) und im Formular mit dem Auswahl- bzw. Optionfeld Name~=$D_01 (für Name beginnt mit Wert aus von D_01 aus dem Optionfeld). Und da ist für mich nicht ersichtlich, was soll passieren auf der anderen Seite, welche Datensätze sollen denn nun ausgegeben werden?
      Und wie wird dises Template aufgerufen, was hat das für Parameter beim Erstaufruf übergeben bekommen?


      Irgendwie brauchst mehr Input... ;-)

     Antworten

    Beitrag von sebastian (533 Beiträge) am Donnerstag, 19.Mai.2005, 08:58.
    Re: ein wert vom get im form übergeben

      geuten morgen, erreichen möchte ich das nur bestimmt artikel aus der datenbank angezeigt werden. auf der ersten seite "such_001" wird der $Name ausgewählt. dieser wert wird auf die seite "suche_002" übergeben. wird dort auch korrekt angezeigt. auf der seite "suche_002" will ich jetzt anhand der vor ausgewählten $Name noch die verschiedenen werte von $D_01 auswählen. und dann das ganze weiter auf eine seite geben. dort wird dann dieser einzige artikel angezeigt. das ganze fängt hier an dieser url an:

      http://www.luftus-shop.de/cgi-bin/baseportal.pl?kid=$kid&htx=/luftus-shop.de/test_01/suche_001

      sebastian

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 19.Mai.2005, 15:16.
    Re: ein wert vom get im form übergeben

      mhm - also gut, wenn ichs richtig verstanden habe:
      suche_001 Auswahl der Namen aus Optionfeld
      suche_002 soll zugehörige Werte aus D_01zu dem in suche_001 gewählten Namen holen, da wählt man das wieder aus und es soll dann der entsprechende Datensatz mit der Bedingung Name gleich Auswahl aus suche_001 und D_01 aus suche_002 angezeigt werden - richtig so?
      Wenn es so sein soll, dann nicht mit den Operatoren in der URL arbeiten und auch die Feldnamen richtig einsetzen in die Formularfelder, nicht für D_01 den Feldname "Name" verwenden...
      - in suche_001 statt <select name="Name~=".. select name="FName=" verwenden, da gibts dann keine Parameter/ bzw. Variablenüberschneidung
      - in suche_002 dann die Parameter am Formular weglassen, und stattdessen ein hidden-Formfield einsetzen, ebenfalls mit Name "FName=" und als Value da $FName einsetzen, damit wäre das Durchreichen des Filterwertes für den Namen geklärt...
      Das Formfeld für $D_01 bspw. in "$FD_01=" benennen, da wäre der Filterwert für D_01 geklärt...
      Das get für die Optionwerte dann so:
      get "D_01==* Name==$FName", "artikel";
      
      damit kann das irgendwo vors Formular kommen
      - in detail dann das get wie folgt:
      get "Name=$FName D_01==$FD_01", "artikel";
      while(get_next("artikel")){
      
      html-ausgaben...oder sonstwas
      }
      alles klar? ;-)
      Man kann das natürlich auch alles in ein Template packen, jeweils in gesonderte Bedingungsblöcke und einen Parameter mitgeben, der die Stufe der Suche kennzeichnet...nur mal so am Rande als Denkanstoss...

     Antworten

    Beitrag von sebastian (533 Beiträge) am Donnerstag, 19.Mai.2005, 20:47.
    Re: ein wert vom get im form übergeben

      guten abend,

      habe bei suche_002 den falschen select-namen. habe bei der suche_001 den select-namen aud $D_01 geändert. habe auf suche_001 den select-namen auf $FName geändert. das get auf der such_002 hole ich mir folgt: get ["D_01","==", "*", "&", "Name", "==", "$FName"], "artikel"; wegen der leerzeichen. im form habe ich folgendes drinnen ...detail&Name==$FName&D_01==$D_01 und das komische ist das es funktioniert. es wird der richtige artikel angezeigt. in der url ist aber nur beim "Namen" ein wert vorhanden, beim "D_01" ist leer, aber es wird der richtige artikel angezeigt.

      das hidden-Formfield lege ich in der artikel datenbank mit an ?

      sebastian

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 19.Mai.2005, 23:36.
    Re: ein wert vom get im form übergeben

      nee das hidden-Field hat mit der DB nix zu tun. Das ist dazu da, ein Namen-Wert-Paar zu übermitteln (also in der Art D_01=$D_01 bzw. ersetzt bspw. D_01=50mm, wobei dann im Script, an das dieses Formularfeld übergeben wird, die Variable mit Namen D_01 den Wert 50mm hat. Das Hidden-Formfield ist doch "nur" anstatt des Parameters in der URL - bspw. sieht es der Nutzer nicht gleich in der Adressleiste des Browsers.

      Es geht doch darum, die Daten zu filtern, und dazu brauchts halt die notwendigen Parameter bzw. Werte im get.
      Und da die Werte mit den Formularfeldern ans Script übergeben werden sind diese dann somit verfügbar. Vergiss einfach das &Name==$FName&D_01==$D_01 in der URL - je nach Zeitpunkt des Auftretens werden die Namen-Wertpaare im Script als Variablen zur Verfügung gestellt.
      Und da sie mit dem Formular und den Formularfeldern, die nach der URL ans Script übergeben werden, "reinkommen", sind diese Werte dann die, die weiterverarbeitet werden.
      Du kannst das ja ganz leicht überprüfen, indem du die Variablen am Anfang des Scriptes mal mittels
      out "\$Name($Name) - \$D_01($D_01) - \$FName($FName) - \$FD_01($FD_01)<br>"
      
      ausgibst. Da kannst du dann schön beobachten, wie die Werte je nach Auswahl immer zur Verfügung stehen.

     Antworten

    Beitrag von sebastian (533 Beiträge) am Freitag, 20.Mai.2005, 09:31.
    Re: ein wert vom get im form übergeben

      einen sonnigen guten morgen,

      das ganze wird mir jetzt langsam verständlich. aber wo wird das hidden-feld angelegt bzw. wo hinterlege ich das feld ?

      sebastian

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 20.Mai.2005, 09:47.
    Re: ein wert vom get im form übergeben

      hier mal so freihändig schnell das Script mit paar Erläuterungen
      <!-- such_002 -->
      <perl>
      # Hier mal die Zeile mit der Ausgabe der Variablen, die reinkommen (oder auch nicht)
      out "Kontrollausgabe: \$Name($Name) - \$D_01($D_01) - \$FName($FName) - \$FD_01($FD_01)<br>";
      # Optionfeldwerte bauen für Datensätze mit Name=$FName, wobei FName der Feldname
      # des Suchformulars aus dem Template such001 sein muss (es würde in diesem Falle auch
      # $Name gehen, aber dann immer weiter führen, also auch im hidden-Field unten
      # In hier gebauten Falle aber dann auch im Template detail $FName für Filterkriterium
      # verwenden (get "D_01=$FD_01 Name=$FName"...
      #
      get "D_01==* & Name==$FName", "artikel";
       while(get_next("artikel")){
          if ($D_01_ist ne $D_01){
           $optionwerte .= "<option value=\"$D_01\">$D_01</option>\n";
          }
       $D_01_ist = $D_01;
       }
      

      out<<EOF;
      <form action="http://luftus-shop.de/cgi-bin/baseportal.pl?kid=$kid&htx=/luftus-shop.de/test_01/detail" method="post" enctype="multipart/form-data">
      <input type="hidden" name="FName=" value="$FName"></input>
      <select name="FName~=" style="font-family:'verdana'; color: #003399 ; background-color:#E5E5E5;">
      $optionwerte
      </select>
      <input type="submit" value="ANZEIGEN" class="schrift2a" style="background-color:#00315A; color: white; font-size: 9pt">
      </form>
      EOF
      </perl>
      

     Antworten

    Beitrag von sebastian (533 Beiträge) am Freitag, 20.Mai.2005, 09:53.
    Re: ein wert vom get im form übergeben

      dankeschön, so hab ich übers wochenende eine aufgabe, hoffentlich regnets . .

      sebastian

     Antworten

    Beitrag von sebastian (533 Beiträge) am Freitag, 20.Mai.2005, 18:58.
    Re: ein wert vom get im form übergeben

      guten abend,

      habe das ganz mal ausprobiert und wieder ein stück mehr verstanden. bei der suche_001 und suche_002. funktioniert alles. muss man eigentlich nicht bei der suche_002 auch als hidden-feld $FD_01 mit übergeben ?
      das große problem ist aber jetzt ein neues, auf der detail-seite, obwohl auf get "D_01==$FD_01 & Name==$FName .... umgestellt habe, kommen da plötzlich keine werte mehr an.

      habe suche_002 mal so abgeändert, und auf der detail kommt im $FName, genau der wert von $FD_01 und $FD_01 ist leer. hier mal der code:

      out<<EOF;
      <form action="http://luftus-shop.de/cgi-bin/baseportal.pl?kid=$kid&htx=/luftus-shop.de/test_01/detail" method="post" enctype="multipart/form-data">
       <input type="hidden" name="Name=" value="$FName"> ####verwende ich name="FName=" kommt gar nicht an werten an, so wenigstens der Name !!!!!!!!!
       <input type="hidden" name="D_01=" value="$FD_01">
       <select name="FName~=" style="font-family:'verdana'; color: #003399 ; background-color:#E5E5E5;">
       $optionwerte
       </select>
       <input type="submit" value="ANZEIGEN" class="schrift2a" style="background-color:#00315A; color: white; font-size: 9pt">
      </form>
      EOF
      </perl> 
      

      und hier mal url:
      http://luftus-shop.de/cgi-bin/baseportal.pl?htx=/luftus-shop.de/test_01/suche_001


      sebastian

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Samstag, 21.Mai.2005, 10:16.
    Re: ein wert vom get im form übergeben

      wichtig für eine reibungslose Funktion ist, dass die Filterwerte (Variablennamen) von der ersten bis zur letzten Seite immer gleich heißen - zum einen die Feldnamen (oder bei Links die Parameternamen) und dann natürlich auch im get.

      Also mal der Reihe nach:
      - Erste Suchseite:
      Formular mit Auswahl des Namens - das Feld heisst "FName=" - ruft zweite Suchseite auf.
      - Zweite Suchseite:
      Alle Datensätze holen mit beliebigem Wert für Durchmesser (Datenbankfeld D_01) aber nur mit dem Übergebenen Wert für den Namen (steht in der Variable also das get für das Holen der zum Namen gehörigen Durchmesser
         => get "$D_01=* Name=$FName", "artikel";
            while(get_next("artikel"){
            ... Optionwerte für select-Feld bauen ...
            }
      Dann bekommt das Suchformular auf dieser Seite ein hidden-Feld, welches den Filterwert für den Namen aus der ersten Suchseite wieder mit an die dritte Suchseite weitergibt, Name "FName=", Wert (Value) $FName, weil der ja so von der ersten Suchseite reingekommen ist.
      Das Option- bzw. Select-Feld bekommt nun den Namen "$FD_01=", das Forumular ruft dann die dritte Suchseite auf.
      
      - Dritte Suchseite:
      Hier nun sollen nur die Datensätze ausgegeben werden, die den ausgewählten Kriterien entsprechen, also die, die im Datenfeld Name gleich dem Wert aus Suchseite 1 und im Datenfeld D_01 gleich dem Wert aus Suchseite 2 stehen haben.
      Nun haben wir in Suchseite 1 das Filterwert-Feld "FName" genannt und in Suchseite 2 das Filterwert-Feld "FD_01".
      Deshalb stehen die ausgewählten Werte auch in den Variablen mit Namen $FName und $FD_01 zur Verfügung. (wenn du genauer wissen wills, warum das so ist, empfehle ich die mehrfach genannte Einsteigerliteratur zu Perl/CGI - das gehört einfach zum Grundwissen...ohne das man kaum verstehen kann, was wie funktioniert)
      Diese Werte müssen nun ins get eingesetzt werden und voila, wir haben genau die gewünschten Datensätze zur Verfügung:
      get "Name=$FName D_01=$D_01", "artikel";
      while(get_next("artikel"){
      
      ... hier jetzt die Datensätze ausgeben ...
      }

      Alles Klar ? ;-)

     Antworten

    Beitrag von sebastian (533 Beiträge) am Samstag, 21.Mai.2005, 14:32.
    Re: ein wert vom get im form übergeben

      guten mittag,

      habe mich glaube jetzt strikt an deine beschreibung gehalten, aber irgendwie kommen die werte nicht an bzw. verkehrt

      das <form> von suche_001 >> FName wird weitergegeben

      out "<FORM ACTION=\"http://luftus-shop.de/cgi-bin/baseportal.pl?kid=$kid&htx=/luftus-shop.de/test_01/suche_002\" METHOD=\"post\" ENCTYPE=\"multipart/form-data\">
      <input type=\"hidden\" name=\"FName=\" value=\"$FName\"></input>";
      

      das <form> von suche_002 >> FName und FD_01 sollen weitergegeben werden

      out<<EOF;
      <form action="http://luftus-shop.de/cgi-bin/baseportal.pl?kid=$kid&htx=/luftus-shop.de/test_01/detail" method="post" enctype="multipart/form-data">
       <input type="hidden" name="FName=" value="$FName"></input>
       <input type="hidden" name="FD_01=" value="$FD_01"></input>
       <select name="FName~=" style="font-family:'verdana'; color: #003399 ; background-color:#E5E5E5;">
       $optionwerte
       </select>
       
       und das get in detailseite 
       
       
       <perl>
       get ["D_01","==", "$FD_01", "&", "Name", "==", "$FName"], "artikel";
       foreach $artikel (split /#/,$mArtikel)
       {
         ($anzahl,$r)=split /\:/,$artikel;
         last if $r==$_id;
         $anzahl=0;
      }
      


      hier mal die "kontrollausgabe" von suche_002
      Kontrollausgabe: $Name() - $D_01() - $FName(Fortluftbogen 90) - $FD_01()

      hier ist $FNmae noch richtig gefüllt

      "Kontrollausgabe" detail
      Kontrollausgabe: $Name() - $D_01() - $FName(250) - $FD_01()

      ab hier ist der wert von $FD_01 im $FName und $FName wert verschwindet

      sebastian

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Samstag, 21.Mai.2005, 15:12.
    Re: ein wert vom get im form übergeben

      >ab hier ist der wert von $FD_01 im $FName und $FName wert verschwindet
      
      naja - ist ja wohl auch klar, guck dir mal die Feldnamen genau an...

      im zweiten Suchtemplate:
      kein hidden-Field mit FD_01, das Selecrt-Field ist doch das Auswahlfeld für die Werte von FD_01, nur dass du hier den Operator ~= für "beginnt mit" nutzt, was nicht richtig ist.

      Da fällt mir noch auf, dass ja im Namen (und evtl auch im D_01?) Leerzeichen stehen können, deshalb müssen diese vor dem Einsatz ins get noch maskiert werden:
      $FName =~ s/\s/\\ /g;
      $FD_01 =~ s/\s(\\ /g;
      
      und zwar in dem Template, wo es als erstes hin reinkommt, also bei FName im ersten, und bei FD_01 im detail-Template.

     Antworten

    Beitrag von sebastian (533 Beiträge) am Sonntag, 22.Mai.2005, 00:25.
    Re: ein wert vom get im form übergeben

      dankeschön,
      jetzt klappt alles so wie beschrieben. und habe wieder eine menge dazu gelernt. vorallem mal wieder den weg gezeigt bekommen, wie man nach dem fehler systematisch suchen kann.

      sebastian

     Antworten


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