php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.09.2010, 09:39  
Neuer Benutzer
 
Registriert seit: 08.07.2009
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
favo befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Bild ausgeben solange das Script läuft

Mein Problem ist befasst sich nicht damit, dass mein Script nicht läuft, sondern vielmehr mit einem Nice2Have, das ich gerne realisieren würde, bisher aber noch keine Lösung gefunden habe.

Aktuelle Situation:
1. Datei "produkt_add.php":
Diese Datei enthält mein Formular, in dem Daten eingepflegt werden können und ein Bild mitgegeben werden kann.

2. Datei "produkt_add_db.php":
Diese Datei übernimmt die Eingabevalidierung und prüft, ob eine Bild mitgegeben wurde. Und genau hier setzt mein Problem an.

Wenn ein Bild mitgegeben wurde, hole ich es aus dem tmp-Verzeichnis und übergebe den Pfad an meine Resize-Klasse die mir das Bild cropped. Je nach Größe des Bildes kann dieser Vorgang etwas dauern. Mein Wunsch ist es nun, während das Script läuft, einen typische loader.gif Datei anzuzeigen. Am Ende der Datei wartet allerdings eine Header("Location:"); die mich zurück zum Formular schickt, wenn alles i.O. ist.

Hier der Codeausschnitt, der das Resizing übernimmt:
...
PHP-Code:
//Pfüfen ob Bild hochgeladen
    
if(isset($_FILES['datei']) AND !empty($_FILES['datei'])){
        
// Resize Klasse laden
        
include 'resize-class.php';
        
// datei von tmp in ordner verschieben
        
$dateineu "images/produkte/".$art_nr.".jpg";
        
move_uploaded_file($_FILES['datei']['tmp_name'], $dateineu);
        
// -------------------------- Bild auf richtige Größe bringen (Volle Größe)
        // Bild an Klasse übergeben
        
$resizeObj = new resize($dateineu);
        
// Resize Einstellungen
        
$resizeObj -> resizeImage(300200'crop');
        
// Geändertes Bild speichern
        
$resizeObj -> saveImage('images/produkte/'.$art_nr.'.jpg'100);
        
// -------------------------- Bild auf richtige Größe bringen (Preview Größe)
        // Bild an Klasse übergeben
        
$resizeObj = new resize($dateineu);
        
// Resize Einstellungen
        
$resizeObj -> resizeImage(7550'crop');
        
// Geändertes Bild speichern
        
$resizeObj -> saveImage('images/produkte/'.$art_nr.'k.jpg'100);
    } 
...

Dachte an sowas wie eine While Schleife oder so, weiß aber nicht wie ich die Ausgabe einer Bilddatei realisieren soll, wenn am Ende des Scripts ein Header Event wartet.

Vielen dank im Voraus für eure Mühe
favo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.09.2010, 09:54  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Leite auf eine Warte-Seite weiter. Das Script, das diese Warte-Seite generiert schickt sie explizit zum Browser (mit flush). Dann bearbeitet das Script das Bild. Wenn die Bearbeitung abgeschlossen ist, dann schickt das Script JavaScript-Code an den Browser, der auf die Ergebnisseite weiterleitet.

Den Hack mit dem JavaScript-Code kannst du dir ersparen wenn du einen Daemon schreibst, der die Bilder bearbeitet. Dann kannst du einen Meta-Refresh in die Warteseite einbauen (oder per AJAX nachfragen) und dadurch prüfen ob die Bearbeitung abgeschlossen ist.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

Geändert von mimomamu (17.09.2010 um 10:05 Uhr).
mimomamu ist offline   Mit Zitat antworten
Alt 17.09.2010, 10:15  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Noch ein alternativer Ansatz wäre, mittels Content-type: multipart/x-mixed-replace erst die Warteseite anzuzeigen und dann das Formular.

Vorteil: kommt ohne JavaScript aus
Nachteil: keine echte Weiterleitung, Workarounds für IE notwendig
fab ist offline   Mit Zitat antworten
Alt 17.09.2010, 10:25  
Erfahrener Benutzer
 
Registriert seit: 14.01.2010
Beiträge: 124
PHP-Kenntnisse:
Fortgeschritten
phpsecretary kann nur auf Besserung hoffen
Standard

Wie wäre es mit nem unsichtbaren iframe als Target für den upload? Onsubmit oder onlick auf den submitbutton (wobei dann abschicken per "enter" ein Problem wäre) kannst du das Bild bzw. den Layer in dem sich das Bild befindet anzeigen lassen und nach Abschluß des uploads wird per parent.window.document.location.href auf eine Zielseite weitergeleitet. Kannst das iframe auch dynamisch per JS erzeugen und damit deine Standard-JS-Funktion für den Fall basteln.
__________________
Ich bin Programmierer und kein Frameworkinstallierer.
phpsecretary ist offline   Mit Zitat antworten
Alt 17.09.2010, 11:50  
Neuer Benutzer
 
