Re: input type file - 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 Thomas H. (180 Beiträge) am Mittwoch, 23.März.2005, 00:24.
    Re: input type file

      Danke für die Scripte.

      Das Datei-Feld funktioniert jetzt eigentlich so wie ich es haben will.

      Ist es soweit richtig, daß ich bei Deiner Subroutine nur die folgenden Daten austauschen muß:

      $db_daten ändern in meinen Datenbnknamen  z.B. $dbname oder in $dbname_daten?
      

      $feldname ist soweit klar ( Name des Optionsfeldes )

      Wenn ich mehrere Optionsfelder habe, kann ich da gleich alle Namen unterbringen?

      Gruß
      Thomas


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Thomas H. (180 Beiträge) am Dienstag, 22.März.2005, 15:13.
    input type file

      Hallo,

      habe schon seit einiger Zeit ein eher nerviges Problem, hauptsächlich mit dem Datei Feld. Es ist so, daß ich die Dateneingabe mit einem selbst erstelltem Formular mache. Wenn ich einen bestehenden Datensatz ändern will rufe ich ebenfalls ein selbst erstelltes Template auf, in dem natürlich die bereits bestehenden Werte wieder erscheinen sollen.

      Bei den Textfeldern funktioniert das ja auch ganz einfach so:
      <input type="text" name="Wert:=" size="10" value="$Wert">
      

      Auch bei den Dropdown Menüs geht das einfach mit:
      <option selected>$Wert</option>
      

      Wobei hier noch ein Schönheitsfehler entsteht, d.h. hat man z.B. die Werte
      A,B,C zur Auswahl, dann steht hier jetzt ein Wert doppelt drin, etwa so:
      A,A,B,C. Das führt zwar zu keinen Fehlern bei der Eingabe, sieht aber doof aus vor allem fremde Leute werden bei der Eingabe unsicher, da man den selben Wert nun 2x zur Auswahl hat.

      Für die "Checkbox" Felder habe ich dafür noch gar keine Lösung gefunden,
      und mit dem Dateifeld geht das scheinbar gar nicht.
      Habe es so probiert:
      <input type="file" name="Bild:=" size="30" value="$Bild">
      

      Funktioniert aber nix.

      Gibt´s dafür eine Lösung??

      Thomas

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 22.März.2005, 17:03.
    Re: input type file

      > Auch bei den Dropdown Menüs geht das einfach mit:
      > <option selected>$Wert</option>
      > Wobei hier noch ein Schönheitsfehler entsteht, d.h. hat man z.B. die Werte
      > A,B,C zur Auswahl, dann steht hier jetzt ein Wert doppelt drin, etwa so:
      > A,A,B,C. 
      

      Das muss nicht sein... Da müsstest Du mal mehr von Deinem Quellcode schreiben, da steckt dann irgendwo ein Fehler drin...

      > Für die "Checkbox" Felder habe ich dafür noch gar keine Lösung gefunden,
      

      Was klappt denn nicht? Was hast Du schon probiert?

      > mit dem Dateifeld geht das scheinbar gar nicht. Habe es so probiert:
      > <input type="file" name="Bild:=" size="30" value="$Bild">
      > Funktioniert aber nix.
      

      Das fehlt noch eine Angabe, nämlich _file_c

      An sich is die Sache ganz einfach: Schau Dir einfach mal das Formular an, das baseportal z.b. beim Datei-Feld ausgibt - da siehst Du wie es aussehen muss.

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Dienstag, 22.März.2005, 19:22.
    Re: input type file

      Hallo,


      bezüglich des Dropdown Schönheitsfehlers ist hier der
      Original Quelltext:

      <select size="1" name="Art:=">
      <option selected>$Art</option>
      <option value="Kaufimmobilie">Kaufimmobilie</option>
      <option value="Ferienvermietung">Ferienvermietung</option>
      </select></td>
      

      Rufe ich das Template auf und im Datensatz ist z.B. Ferienvermietung enthalten, steht im Dropdown Menü zur Auswahl:
      Ferienvermietung
      Kaufimmobilie
      Ferienvermietung

      Also 2x Ferienvermietung.



      An die checkboxen habe ich mich noch nicht getraut.

      Bezüglich des Datei Feldes habe ich jetzt versucht, den Quelltext aus der Baseportal Seite rauszufiltern und einzubauen, aber irgendwie funktioniert jetzt gar nichts mehr. Dort wird ja mit dem RADIO Feld gearbeitet.
      Wobei ich auch nicht verstanden habe, was mit "Keine Datei" gemeint ist. Wird z.B. dann die bereits bestehende Datei gelöscht wenn eine drin ist?

      Hier ist der Teil des aktuellen Quelltextes, der jetzt noch nicht funktioniert:

      <input type="file" name="_filec_Bild01:=" size="32" onfocus="a=this.form.elements; for(i=0; i<a.length; i++) if(a[i].name==this.name) break; a[i-1].checked=1;"></td>
      </tr>
      <tr>
      <td width="172" bgcolor="#6AA7C8"> </td>
      <td width="418" colspan="2" bgcolor="#6AA7C8">
      <table border="0" width="100%" cellpadding="0" style="border-collapse: collapse">
      <tr>
      <td width="26">
      <input type=radio name="_filec_Bild01=" value=0 checked></td><td width="114">Datei behalten</td>
      <td width="23"> <input type=radio name="_filec_Bild01=" value=1></td><td width="100">Keine Datei</td>
      <td width="22"> <input type=radio name="_filec_Bild01=" value=2></td><td>Neue Datei</td></tr>
      

      Muß das komplette Formular, in dem die gesamten Eingaben stehen, einen bestimmten Namen haben? Soweit ich gesehen habe hat das bp Formular den Namen _baseportal_form0 .Oder hat das damit nichts zu tun.

      Gruß
      Thomas

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Dienstag, 22.März.2005, 20:15.
    Re: input type file

      Kleiner Teilerfolg mit dem Datei Feld.
      Der Name war falsch, so ist´s richtig::

      <input type="file" name="Bild01:=" ...usw.
      

      Jetzt bleibt die Datei stehen, wenn man nichts ändert und eine Neue wird auch hochgeladen. Wenn "Keine Datei" aktiviert ist, ist das Bild gelöscht ( auch auf dem Server? ). Also soweit geht das im Prinzip jetzt.
      Das Einzige, was jetzt noch nicht funzt ist, daß der Name der bestehenden Datei angezeigt wird ( Auf der BP eigenen Seite geht das ).

      Das hängt wohl an dem onfocus="a=this.......etc. Script

      Mit den Dropdown`s und den checkboxen kämpfe ich allerdings noch.

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Dienstag, 22.März.2005, 23:19.
    Re: input type file

      also, nach W3C geht das so generell nicht!
      Man kann keine Value in nem File-Field vorbelegen(wie auch - woher soll der Server wissen, wo das File auf dem Client-Rechner liegt! - immer dran denken - Client-Server-Systeme sind hier vorhanden!) kuckst du auch hier:
      http://de.selfhtml.org/html/formulare/datei_upload.htm#definieren
      Deshalb kann man einfach den Dateinamen der vorhandenen Datei zwischen den Radio-Buttons ausgeben oder auch nur einfach nach dem Dateifeld.
      Das hieße dann einfach:
      <input type="file" name="Bild:=" size="30">$Bild
      

      etwas komplexer kann man das dann so machen:
      ---schnipp
      ...
      $cistfile = length $f_ns_bild > 3 ? "checked=checked" : "";
         $cnofile = length $f_ns_bild < 3 ? "checked=checked" : "";
         $feld1_datei=<<EOF;
         <input type=radio name="_filec_ns_bild=" value=0 $cistfile> Bild behalten&nbsp;($f_ns_bild)</input>
         <input type=radio name="_filec_ns_bild=" value=1 $cnofile> Kein Bild&nbsp;</input>
         <input type=radio name="_filec_ns_bild=" value=2> Neues Bild&nbsp;</input><br>
      EOF
      
      ...
      # Ausgabe des Dateifeldes:
      out<<EOF;
      Bild:<br>$feld1_datei
       <input type=file name="ns_bild:=" size=30 maxlength=15000 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>
      EOF
      
      ....
      ---schnapp
      Das Problem mit den checkbox-Feldern löse ich so, dass ich diese gar nicht erst verwende, sondern stattdessen ein multiples Optionfeld nehme, die Inhalte dann in ner Subroutine in ne checkboxgruppe umwandle (oder je nach Parameter in ne Radiofeldgruppe) - erstens spart man Datenbankfeldnamen und zweitens kann man dann je nach Erfordernissen die Inhalte auch auswerten.

      Mit den doppelten Optionwerten muss man natürlich abprüfen, ob der eingetragenen Wert dem Wert des Optionfeldes entspricht, hier mal als Denkanstoss die Sub, die ich dazu nutze:
      sub get_options { ################################################################
      $a_debug.= "<b>A sub get_options(@_)</b><br>";
      # Syntax: get_options($db_daten, $feldname,"sort"|"")
      my ($db_daten, $feldname, $sort) = @_; # &Uuml;bergabewerte
      my ($a_options,$option_temp);
      my (@l_multioption,@l_o);
         if ($db_daten ne "" && $feldname ne "") {
            get "Field==$feldname","$db_daten.fields", "show_option";
            if ($Type =~ /\Aoption/) {
               @l_o = split/\n/,$Params; #Werte Optionen in Liste
               $l_o[0] = substr $l_o[0], rindex ($l_o[0], '#')+1; #
               $l_o = sort @l_o if sort eq "sort";
               @l_multioption = split /\n/,${"f_$feldname"}; # Werte aus Optionfeld splitten um zu vergleichen
               foreach $topt (@l_o) {
                  if (scalar @l_multioption > 0){ # wenn Multi-Optionfeld
                     for $zl(0..$#l_multioption) {
                        if ($l_multioption[$zl] eq $topt){ # wenn optionwert vorh.
                        $option_temp =  "<option selected value='$topt'>$topt</option>";
                        last
                        } else {
                        $option_temp =  "<option value='$topt'>$topt</option>";
                        } # E if/else wert l_mult gleich $topt
                     } # E for
                     $a_options .= $option_temp;
                  } else {
                  $a_options .=  "<option value='$topt'>$topt</option>";
                  } # e if/else liste mit werten
               } # E foreach
            # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
            } else {
            $a_options = "<option style='font:sans-serif red bold'>Fehler!</option>";
            } # e if/else type option
         } else {
         $a_options = "<option style='font:sans-serif red bold'>Fehler!</option>";
         }
      $a_debug.= "<b>E sub get_options</b><br>";
      return $a_options;
      } ################################################################
      
      Viel Spass und Erfolg beim Umsetzen
      Ruben

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Mittwoch, 23.März.2005, 00:24.
    Re: input type file

      Danke für die Scripte.

      Das Datei-Feld funktioniert jetzt eigentlich so wie ich es haben will.

      Ist es soweit richtig, daß ich bei Deiner Subroutine nur die folgenden Daten austauschen muß:

      $db_daten ändern in meinen Datenbnknamen  z.B. $dbname oder in $dbname_daten?
      

      $feldname ist soweit klar ( Name des Optionsfeldes )

      Wenn ich mehrere Optionsfelder habe, kann ich da gleich alle Namen unterbringen?

      Gruß
      Thomas

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 24.März.2005, 07:55.
    Re: input type file

      jo - mit den Variablennamen das haste richtig erkannt.
      Die Sub macht das für ein Feld, also bei einem weiteren dann ein neuer Aufruf.
      Das Ergebnis sollte sinnvollerweise ein Variablen zur Ausgabe zugewiesen werden, in der Art:
      $alle_optionfelder = &get_options("Deinedatenbank","DeinFeldname","sort");
      
      diese wiederum kann man dann beliebig im HTML-Quelltext ausgeben, hier dann in etwa so:
      <form....
      ....
      <select name="DeinFeldname:=">$alle_optionfelder</select>
      
      ...
      </form>
      Hatte vergessen zu erwähnen, dass beim Einsatz fürs Ändern von Datensätzen der Wert des Feldes des zu ändernden DS zunächst in ne Variable mit dem Präfix "f_" vor dem Feldname umgespeichert werden muss (deshalb, dass diese Sub auch für Mehrfachzugriffe innerhalb eines Templates auf versch. DBs erfolgen kann - Stichwort eigene Relation - und dann die Feldvariablen u.U. überschrieben werden, das verhindert man damit)
      also in etwa so:
      $f_DeinFeldname = $DeinFeldname;
      
      wobei wichtig ist, dass die "F-Variablen" global gelten, nicht lexikalisch; ansonsten wird der/die vorhandenen Werte nicht selected gesetzt.

      Ruben

     Antworten


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