php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 20.05.2011, 13:28  
Benutzer
 
Registriert seit: 25.02.2011
Beiträge: 42
PHP-Kenntnisse:
Fortgeschritten
MLang befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] ZEND Progressbar/Ladebalken während Mysqlabfrage

Servus,

ich arbeite mich gerade etwas tiefer in Zend im Zusammenspiel mit Jquery ein. Leider finde ich nur Tutorials die mittels Jquery UI eine Ladebalken per Timeout simulieren und leider auch nix was in Verbindung mit Zend steht.

Kennt hier jemand ein gutes Tutorial diesbezüglich oder könnte mir mit ein paar Codeschnippseln weiterhelfen.

Derzeit speichere/editiere ich Daten schon mittels Jquery.submit das klappt auch soweit alles wunderbar nur hier stoße ich derzeit an meine Grenzen.

Im Endeffekt müsste der Status des Balkens während einer foreach Schleife aktualisert werden. In dieser Schleife werden nach und nach Insert/Update Statements aufgerufen. Da das ganze schon bis zu 20 Sekunden dauern kann würde ich hier gerne eine Info für den User haben, dass das Script noch läuft.

Für Denkanstösse und Hilfe bin ich sehr dankbar.
MLang ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.05.2011, 13:24  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Bei einem Dateiupload müsste dir php erstmal den Fortschritt anzeigen können. Dafür kannst du z.B. die pecl library uploadprogress verwenden. Seit der 1.0 ist da anscheinend nicht mehr viel passiert.

Um nicht alle 5 sec eine Ajax-Anfrage starten zu müssen, würde ich dir hier zu longpolling raten.

grüße Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 21.05.2011, 15:14  
Erfahrener Benutzer
 
Registriert seit: 13.05.2011
Beiträge: 188
PHP-Kenntnisse:
Fortgeschritten
php1704 wird schon bald berühmt werden
Standard

Stylesheet:
Code:
<style type="text/css">
#worker {
	position: absolute;
	left: -100px;
	top: -100px;
	width: 1px;
	height: 1px;
}
#progressbar-container {
	width: 100px;
	height: 30px;
	border: 1px solid #000000;
	background-color: #ffffff;
}
#progressbar-done {
	width: 0;
	height: 30px;
	background-color: #000000;
}
</style>
javascript:
Code:
<script type="text/javascript">
function updateProgressBar(data)
{
	document.getElementById('progressbar-done').style.width = data.percent + '%';
	document.getElementById('progressbar-percent').innerHTML = data.percent + '%';
}

function finishProgressBar()
{
	alert("Fertig!");
}
</script>
Html:
Code:
<div id="progressbar-container">
<div id="progressbar-done"></div>
</div>
<div id="progressbar-percent">0%</div>

