sacha: popupfenster in größe des Bildes (resize) und txt-download.

Hallo.  Ich habe gleich 2 Fragen, bei denen ich nicht weiter kommen.  Das erste
ist mein größstes Problem.  Ich arbeite gerade an einer Katalogseite.  Artikelnummer,
Beschreibung und kleines Foto werden aus einer Datenbank herausgezogen.
Per Klick auf das kleine Bild, soll sich ein Popupfesnter öffnen.  Ich arbeite
momentan mit einem JS:

function pop(URL){
DHTML=window.open
(URL,"Bild","status=no,toolbar=no,scrollbars=no,width=300,height=300")

und rufe das popupfenster so auf:

<a href="javascript:pop('http://www.meine-domain/katalog/gross/10000210.jpg')">

Der Name des Bildes entspricht der Artikelnummer und wird mit php direkt in
den Link integriert.

Jezt möchte ich aber, dass sich das Popupfenster der
größe des zu öffneten Bildes ändert. Der Link verweist direkt auf das Bild
und somit nicht auf irgendeine HTML-Seite. Gibt es irgendeine Möglichkeit
die Größe des Bildes festzustellen und das Popupfenster dementsprechend
zu gestallten?

Frage 2:
Ich habe eine .txt-datei, die heruntergeladen werden soll.  Gibt es eine Möglichkeit
(eine einfache Möglichkeit) einen Link zu schreiben, der zum download auffordert.
Bei einer Zip-Datei geht das ja von alleine, aber txt-Dateien werden
vom Browser ja bekanntlich gleich geöffnet und nicht heruntergeladen.

Ich hoffe ich bekomme feedback und sorry für den langen Text

Danke
sacha

  1. Jezt möchte ich aber, dass sich das Popupfenster der
    größe des zu öffneten Bildes ändert. Der Link verweist direkt auf das Bild
    und somit nicht auf irgendeine HTML-Seite. Gibt es irgendeine Möglichkeit
    die Größe des Bildes festzustellen und das Popupfenster dementsprechend
    zu gestallten?

    Grösse des Bildes feststellen:

    Img1 = new Image()
     Img1.src="what-ever.gif";
     breite = Img1.width;
     hoehe = Img1.height;

    dann das Popup scalieren mit resizeTo(breite, hoehe);

    Ich habe eine .txt-datei, die heruntergeladen werden soll.  Gibt es eine Möglichkeit
    (eine einfache Möglichkeit) einen Link zu schreiben, der zum download auffordert.
    Bei einer Zip-Datei geht das ja von alleine, aber txt-Dateien werden
    vom Browser ja bekanntlich gleich geöffnet und nicht heruntergeladen.

    Hm. Vielleicht kann man in einem Link den MIME-Typ des Zieldokumentes angeben, etwas in der Art: <a href='bla.txt' type='my-pseudo-MIME'>. Falls dies möglich ist, sollte die Download-Msg erscheinen. Sonst müsstest du ein Perl/php/ASP Script schreiben, welches die Datei mit einem pseudo-MIME-Typ zurücksendet (dann weiss der Browser nicht, was es für ne Datei ist und öffnet standardmässign die Download-Msg), oder du musst die Dateiendung ändern.

    Gruss

    Philipp

    1. Jezt möchte ich aber, dass sich das Popupfenster der
      größe des zu öffneten Bildes ändert. Der Link verweist direkt auf das Bild
      und somit nicht auf irgendeine HTML-Seite. Gibt es irgendeine Möglichkeit
      die Größe des Bildes festzustellen und das Popupfenster dementsprechend
      zu gestallten?

      Grösse des Bildes feststellen:

      Img1 = new Image()
      Img1.src="what-ever.gif";
      breite = Img1.width;
      hoehe = Img1.height;

      dann das Popup scalieren mit resizeTo(breite, hoehe);

      Ich habe eine .txt-datei, die heruntergeladen werden soll.  Gibt es eine Möglichkeit
      (eine einfache Möglichkeit) einen Link zu schreiben, der zum download auffordert.
      Bei einer Zip-Datei geht das ja von alleine, aber txt-Dateien werden
      vom Browser ja bekanntlich gleich geöffnet und nicht heruntergeladen.

      Hm. Vielleicht kann man in einem Link den MIME-Typ des Zieldokumentes angeben, etwas in der Art: <a href='bla.txt' type='my-pseudo-MIME'>. Falls dies möglich ist, sollte die Download-Msg erscheinen. Sonst müsstest du ein Perl/php/ASP Script schreiben, welches die Datei mit einem pseudo-MIME-Typ zurücksendet (dann weiss der Browser nicht, was es für ne Datei ist und öffnet standardmässign die Download-Msg), oder du musst die Dateiendung ändern.

      Gruss

      Philipp

      Danke Philipp für Deine schnelle Antwort.

      An diese Bildgrößen-lösung habe ich auch schon gedacht...aber dann müsste ich
      irgendwie den namen des bildes vom popup-link übergeben und ich weiß nicht wie...
      denn ich rufe ja das bild direkt auf. hast Du da eine Idee?

      Das mit dem pseude-mime funktioniert nicht.  Wie geht das denn in PHP o.ä.?

      Gruss Sscha

      1. An diese Bildgrößen-lösung habe ich auch schon gedacht...aber dann
        müsste ich irgendwie den namen des bildes vom popup-link übergeben
        und ich weiß nicht wie...

        Wieso denn das? Deine Funktion pop(URL) bekommt doch die Adresse des Bildes.

        function pop(URL)
         {
          Img1 = new Image()
          Img1.src=URL;
          DHTML=window.open(URL,"Bild","status=no,toolbar=no,scrollbars=no,width="+Img1.width+",height="+Img1.height)
         };

        Das mit dem pseude-mime funktioniert nicht.  Wie geht das denn in PHP o.ä.?

        <?php
        header("Content-Type: application/unknown");
        readfile("datei-zum-übertragen.txt");
        exit;
        ?>

        1. hi,

          warum eigentlich

          header("Content-Type: application/unknown");

          sollte das nicht besser "Content-Type: text/plain" sein, wenn es sich tatsächlich um eine Textdatei handelt ?

          Christoph S.

          1. header("Content-Type: application/unknown");

            sollte das nicht besser "Content-Type: text/plain" sein, wenn es sich tatsächlich um eine Textdatei handelt ?

            Er wollte, daß die Datei vom Browser nicht angezeigt, sondern über den Speichern-Dialog gespeichert werden kann. Das geht nur sicher, wenn der Browser mit dem Dateityp nichts anfangen kann. Den Typ text/plain dürfte aber wohl jeder Browser kennen und dementsprechend auch ohne weiter nachzufragen anzeigen.

            Gruß,
              soenk.e

            1. header("Content-Type: application/unknown");

              sollte das nicht besser "Content-Type: text/plain" sein, wenn es sich tatsächlich um eine Textdatei handelt ?

              Er wollte, daß die Datei vom Browser nicht angezeigt, sondern über den Speichern-Dialog gespeichert werden kann. Das geht nur sicher, wenn der Browser mit dem Dateityp nichts anfangen kann. Den Typ text/plain dürfte aber wohl jeder Browser kennen und dementsprechend auch ohne weiter nachzufragen anzeigen.

              Gruß,
                soenk.e

              Danke erstmal vielmals.  Die popup-Funktion ist jetzt ok:

              function pop(URL)
               {
                Img1 = new Image()
                Img1.src=URL;
                var s1 = "<TITLE>Detailansicht</TITLE>" +
                "<BODY  topmargin='0' leftmargin='0'>" +
                "<img src='" +URL +
                "'>"
                var s2 = "<FORM><INPUT TYPE='BUTTON' VALUE='Okay'" +
                "onClick='self.close()'>"  +
                "</BODY>"
                popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,width="+Img1.width+",height="+Img1.height)
                popup.document.write(s1+s2)
                popup.document.close()
              };

              das perl-script funktioniert leider nicht und ich habe mit perl nicht viel Erfahrung.  Ich bekomme folgende
              Fehlermeldung in das Dokument geparst:

              Warning: Cannot add header information - headers already sent by (output started at index.php:14) in index.php on line 26
              Advanced News Scroll|Advanced News Scroll is a highly configurable vertical text scroller and vertical news ticker.||_self Applet Features|This applet features smooth scrolling, highlighted URL links, optional border, configurable margins ,and background image.||_self Input Text File|The scroll content can be loaded from a separate text file or parameters.||_self Example 2|Example 2 shows how you can use separate text file to read scroll content.||_self

              Hmmmm.  Was nun?  Hast Du noch einen weiteren Vorschlag?  Ich wäre sehr dankbar.
              Habe gerade ein php-tutorial begonnen, aber ich glaube ich werde bis
              zur Abgabe nicht damit durchkommen.

              nochmals vielen Dank für die schnelle Antwort

              1. das perl-script funktioniert leider nicht und ich habe mit perl nicht viel Erfahrung.  Ich bekomme folgende
                Fehlermeldung in das Dokument geparst:

                dies ist aber php! - ein Perlvorschlag kommt nachher

                Warning: Cannot add header information - headers already sent by (output started at index.php:14) in index.php on line 26

                bei php wird der Code gleich an den Client gesendet (meines Wissens), d. h. wenn du zuerst html-code ausgibst, wird gleich die headerinformation Content-type: text/html\n\n ausgegeben. Versuch doch mal die headerinformationen in der ersten Zeile auszugeben, bevor du irgendetwas anderes an den client ausgibst.

                das ganze geht auch mit perl:

                print "Content-type: text/html\n\n";
                open (F, "<text.file.name.txt");
                while (<>)
                {
                   print $_;
                }
                close F;

                Gruss Philipp

                1. bei php wird der Code gleich an den Client gesendet (meines Wissens), d. h. wenn du zuerst html-code ausgibst, wird gleich die headerinformation Content-type: text/html\n\n ausgegeben. Versuch doch mal die headerinformationen in der ersten Zeile auszugeben, bevor du irgendetwas anderes an den client ausgibst.

                  kurze Anmerkung noch hierzu:

                  Es gibt bereits einen Fehler, wenn du leere Zeilen vor der Headerinformation ausgibst ( der Header wird ja durch eine Leerzeile vom Content getrennt ).

                  das <?php header(...) ?> muss also in der 1. Zeile stehen!

                  Ich hoffe, dass das Hilft

                  Philipp

                  1. bei php wird der Code gleich an den Client gesendet (meines Wissens), d. h. wenn du zuerst html-code ausgibst, wird gleich die headerinformation Content-type: text/html\n\n ausgegeben. Versuch doch mal die headerinformationen in der ersten Zeile auszugeben, bevor du irgendetwas anderes an den client ausgibst.

                    kurze Anmerkung noch hierzu:

                    Es gibt bereits einen Fehler, wenn du leere Zeilen vor der Headerinformation ausgibst ( der Header wird ja durch eine Leerzeile vom Content getrennt ).

                    das <?php header(...) ?> muss also in der 1. Zeile stehen!

                    Ich hoffe, dass das Hilft

                    Philipp

                    sorry, ich meinte natürlich auch php und nicht perl, aber egal wo ich das
                    php einsetzte, ich bekomme immer die gleiche Fehlermeldung.  OH...und
                    wenn ich das php vor den anderen content setzte, bekomme ich ausser der Fehlermeldung
                    gar nichts mehr zu sehen.  I'm lost.

                    Trotzdem danke für die Hilfe

                    1. sorry, ich meinte natürlich auch php und nicht perl, aber egal wo ich das
                      php einsetzte, ich bekomme immer die gleiche Fehlermeldung.  OH...und
                      wenn ich das php vor den anderen content setzte, bekomme ich ausser der Fehlermeldung
                      gar nichts mehr zu sehen.  I'm lost.

                      Trotzdem danke für die Hilfe

                      Hm. Unterstützt dein Server Perl? - Dann könntest du es ja mit perl versuchen. Dort könnte ich dir auch besser helfen, da ich mit php eigentlich nicht arbeite.

                      Gruss

                      Philipp

                      1. sorry, ich meinte natürlich auch php und nicht perl, aber egal wo ich das
                        php einsetzte, ich bekomme immer die gleiche Fehlermeldung.  OH...und
                        wenn ich das php vor den anderen content setzte, bekomme ich ausser der Fehlermeldung
                        gar nichts mehr zu sehen.  I'm lost.

                        Trotzdem danke für die Hilfe

                        Hm. Unterstützt dein Server Perl? - Dann könntest du es ja mit perl versuchen. Dort könnte ich dir auch besser helfen, da ich mit php eigentlich nicht arbeite.

                        Gruss

                        Philipp

                        Ja, perl wird unterstützt in allen Verzeichnissen.  Wenn das Script nicht im CGI-Bin-ordner
                        ist muss CGI-benutzt werden.
                        Ich habe es allerdings jetzt mit php hinbekommen, nur ist das Problem, dass
                        ein Fenster zum speichern aufgeht, aber zur speicherauswahl mit .php-Endung
                        angeboten wird.  Der Text darin ist ok, aber derjenige für den ich das ganze mache,
                        versteht nichts von internet und alike und er würde nicht verstehen, dass
                        man das php nur durch txt ersetzen muss.

                        gruss sacha

                        1. Ich habe es allerdings jetzt mit php hinbekommen, nur ist das Problem, dass

                          was war den der Fehler? - Wie hast du's gelöst?

                          ein Fenster zum speichern aufgeht, aber zur speicherauswahl mit .php-Endung
                          angeboten wird.  Der Text darin ist ok, aber derjenige für den ich das ganze mache,
                          versteht nichts von internet und alike und er würde nicht verstehen, dass
                          man das php nur durch txt ersetzen muss.

                          hierauf weiss ich leider keine Antwort, ich meine, ich hab keine Lösung für dieses Problem, sorry

                          Gruss

                          Philipp

                          1. Ich habe es allerdings jetzt mit php hinbekommen, nur ist das Problem, dass

                            was war den der Fehler? - Wie hast du's gelöst?

                            ein Fenster zum speichern aufgeht, aber zur speicherauswahl mit .php-Endung
                            angeboten wird.  Der Text darin ist ok, aber derjenige für den ich das ganze mache,
                            versteht nichts von internet und alike und er würde nicht verstehen, dass
                            man das php nur durch txt ersetzen muss.

                            hierauf weiss ich leider keine Antwort, ich meine, ich hab keine Lösung für dieses Problem, sorry

                            Gruss

                            Philipp

                            Wahrscheinlich wie Du es Dir sowiso dachtest. Ich habe einfach das pure
                            php in einer leeren Datei gespeichert mit endung php.  Alles andere habe ich e
                            einfach weggelassen und jetzt funktioniert es.

                            Großen Dank nochmals.

                            1. Wahrscheinlich wie Du es Dir sowiso dachtest. Ich habe einfach das pure
                              php in einer leeren Datei gespeichert mit endung php.  Alles andere habe ich e
                              einfach weggelassen und jetzt funktioniert es.

                              Hat mich einfach interessiert, wo der Fehler war. Ja, ich habe es mir so gedacht (entschuldige falls ich das nicht verständlich gesagt habe).

                              Großen Dank nochmals.

                              Hat mich gefreut

                              Viele Grüsse

                              Philipp

                        2. Ich habe es allerdings jetzt mit php hinbekommen, nur ist das
                          Problem, dass ein Fenster zum speichern aufgeht, aber zur
                          speicherauswahl mit .php-Endung angeboten wird.
                          Der Text darin ist ok, aber derjenige für den ich das ganze
                          mache, versteht nichts von internet und alike und er würde
                          nicht verstehen, dass man das php nur durch txt ersetzen muss.

                          Herrje, Windows-User :)

                          Also, vorneweg, auch wenn Philipp das schon halbwegs erklärt hatte:

                          Warning: Cannot add header information - headers already sent by (output started at index.php:14) in index.php on line 26

                          Im HTTP-Protokoll besteht eine Antwort aus zwei Teilen, dem Kopf (eine Reihe einfacher Textzeilen) und den Daten (was auch immer), getrennt durch eine Leerzeile.

                          Wenn du nun Daten ausgibst, egal was, es kann auch ein einzelnes Leerzeichen sein, schickt PHP sofort alle Kopfzeilen, die trennende Leerzeile und beginnt dann mit der Überragung der eigentlichen Daten.
                          Der Befehl header() kann dann natürlich nicht mehr funktionieren, weil alle Kopfzeilen schon weg sind.

                          Deshalb die Fehlermeldung. Abhilfe: "<?php" -ganz- an den Anfang der Datei, vor dem < darf nichts kommen.

                          Was das Problem mit der Dateiendung angeht:
                          Leg in dem Verzeichnis mit den/der Textdatei eine Datei namens .htaccess an und schreib "AddType application/unknown txt" rein. Das PHP-Teil kannst du dann auf'n Mond schießen.
                          Kleiner Nachteil: Alle Textdateien in diesem Verzeichnis und allen seinen Unterverzeichnissen werden in Zukunft zum Download angeboten.

                          Falls du einen 500er-Fehler (interner Serverfehler) beim Aufruf der Textdatei bekommst, mußt du deinen Serverbetreiber ganz lieb fragen, ob er dir die FileInfo-Rechte gibt.

                          Gruß,
                          soenk.e

  2. Hallo.

    Gibt es irgendeine Möglichkeit die Größe des Bildes festzustellen und das Popupfenster dementsprechend zu gestalten?

    Ja! Wie es mittels PHP geht, steht hier:
    http://www.selfphp3.de/funktionsreferenz/image_funktionen/getimagesize.php4

    <a href="javascript:pop('http://www.meine-domain/katalog/gross/10000210.jpg')">

    Generell mag ich Popups gar nicht, weil damit von vielen Anbietern Schindluder getrieben wird. Z.B. bei Opera kann man diese daher von vornherein abblocken, selbst wenn JavaScript an sich aktiviert ist.

    Du solltest daher in jedem Fall zumindest eine Alternative zum Popup anbieten.

    Bei einer Zip-Datei geht das ja von alleine, aber txt-Dateien werden
    vom Browser ja bekanntlich gleich geöffnet und nicht heruntergeladen.

    Genaugenommen werden sie heruntergeladen und gleich geöffnet. :-)
    Soweit ich weiss, gibt es keine sichere Methode, dies zu unterbinden. M.E. ist dies auch nicht nötig.

    Gruß,

    kerki

    1. Hallo !

      Kleine Ergänzung:

      Generell mag ich Popups gar nicht, weil damit von vielen Anbietern Schindluder getrieben wird. Z.B. bei Opera kann man diese daher von vornherein abblocken, selbst wenn JavaScript an sich aktiviert ist.

      Du solltest daher in jedem Fall zumindest eine Alternative zum Popup anbieten.

      Gut gelöst (Oh Wunder, Oh Wunder *g*) ist es z.B. auf der Hauptseite des Forums hier. Gemeint ist der "Quicklink" oben links in der Ecke auf "News".

      Gruß,

      kerki