Registriert seit: 08.07.2009
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
favo befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Vorschläge. Kann jedem was Gutes abgewinnen, mal sehen wie ich mich letztendlich entscheide!
favo ist offline   Mit Zitat antworten
Alt 17.09.2010, 13:15  
Neuer Benutzer
 
Registriert seit: 17.09.2010
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
webdecker befindet sich auf einem aufstrebenden Ast
Standard

Es heißt zwar schon, es sei erledigt und oben wurde was von JavaScript-Hack erzählt, aber trotzdem noch mal eine (übliche?) Idee. Warum nicht bei Submit per JavaScript ein loader.gif anzeigen (bzw. sichtbar machen) - das verschwindet dann, wenn die neue Seite fertig ist.

HTML:
Code:
    <div id="loader" style="position: fixed; top: 40%; left: 36%; text-align: center; display: none;">
    	<img src="/loader.gif" alt="" /><br />
    	<div style="margin-top: 20px; padding-left: 10px;">Bitte warten</div>
    </div>
JavaScript (auf Basis von mootools, siehe http://mootools.net/):
Code:
window.addEvent('domready', function(){
    addLoaderEvents();
});
addLoaderEvents = function() {
    if ($(document).getElements('form')) {
        $(document).getElements('form').addEvent('submit', function(event) {
            if (!this.target) {
                showLoader();
            }
        });
    }
}
showLoader = function () {
        var wrapper = $(document).getElement('div#wrapper');
        wrapper.setStyle('opacity', 0);
        $(document).getElement('div#loader').setStyle('display', 'block');
}
Dieser Code zeigt einfach bei jedem Form-Submit den Loader.
webdecker ist offline   Mit Zitat antworten
Alt 17.09.2010, 13:34  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von webdecker Beitrag anzeigen
Warum nicht bei Submit per JavaScript ein loader.gif anzeigen
Weil das im IE idR. problematisch ist, sofern es animiert sein soll - der hat(te) nämlich die Eigenart, sämtliche Animationen auf der Seite zu stoppen, sobald eine neue Ressource angefordert wird.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
daten und bild in die DB und ausgeben Crimson007 PHP Tipps 2010 16 14.04.2010 00:00
Script stoppt wenn Bild nicht gefunden?! inox PHP Tipps 2009 20 24.11.2009 17:20
Dateiname von Bild ausgeben maboe PHP Tipps 2009 9 02.09.2009 21:55
Scriptsuche [Erledigt] Bild Upload-Resize-Wasserzeichen Script ArachnoVobicA Scriptbörse 4 09.07.2009 16:55
[Erledigt] Imagick (PECL) Bild ausgeben Schlumpf PHP Tipps 2008 2 29.10.2008 13:57
script läuft nicht mehr seit server mit save mode on läuft wolfram PHP Tipps 2008 13 29.03.2008 21:10
zufälliges Bild per random ausgeben - IE Sicherheitswarnung snemies PHP Tipps 2008 0 16.02.2008 02:17
PHP Script als Browser ausgeben drieling PHP-Fortgeschrittene 12 22.10.2007 15:52
Ausgeben wärend das Script läuft... OPEN AGAIN ! madSoul PHP Tipps 2006 17 01.02.2006 16:35
[Erledigt] Script Interpretaion läuft falsch im Firefox PHP-Fortgeschrittene 23 11.05.2005 19:01
String zerlegen und jeweils als Bild ausgeben PHP Tipps 2005 6 08.02.2005 15:19
In einem Bild ein php funktion ausgeben! PHP Tipps 2004 1 24.10.2004 16:56
bild nach bearbeitung ausgeben PHP Tipps 2004 4 07.06.2004 22:42

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
java bilder ausgeben, warteseite mit ajax in php, php solange skript läuft grafik einblenden, php solange, mit php script bild ausgeben, bildausgeben javascript, php datei upload gif-animation ie stoppt, php warteseite, http://www.php.de/php-fortgeschrittene/71936-erledigt-bild-ausgeben-solange-das-script-laeuft.html, \warten\ bild anzeigen solange js läuft, während php läuft bild anzeigen, java script wartepage einbauen, window.parent.location.href loader, php warteseite anzeigen, php warteseite einblenden, php gif animation nach \flush\, javascript solange upload läuft, gif animation stoppt fixed position, loading.gif wenn seite fertig dann weiterleiten, php loader gif anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum