Aktualisierungsproblem in IE

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Aktualisierungsproblem in IE

    Hallo,

    ich habe eine php-Seite a.php die mir eine Liste aller db Einträge zeigt. Ich hebe eine Seite b.php auf die von Seite a.php bei den Datensätzen verlinkt wird um alle Details des Datensatzes anzuzeigen. In jedem Datensatz ist ein Bildname abgespeichert. Das Bild selbst ist in einer eigenen db gespeichert - alle Bilder als Binärdaten. Ich hole mir mittels Funktion diese Binärdaten aus der Bild-DB um das Bild als temp.jpg mit echo auszugeben. Bisher funktioniert alles wunderbar.

    Jetzt folgendes: Alle mir bekannten IE-Versionen haben in den temprorären Interneteinstellungen bei "Neuere Versionen der Seite suchen" den Radio Button standardmäßig auf automatisch stehen. Wenn ich nun von der Seite b.php zu a.php zurückgehe und einen anderen Datensatz auswähle um ihn in b.php darzustellen, werden zwar alle Textinhalte vom neuen Datensatz dargestellt, aber das Bild bleibt das alte, obwohl ich am Anfang der Seite b.php mittels unlink die ursprüngliche temp.jpg lösche und komplett neu anlege. Ich kann mir das auch mittels FTP ansehen und stelle fest, dass die temp.jpg jetzt korrekterweise das neue Bild darstellt aber in der Anzeige der Seite wird das Bild nicht aktualisiert.

    Einziger Ausweg bis jetzt: in den temprorären Interneteinstellungen bei "Neuere Versionen der Seite suchen" den Radio Button auf "Bei jedem Zugriff auf die Seite" stellen. Somit muss ich aber auf der Startseite jeden Besucher darauf aufmerksam machen, dass er diese Einstellungen ändern muss um die Seiten korrekt anzuzeigen.

    Frage 1: Ist das Absicht von MS um die Entwickler dazu zu zwingen ASP zu verwenden anstatt von PHP?

    Frage 2: Hat wer ne Idee wie ich diese problematik anders lösen kann? Ich möchte allerdings bei der Variante mit den Bildern als Binärdaten bleiben und keine Bilddateien als solche abspeichern, da ich keinen weiteren Usern auch nur einen eingeschränkten FTP-Zugriff geben möchte.

    Grüsse
    Alexander

  • #2
    1. Nein, das liegt äußerst wahrscheinlich an dir

    2. such ma nach Seite neu laden

    3. das mit ftp und bildern in der datenbank hab ich nich verstanden
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Das mit dem Aktualisieren passiert übrigens jedem mit IE, hab bisher mindestens 20 Meldungen dass das so ist, kaum stellt der/diejenige die Einstellungen um funzt alles.

      Die Möglichkeit Bilder in einer db als Binärdaten zu speichern ist nicht neu, hab ich von Kevin Yank's Buch. anstatt die bild.jpg mit FTP auf den Webspace zu übertragen, wird ein Datensatz in einer eigenen db angelegt, das Bild wird als Blob-Typ im Binärformat abgelegt. Um das Bild anzuzeigen liest man die Binärdaten in eine temporäre Variable, zb so:

      $sql = "SELECT FileName, MimeType, FileData FROM db_bilder WHERE
      FileName = '$bild_1'";
      $result = mysql_query($sql, $verbindung);
      $row = mysql_fetch_object($result);
      $bd1 = $row->FileData;
      $loesch = unlink ("news_d");
      $fd1 = fopen('news_d', "w+");
      fwrite($fd1, $bd1);
      fclose($fd1);

      Achtung: Ich rufe zwar die b.php wieder auf, allerdings mit anderen Posts, somit reicht ein refresh nicht aus!!

      Gruss
      Alexander
      Zuletzt geändert von ah72103; 14.03.2003, 08:18.

      Kommentar


      • #4
        hast du mal gesucht nach dem was ich geschrieben hab?

        an oberster stelle stehst du
        an vierter stelle steht die (imo) antwort


        wie kriegst du eigentlich das bild in die datenbank ohne es vorher irgendwie zu übertragen?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Also das Bild wird schon übertragen, dafür gibt es wieder eine eigene Seite. Wie gesagt ich hab mir das nicht selbst aus den Fingern gesaugt, sondern Kevin Yanks Klassiker "PHP und MySQL" zu Rate gezogen. Ich schicke Dir im Anhang das php-file aus dem buch falls es Dich interessiert.

          Ich habe Deinen Hinweis befolgt, allerdings geht es in dem Artikel ja um ein etwas anderes Thema, außerdem muss ich zugeben, dass ich von JS überhaupt keine Ahnung habe, bin bis jetzt mit php bestens gefahren. Ich kann mir nur denken, dass Du den Teil mit den Meta Headern meinst, aber wie ich das jetzt bei mir umsetzen soll um eine komplette Aktualisierung beim Öffnen zu erzwingen kapier ich nicht ganz.
          Angehängte Dateien

          Kommentar


          • #6
            du generist doch eine seite die das bild enthält und etwas text oder?

            dann musst du einfach die meta tags in die seite reinschreiben

            oder du generiest einen zufälligen/immer unterschiedlichen dateinamen und gibst den aus
            Zuletzt geändert von mrhappiness; 14.03.2003, 09:34.
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Original geschrieben von mrhappiness
              oder du generiest einen zufälligen/immer unterschiedlichen dateinamen und gibst den aus
              würde ich auch vorschlagen.

              z.b. einfach immer der aktuellen timestamp + ".jpg" als dateinamen verwenden. so hast du immer einen bildnamen, den der browser garantiert noch nicht kennt, und deshalb das bild auf jeden fall erneut lädt.

              und alle alten bilder im temporären verzeichnis kannst du ja regelmässig löschen.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Also ich würde Dir folgendes empfehlen:

                Du holst nicht die Daten des Bildes aus der DB schreibst sie in eine temp datei und lädst dann die temp datei (zweimal alles laden)

                Sondern schreibst Dir zB eine img.php, die als Parameter Deine Bild_ID bekommt

                In der gibst Du dann Deine binären Daten aus und setzt die header so ein, dass immer neu geladen werden muss...
                Evt brauchst Du nicht mal die header setzen...
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  Das mit dem zufälligen Dateinamen hatte ich auch schon probiert, allerdings bald wieder verworfen, da die Datei zwar eine temporäre sein soll, dennoch aber am Webserver angelegt wird, d.h. ich muss sie manuell löschen - siehe unlink in meinem script - d.h. ich brauche einen eindeutigen Dateinamen.

                  Andernfalls muss ich regelmäßig - eigentlich mindestens einmal täglich mittels FTP alle angelegten Dateien löschen um den Webspace nicht zu sprengen, und bei beiden Websites von mir haben wir guten Zulauf, d.h. ich muss mit bis zu 5000 temporären Dateien pro Tag rechnen. Bei ca. 30kb pro Bild im Durchschnitt ergäbe das 150 MB!!!!!

                  Eine Alternative wäre es, bei jedem Aufruf der index.html, also jedesmal wenn jemand neu einsteigt, alle Dateien irgendwie automatisch zu löschen, das habe ich zwar noch nie gemacht, lässt sich aber sicher irgendwie organisieren, muss ich mir anschauen.

                  Vielleicht bleibe ich eher bei der Variante mit den Tags, allerdings muss ich mir auch das erst aneignen.

                  Alexander

                  Kommentar


                  • #10
                    speicher den zufälligen dateinamen inner variablen und dann mach ein
                    PHP-Code:
                    unlink($zufallsdateiname); 
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Original geschrieben von mrhappiness
                      speicher den zufälligen dateinamen inner variablen und dann mach ein
                      PHP-Code:
                      unlink($zufallsdateiname); 
                      und wann willst du das machen - noch im selben script?
                      da kannst du nicht wirklich davon ausgehen, dass der browser das bild schon fertig geladen hat...


                      ich würde auch den weg von mellopie, mit der ausgabe der bilddaten durch ein script mit parameterübergabe, für den besten halten.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        aber sicher doch.

                        fpassthru und readfile kehren doch erst zurück wenn sie alles ausgegeben haben?
                        EDIT:
                        MelloPies variante is aber im prinzip das gleiche, nur ohne den umweg über ne datei. ihr habt ja so recht...
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          @ MelloPie

                          diesen Hinweis hast Du mir bei einem früheren Versuch schon gegeben, allerdings bin ich zu dämlich das auch umzusetzen. Klingen würde es sehr vernünftig.

                          Mir ist soweit klar wie ich eine img.php bastle um "nur" das Bild anzuzeigen, aber ich benötige ja auch den Bildnamen und der wird von a.php in b.php mittels Post übergeben, wie kriege ich den dann gleich weiter in die img.php die ja in der b.php aufgerufen wird und wie rufe ich die auf??

                          Alexander

                          Kommentar


                          • #14
                            wie man variablen weitergbit wirst du doch wissen oder?
                            OffTopic:
                            @MelloPie
                            manchmal glaub ich du hast recht *g*
                            Zuletzt geändert von mrhappiness; 14.03.2003, 10:51.
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              @wahsaga
                              @mrhappiness

                              Derzeit läuft es ja so, dass der Dateiname immer der gleiche ist, also zb temp.jpg. ich mache einen unlink BEVOR ich das Bild neu lade/generiere. Somit ist die temp.jpg ja die richtige, aber eben die Darstellung wird nicht aktualisiert. Auf der selben Seite am Ende kann ich den unlink nicht setzen, denn dann wird das Bild gar nicht dargestellt, habe ich schon probiert, so wie es wahsaga richtig festgestellt hat, da der browser mit der Ausgabe noch nicht fertig ist.

                              Das einzige was ich noch probieren kann, bevor ich den Weg von mellopie weiterverfolge, ist, dass ich den unlink in die a.php einbaue statt in die b.php. Mal sehen ob das hilft.

                              Alexander

                              Kommentar

                              Lädt...
                              X