Kerstin: PHP/HTML: Beim Klick vom Button Download ausführen

Hallo allerseits,

ich habe folgendes Problem:
In einem Formular soll bei Dateidownload eine Email versendet werden.
Daher muss beim Klick auf den Downloadbutton die PHP Datei sendmail.php3 audgeführt werden. Weiterhin soll aber beim Klick des Buttons der Dateidownload erfolgen.
Die Mail wird verschickt, d.h. also snedmail wird ausgeführt und auch angezeigt, aber das Fenster zum Speichern der Datei erscheint nicht.
Ich habe bereits in Selfhtml und hier im Forum gesucht, und nur die Lösung mit onClick gefunden. Funktioniert ja aber leider nicht. ;-(

Weiterhin habe ich das Problem, dass die Betreffzeile der Email nur #Pid= enthält. Jedoch nicht den Inhalt der gesetzten PHP Variable $kunde.

Über Hilfe wäre ich sehr dankbar. Verzweifle nämlich so langsam.

Anbei der Code zum Verständnis:

Ciao Kerstin

<form action="sendmail.php3" METHOD="POST">
  <h2><img src="../../../../Grafik/winzip_icon.gif" width="32"  height="32">
<INPUT type=hidden name="betreff" value="#Pid=".$kunde>
   VS10 - Verzeichnis für das Vermögen.rtf (11 KB)
<input type="submit" name="Download" value="Download" onClick="window.location.href='../../../../Download/BtS/Reports/VS10.zip'">
</h2>
</form>

  1. Hallo Kerstin,

    In einem Formular soll bei Dateidownload eine Email versendet werden.
    Daher muss beim Klick auf den Downloadbutton die PHP Datei sendmail.php3 audgeführt werden. Weiterhin soll aber beim Klick des Buttons der Dateidownload erfolgen.

    Mach diese zwei Aktionen doch nacheinander, beende erst den download und sende dann die mail, kann man doch in einer Funktion und Script machen
    (oder anmdersrum natürlich)

    Weiterhin habe ich das Problem, dass die Betreffzeile der Email nur #Pid= enthält. Jedoch nicht den Inhalt der gesetzten PHP Variable $kunde.

    was heisst value="#Pid=".kunde ? was soll das für Syntax sein?
    also ich finde es logisch dass im Betreff #Pid= steht
    schreib doch einfach value="<?=$kunde?>"
    oder wozu brauchst Du das #Pid=?

    Also: ich würde wenn der User auf den Downloadbutton klickt, warten bis der beendet ist und dann ne weiterleitung zur sendmail.php machen um dort die mail abzuschicken
    oder eben erst zur sendmail.php und dann nach dem mailversenden, den download anschubsen, weiss nciht genau ob es funktioniert, aber würde zum anschubsen einfach eine weiterleitung zu dem Befreffenden machen, dass sollte auch den download auslösen ... korrigiert mich wenn ich falsch liege

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
    1. » was heisst value="#Pid=".kunde ? was soll das für Syntax sein?

      also ich finde es logisch dass im Betreff #Pid= steht
      schreib doch einfach value="<?=$kunde?>"
      oder wozu brauchst Du das #Pid=?

      Die brauche ich, da nacher noch weitere Daten wie Datum usw. in die Betreffzeile kommt. Ich habe auf den PHP Seiten gesehen, dass man strings und Variablen mit . verbindet. Deshalb habe ich diese Variante gewählt....

      Also: ich würde wenn der User auf den Downloadbutton klickt, warten bis der beendet ist und dann ne weiterleitung zur sendmail.php machen um dort die mail abzuschicken
      oder eben erst zur sendmail.php und dann nach dem mailversenden, den download anschubsen, weiss nciht genau ob es funktioniert, aber würde zum anschubsen einfach eine weiterleitung zu dem Befreffenden machen, dass sollte auch den download auslösen ... korrigiert mich wenn ich falsch liege

      ciao
      romy

      Wie kann ich denn überprüfen, ob der Download beendet ist? Ich kenne mich nicht so gut mit den Skripten aus, wenn ich sie lese, dann verstehe ich sie, aber selber schreiben.....

      Ciao Kerstin

      1. Hi Kerstin,

        Die brauche ich, da nacher noch weitere Daten wie Datum usw. in die Betreffzeile kommt. Ich habe auf den PHP Seiten gesehen, dass man strings und Variablen mit . verbindet. Deshalb habe ich diese Variante gewählt....

        ja natürlich aber auch nur in php und nicht plötzlich in HTML ;)
        Wenn Du den String verknüpfen willst mache es innerhalb der <??>
        also value="<?echo $kunde.$client."#PID";?>"
        <tip> mach soviele hiddenfields wie du relevante Daten hast, damit du den String dann nicht wieder auseinanderklamüsern musst </tip>

        Ich würde eh den anderen Weg wählen, habe gerade probier ob das geht!
        also

        1. schreibe ganz normal deine form mit all den werten mit action sendmail.php
        2. Übergib meinentwegen noch ne Vraibale, damit du weisst welches downloadteil angeklickt wurde, oder wie auch immer du dass machst
        3. sende in der sendmail.php die mail ab
        4. mache am Ende header("Location:deinPfad/diedownloaddatei.zip");

        dann sollte er den Download nach der mail starten

        hih
        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        ->Alles ist gut wenn es aus Schokolade ist
        1. Herzlichen Dank, ich werde es ausprobieren.

          Ciao Kerstin

          1. Auch wenn ich nerve, ich hab ausprobiert und ausprobiert. Wo kommt denn der die header Anweisung hin?
            Ich erhalte stets folgende Fehlermeldung...  :(

            Warning: Cannot add more header information - the header was already sent (header information may be added only before any output is generated from the script - check for text or whitespace outside PHP tags, or calls to functions that output text) in /home/strato/www/ga/www.gauss-lvs.de/htdocs/NormalScreen/Produkte/anwender/bts/sendmail.php3 on line 10

            Über einen kleinen Tip wäre ich sehr dankbar.

            Ciao Kerstin

            1. Hi Kerstin,

              in /home/strato/www/ga/www.gauss-lvs.de/htdocs/NormalScreen/Produkte/anwender/bts/sendmail.php3 on line 10
              sorry hab ich vergessen zu sagen,

              es darf vor einer header-Anweisung keine Aussgabe gemacht werden.
              d.h. kein Leerzeichen, kein echo, kein Nichts
              wenn Du doch Ausgaben machen willst, versuchs mit
              Javascript und der self.location.href
              oder vielleicht geht es ja auch, wenn die Ausgaben danach stehen?!
              Ich weiss nicht was Du machen willst, aber wahrscheinlich willst Du sowas sagen wie "email erfolgreich versandt" oder so, oder?
              ich bin mir nicht ganz sicher, aber ein versuch ist es wert, schreibe diese Aussage, nach dem Header und gucke was passiert

              hoffe dies trifft dein Problem ;)

              ciao
              romy

              --
              DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
              ->Alles ist gut wenn es aus Schokolade ist
              1. Ich habe es nun mit einem Javascipt gemacht und windows.open. Das Problem ist nur, dass sich die zip Datei nicht öffnet.
                ein PDF File ist überhaupt kein Problem und funktioniert auch.

                Gibt es einen speziellen Aufruf in javascript für das Öffnen einer Datei zum Download?

                Danke schon einmal im Voraus.

                Ciao Kerstin

                1. Hallo Kerstin,

                  jeder Aufruf über HTTP ist ein Download. Die Browser interpretieren das Format der empfangenen Daten anhand der Headerangaben - mit Ausnahme des MS IE - und suchen dann nach einem Programm, welches das Format lesen kann. Für html, jpg, txt etc. ist dies meist der Browser, für Word-Dokumente Word und für zip ein Entpacker. Welches Programm er zum Lesen der Formate startet, ist über JavaScript nicht einstellbar, sondern im System konfiguriert.

                  Gruß

                  Eidgenosse

                  1. Alles läuft nun. *megafreu*

                    Danke für Eure Hilfe.

                    Ciao Kerstin