<iframe src="/index/work" id="worker"></iframe>
PHP:
PHP-Code:
public function workAction()
{
    
$maxSteps 20;

    
$progress = new Zend_ProgressBar(
        new 
Zend_ProgressBar_Adapter_JsPush(
            array(
                
'updateMethodName' => 'updateProgressBar',
                
'finishMethodName' => 'finishProgressBar'
            
)
        ),
        
0,
        
$maxSteps
    
);

    for(
$i 0$i <= $maxSteps$i++) {
        
// TODO: insert, update ect
        
$progress->update($i);
    }

    
$progress->finish();
    exit;

Grüße.
php1704 ist offline   Mit Zitat antworten
Alt 21.05.2011, 17:18  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 603
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Zitat:
Zitat von MLang Beitrag anzeigen
[...]Kennt hier jemand ein gutes Tutorial diesbezüglich oder könnte mir mit ein paar Codeschnippseln weiterhelfen.
[...]
Google.com

alternativ

http://framework.zend.com/manual/de/...roduction.html

Dort hast du sogar deinen fertigen "Codeschnipsel", auch für jQuery...
Bookmark dir die Dokumentation.
Dafür ist sie da.
dreamcatcher ist gerade online   Mit Zitat antworten
Alt 23.05.2011, 13:26  
Benutzer
 
Registriert seit: 25.02.2011
Beiträge: 42
PHP-Kenntnisse:
Fortgeschritten
MLang befindet sich auf einem aufstrebenden Ast
Standard

Erstmal danke für die bisherigen Infos. Inzwischen hatte ich die Codeschnipsel auch in der Doku gefunden und auch getestet leider etwas erfolglos. Aber ich werde es weiter probieren. Was ich an Zend_Progressbar unschön finde ist die Tatsache das die Abfrage in einem versteckten Iframe läuft. Gibt es da auch Möglichkeiten ohne IFrame ?

EDIT:
Also mit dem IFrame habe ich es jetzt hinbekommen, was so nen Wochenende drüber schlafen doch ausmachen kann. Bleibt trotzdem noch die Frage ob das ganze auch ohne IFrame möglich ist.

Geändert von MLang (23.05.2011 um 13:48 Uhr).
MLang ist offline   Mit Zitat antworten
Alt 23.05.2011, 14:55  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 603
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Ich persönlich würde mich nicht für die Zend_Progressbar entscheiden, sondern für die des jQuery UI Frameworks.

(http://jqueryui.com/demos/progressbar/)

Das % ausrechnen würd ich dementsprechend manuell im Model mit ner Methode machen.
dreamcatcher ist gerade online   Mit Zitat antworten
Alt 24.05.2011, 08:23  
Benutzer
 
Registriert seit: 25.02.2011
Beiträge: 42
PHP-Kenntnisse:
Fortgeschritten
MLang befindet sich auf einem aufstrebenden Ast
Standard

Habe ich mir auch schon überlegt, da ich jQuery eh schon nutz wäre das mit Sicherheit die sinnvollste Lösung, aber würde wohl auch nur über nen verstecktes IFrame gehen oder ? Also den DB Update über nen Post in nen IFrame auslösen und Werte zurückgeben lassen, die vom Hauptframe wieder verarbeitet und an die Progressbar weitergeleitet werden.
MLang ist offline   Mit Zitat antworten
Alt 24.05.2011, 13:07  
Erfahrener Benutzer
 
Registriert seit: 13.05.2011
Beiträge: 188
PHP-Kenntnisse:
Fortgeschritten
php1704 wird schon bald berühmt werden
Standard

Zitat:
Zitat von dreamcatcher Beitrag anzeigen
Ich persönlich würde mich nicht für die Zend_Progressbar entscheiden, sondern für die des jQuery UI Frameworks.

(http://jqueryui.com/demos/progressbar/)

Das % ausrechnen würd ich dementsprechend manuell im Model mit ner Methode machen.
Zend_ProgressBar und die JQuery-UI-Progressbar arbeiten doch prima zusammen.

Zend_ProgressBar läuft am Server. Kannst also in deinem PHP-Code aktualisieren.
Die Progressbar von JQuery-UI sorgt nur für die Darstellung im Browser.

Code:
function updateProgressBar(data)
{
	$('#progressbar').progressbar({'value': data.percent});
}
Grüße.
php1704 ist offline   Mit Zitat antworten
Alt 24.05.2011, 15:45  
Benutzer
 
Registriert seit: 25.02.2011
Beiträge: 42
PHP-Kenntnisse:
Fortgeschritten
MLang befindet sich auf einem aufstrebenden Ast
Standard

Sodala ... das Zusammenspiel klappt jetzt auch zwischen Zend_Progressbar und jQuery Progressbar. Jetzt bastel ich nur noch an nem DIv wie bei den Dialog Boxen von jQuery UI, damit Seite im Hintergrund nicht anklickbar ist. Hat hierzu noch jemand ein paar Tipps ?

View Script sieht derzeit so aus:
PHP-Code:
    <script type="text/javascript">
        function 
Zend_ProgressBar_Update(data)
        {
            if($(
'#progressbarWrapper').is(':hidden'))
            {
                $(
'#progressbarWrapper').show();
                $(
"#progressbar").progressbar({
                    
value50
                
});
            }

            var 
stepping String(data.percent).split('.');
            $(
'#progressbar').progressbar('option','value',parseInt(stepping[0]));
            $(
"#progresstext").html(stepping[0] + ' / 100% abgeschlossen');
        }

        function 
Zend_ProgressBar_Finish()
        {
            $(
'#progressbarWrapper').hide();
        }
    
</script>
    <iframe src="/datatables/insert" id="worker" name="workerIFrame"></iframe>
    <div id="progressbarWrapper">
           <div id="progressbar"></div>
        <div id="progresstext"></div>
    </div> 
Im Controller habe ich folgenden Absatz:
PHP-Code:
                    $adapter     = new Zend_ProgressBar_Adapter_JsPush(array(    'updateMethodName' => 'Zend_ProgressBar_Update',
                                                                                 
'finishMethodName' => 'Zend_ProgressBar_Finish'));
                    
$progressBar = new Zend_ProgressBar($adapter0count($toInsertFields));
                    
                    
$dataset 0;
                    foreach (
$toInsertFields as $Field)
                    {
                        
$query $db->query('GESTRICHEN');
                        
$progressBar->update($dataset);
                        
$dataset++;
                    }
                                   
$progressBar->finish(); 
Und das CSS dafür:
PHP-Code:
        #worker
        
{
            
positionabsolute;
            
left: -100px;
            
top: -100px;
            
width1px;
            
height1px;
            
overflowhidden;
        }

        
#progressbarWrapper
        
{
            
positionabsolute;
            
background-color#000;
            
top0px;
            
left0px;
            
width100%;
            
marginauto/* Div soll zentriert werden */
            
min-height100%; /* Mindesthöhe für moderne Browser */
            
height:auto !important/* Important Regel für moderne Browser */
            
height:100%; /* Mindesthöhe für den IE */
            
overflowhidden !important/* FF Scroll-leiste */
            
z-index95;
            
opacity0.3;
            
displaynone;
        }
        
        
#progressbar
        
{
            
positionrelative;
            
top250px;
            
z-index100;
            
opacity1;
            
width400px;
            
marginauto;
        }

        
#progresstext 
        
{
            
positionrelative;
            
top250px;
            
z-index101;
            
opacity1;
            
width400px;
            
marginauto;
        } 
Leider bin ich net so der CSS Spezi. Habe auch schon versucht mittels der UI Optionen von jQuery zu experimentieren aber da kam nur ne komplett graue Seite. also bräcuchte ich jetzt eigentlich nur noch bei dem CSS ein bisserl Hilfe und ob das bisher so okay ist bin ich mir mal überhaupt nicht sicher.

EDIT: Hat sich erledigt. Habs jetzt so wie ich will und läuft wunderbar. Habe mit Hilfe einiger Tutorials CSS entschlackt und komplett umgebaut.

Geändert von MLang (25.05.2011 um 13:18 Uhr).
MLang 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
Rightmanagement mit ZEND Framework dreamcatcher Software-Design 8 15.04.2011 09:18
Zend Server CE und Debugging shimu Off-Topic Diskussionen 1 26.03.2011 02:46
Zend Framework Schulung abdullah Beruflich 2 16.01.2011 13:00
[Erledigt] PHP-Entwickler, Zend certified zur Festanstellung in Hamburg gesucht Speicher210 Gewerblich 0 24.08.2010 11:47
Zend Entwicklerlizenz Rastaloeckchen Sonstige 1 08.06.2010 00:29
Zend Webinare robo47 Off-Topic Diskussionen 0 16.03.2010 10:02
Zend Zertifizierung krackmoe PHP Tipps 2009 6 09.03.2010 12:55
Zend Studio (Javascript Unterstützung)? customer-tk Off-Topic Diskussionen 6 12.11.2009 22:42
[S] Zend Framework Coder ThisRockZ Beitragsarchiv 0 14.10.2009 13:14
Zend Optimizer tito-toti Server, Hosting und Workstations 2 27.03.2009 15:16
Zend Studio for Eclipse und Zend Framework KeKs0r PHP-Fortgeschrittene 5 15.12.2008 15:10
Zend Framework Melchior PHP-Fortgeschrittene 29 13.03.2008 21:12
[Erledigt] Zend Optimizer auf SUSE 9.3 server installieren Server, Hosting und Workstations 35 14.02.2006 16:55
Alternativen zu Zend SafeGuard (Zend Optimizer) PHP Tipps 2004-2 2 15.11.2004 14:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
jquery ladebalken, ladebalken jquery ui, iframe ladebalken, ladebalken php, jquery image progressbar width alle 20 sekunden ändern, php mysql fortschrittsbalken, jquery ladebalken php, zend_progress, zend progressbar, php mysql progressbar, zend_progress finish, zend progressbar mysql inserts, jquery ladeanimation, jquery progressbar php, php mysql query progress, zend framework progress bar, php progressbar fertig, mysql abfrage php function, .progressbar jquery tutorial, mysql abfrage jquery progressbar

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:53 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