php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 5 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 21-01-2009, 14:27
Chrissi007
 Registrierter Benutzer
Links : Onlinestatus : Chrissi007 ist offline
Registriert seit: Jul 2004
Beiträge: 49
Chrissi007 ist zur Zeit noch ein unbeschriebenes Blatt
Chrissi007 eine Nachricht über ICQ schicken
Standard php File Upload mit Progress Bar (AJAX)

Hi zusammen,

Ich bin gerade dabei einen Fileuplod mit Progressbalken auf Basis der PECL Extension uploadprogress zu realisieren.

Beim Start des Dateiuploads rufe ich per onSubmit-Ereignis eine Funktion auf.

PHP-Code:
<form onsubmit="UP.start('{$upload_id}');" action="index.php?cmd=news" method="post" enctype="multipart/form-data" name="upload_form" target="ifr2"
Intern ruft UP.start regelmäßig die Funktion
PHP-Code:
requestInfo: function() {
    
//ifr = document.getElementById("ifr");
    
ifr.src="info.php?ID="+upload_id+"&"+new Date();
}, 
Wie ihr erahnen könnt, handelt es sich bei ifr um ein iframe, bei dem bei jedem Update das src-Attribut neu angegeben wird und es dadurch zu einem Refresh des iframes kommt.
Im Internet Explorer entsteht dabei allerdings jedes mal dieses <Click>-Geräusch und auch im Firefox verwandelt sich kurzerhand der Mauszeiger in ein Lade-Symbol.

Ich würde es deswegen gerne so machen, dass nicht jedesmal ein iframe neu geladen wird, sondern sich das innerHTML eines DIVs ändert.
Die Seite http://talks.php.net/show/torkey06/24 ( Demo: http://progphp.com/progress.php ) demonstriert recht anschaulich, was ich erreichen möchte...

Ich steh aber leider total aufm Schlauch. Wie kann ich das innerHTML eines DIVs alle 2 Sekunden ändern? Wie kann ich aus Javascript heraus einen php-Script aufrufen?

Für jeden Denkanstoß bin ich echt dankbar... Ich weiß grad echt nicht weiter.
__________________
Grüße, Chrissi
Our Dreams are Wings
Mit Zitat antworten
  #2 (permalink)  
Alt 22-01-2009, 19:44
Chrissi007
 Registrierter Benutzer
Links : Onlinestatus : Chrissi007 ist offline
Registriert seit: Jul 2004
Beiträge: 49
Chrissi007 ist zur Zeit noch ein unbeschriebenes Blatt
Chrissi007 eine Nachricht über ICQ schicken
Standard

Kennt keiner eine Javascriptfunktion, die das Ergebnis einer php-Seite auslesen kann?
__________________
Grüße, Chrissi
Our Dreams are Wings
Mit Zitat antworten
  #3 (permalink)  
Alt 22-01-2009, 19:51
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Google(AJAX).
AJAX macht genau was du willst - nur ggf. mit XML und JSON und was noch alles. Kann aber auch einfach nur plain text.
Mit Zitat antworten
  #4 (permalink)  
Alt 24-01-2009, 11:45
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von Chrissi007
Kennt keiner eine Javascriptfunktion, die das Ergebnis einer php-Seite auslesen kann?
Es gibt keine einfache Funktion. Um Requests an Webserver zu schicken und die Antworten auszuwerten, gibt es das XMLHTTPRequest-Objekt. Das ist der Kern des modernen Remote-Scriptings, oder AJAX, wie es vom Marketing getauft wurde.

Wie man das XMLHTTPRequest-Objekt benutzt, erfährst du (unter Anderem) hier:
http://ajaxpatterns.org/XMLHttpRequest_Call
und hier:
http://developer.apple.com/internet/...mlhttpreq.html

Für eine Upload-Progress-Anzeige reicht es meistens, wenn das antwortende Server-Script einen zweizeiligen Text liefert: Erste Zeile "hochgeladene Bytes", zweite Zeile "insgesamt hochzuladene Bytes". XML- oder JSON-formatierte Daten zu versenden, macht nur das Server-Script aufwändiger als nötig.
Mit Zitat antworten
  #5 (permalink)  
Alt 25-01-2009, 09:55
derHesse
 Newbie
Links : Onlinestatus : derHesse ist offline
Registriert seit: Aug 2008
Beiträge: 21
derHesse ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Warum wieder mal das Rad neu erfinden ...


http://swfupload.org/

oder mit Mootools:
http://digitarald.de/project/fancyupload/

nutzt zwar alles kein PECL, tut aber das was du im Endeffekt willst

Geändert von derHesse (25-01-2009 um 09:58 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 26-01-2009, 17:37
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von derHesse
Warum wieder mal das Rad neu erfinden ...

http://swfupload.org/

oder mit Mootools:
http://digitarald.de/project/fancyupload/

nutzt zwar alles kein PECL, tut aber das was du im Endeffekt willst
Nunja, Flash-Scripts einzuspannen um Dateien hochzuladen, ist wohl eher vom Typ "Rad neu erfinden". Schließlich können das Browser schon seit Jahrzehnten ohne Plugin[3].

Und was die JavaScript-Lösung angeht: Ich kenne MooTools zwar allenfalls oberflächlich, aber ES GIBT (BISHER[1]) KEINE REINE JAVASCRIPT-LÖSUNG für File-Uploads mit Progress-Bar, schlicht und ergreifend deshalb, weil der Server den Upload-Fortschritt ermitteln muss -- mit JavaScript kommt man da (bisher[1]) nicht ran. Und PHP ist so ein Sonderfall, da ist der Fileupload so verkorkst gelöst[2], da braucht es halt diese komische PECL-Erweiterung, die nur für diesen einen Zweck erfunden wurde. Mit Perl, Python oder anderen sinnvollen Server-Sprachen kommt man an die File-Upload-Daten wesentlich einfacher ran.

--
[1] Die Browser geben die Infos bisher nicht raus. Könnte sich aber ändern.
[2] Frei nach dem alten IT-Motto: "Unsere Lösung -- Ihr Problem!"
*und_nachschieb*
[3] Dass ein Flash-Script den Komfort beim Datei-Upload verbessern kann, ist klar.

Geändert von fireweasel (26-01-2009 um 20:18 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 26-01-2009, 18:54
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von fireweasel
[B]Nunja, Flash-Scripts einzuspannen um Dateien hochzuladen, ist wohl eher vom Typ "Rad neu erfinden". Schließlich können das Browser schon seit Jahrzehnten ohne Plugin.
Für die Flash-Lösung spricht im allgemeinen auch eher, dass man auf einen Wisch mehrere Dateien hochladen kann, ohne die vorher packen zu müssen.

Das dass ganze nur in bestimmten Browser/Betriebssystem-Kombinationen gut funktioniert, macht es dann aber auch wieder überflüssig.
Mit Zitat antworten
  #8 (permalink)  
Alt 26-01-2009, 19:45
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von unset
Das dass ganze nur in bestimmten Browser/Betriebssystem-Kombinationen gut funktioniert, macht es dann aber auch wieder überflüssig.
Nein. Es bricht es maximal auf ein Goodie runter.
Wer 200 Bilder hoch laden will, und das möglichst einfach, muss dann halt Flash haben - und wird sich dann über diese Lösung garantiert freuen. Man stelle sich jedoch mal vor man müsste 200 Bilder über ein normales HTML-Formular einzeln auswählen und hoch laden ... zumindest ich hab noch andere Dinge zutun...

Alternativ bieten sich noch Lösungen über z.B. ZIP-Datei an, mit dem Problem, dass wenn der Transfer in der Mitte des 500MB Files abbricht, man noch mal von ganz vorne anfangen kann...

in kurz: Ich würde nicht behaupten, dass die Flash-Lösungen überflüssig wären.
Mit Zitat antworten
  #9 (permalink)  
Alt 26-01-2009, 19:47
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von ghostgambler
Nein. Es bricht es maximal auf ein Goodie runter.
Wer 200 Bilder hoch laden will, und das möglichst einfach, muss dann halt Flash haben
Das reicht aber noch nicht aus ...
Mit Zitat antworten
  #10 (permalink)  
Alt 01-02-2009, 20:56
Chrissi007
 Registrierter Benutzer
Links : Onlinestatus : Chrissi007 ist offline
Registriert seit: Jul 2004
Beiträge: 49
Chrissi007 ist zur Zeit noch ein unbeschriebenes Blatt
Chrissi007 eine Nachricht über ICQ schicken
Standard

danke für eure hilfe - hat mir sehr geholfen!

ps: bin auch zwischenzeitlich noch über folgende seite gestoßen, vielleicht für den ein oder anderen noch interessant: http://ajax.frozenfox.at/
__________________
Grüße, Chrissi
Our Dreams are Wings
Mit Zitat antworten
  #11 (permalink)  
Alt 01-02-2009, 21:00
Chrissi007
 Registrierter Benutzer
Links : Onlinestatus : Chrissi007 ist offline
Registriert seit: Jul 2004
Beiträge: 49
Chrissi007 ist zur Zeit noch ein unbeschriebenes Blatt
Chrissi007 eine Nachricht über ICQ schicken
Standard

Eine Frage hätte ich noch diesbezüglich.

Ich lass mir momentan per RequestObjekt php-seitig generierten HTML-Quelltext zurückgeben.

Code:
var content = request.responseText;
// den Inhalt des Requests in das <div> schreiben
document.getElementById('show_file_progress').innerHTML = content;
request.responseText ist der Inhalt, der dabei vom php-Script erzeugt und von Javascript empfnagen wird. Wie ihr seht speicher ich das ganze Zeug in der Variable $content ab und verändere dann das div dementsprechend, indem ich das innerHTML des divs den Inhalt aus content übergebe.

In diesem Content habe ich jetzt aber auch noch eine Javascript-Anweisung eingebaut.

Code:
[... hier weiter oben ist HTML-Quelltext...]
<script type="text/javascript">
	rolldown_show("upload_in_progress");
</script>
kurz: dieser Codeschnippsel soll einfach eine Javascript-Funktion aufrufen.
Allerdings wird rolldown_show(); nie aufgerufen.

Ich hab auch schon so Sachen probiert wie ein eval() um den ganzen Bereich zu setzen, allerdings bringt das auch nichts.

Weiß jemand an was das liegen könnte, dass das Javascript nicht ausgeführt wird?
__________________
Grüße, Chrissi
Our Dreams are Wings
Mit Zitat antworten
  #12 (permalink)  
Alt 01-02-2009, 21:56
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Google...
Bist 100%tig nicht der erste mit dem Problem.
(Das weiß ich weil ich es auch schon hatte...)
Mit Zitat antworten
  #13 (permalink)  
Alt 02-02-2009, 19:31
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von Chrissi007
Eine Frage hätte ich noch diesbezüglich.

Ich lass mir momentan per RequestObjekt php-seitig generierten HTML-Quelltext zurückgeben.
Warum?
Hatte ich nicht schon erwähnt, dass es vollkommen genügt, nur die Daten zu übermitteln?
Ob als XML, JSON, CSV oder sonst wie ist egal, aber bitte NUR DIE DATEN und nicht die halbe Darstellungslogik (HTML + JavaScript)!

Zitat:
Code:
var content = request.responseText;
// den Inhalt des Requests in das <div> schreiben
document.getElementById('show_file_progress').innerHTML = content;
request.responseText ist der Inhalt, der dabei vom php-Script erzeugt und von Javascript empfnagen wird. Wie ihr seht speicher ich das ganze Zeug in der Variable $content ab und verändere dann das div dementsprechend, indem ich das innerHTML des divs den Inhalt aus content übergebe.

In diesem Content habe ich jetzt aber auch noch eine Javascript-Anweisung eingebaut.
Das ist noch schlimmer als bei jedem Request unnötig die HTML-Daten zu übertragen. Wo, zum Geier, hast du gelernt, dass man ausführbaren Code per Remote-Scripting zum Client schicken soll? Sagt dir das Wort "Code-Injection" nichts?

Zitat:
Code:
[... hier weiter oben ist HTML-Quelltext...]
<script type="text/javascript">
	rolldown_show("upload_in_progress");
</script>
kurz: dieser Codeschnippsel soll einfach eine Javascript-Funktion aufrufen.
Allerdings wird rolldown_show(); nie aufgerufen.
Und was spricht dagegen, die Funktion, die die lustige Animation durchführt, schon beim erstmaligen Laden des HTML-Dokuments einzubinden? Und dann nur noch nach jedem Poll mit den passenden Parametern aufzurufen, anstatt das Ganze jedesmal per XMLHTTPRequest anzufordern in den DOM-Baum einzufügen und dann (in Unkenntnis der Sachlage) zu versuchen, darin eingebasteltes JavaScript auszuführen?

Zitat:
Weiß jemand an was das liegen könnte, dass das Javascript nicht ausgeführt wird?
Hmmm, der Browser ist sich anscheinend sicher, dass der von dir gewählte Weg keine gute Idee ist. Du solltest auf ihn hören ... ;-)
Mit Zitat antworten
  #14 (permalink)  
Alt 02-02-2009, 23:29
Chrissi007
 Registrierter Benutzer
Links : Onlinestatus : Chrissi007 ist offline
Registriert seit: Jul 2004
Beiträge: 49
Chrissi007 ist zur Zeit noch ein unbeschriebenes Blatt
Chrissi007 eine Nachricht über ICQ schicken
Standard

Das kommt dabei raus wenn ein Jscript Noob versucht ne AJAX-Anwendung zu bauen...

Ach schei... ich hab echt keinen blaßen Schimmer...

Könntest du mir vielleicht noch eine kleine Info mir mit auf den Weg geben: Wie ich mit php json-enkodierte Dinge erstelle und an Javascript sende ist mir soweit klar, aber wie krieg ich intern in Javascript dieses Json-Zeugs in eine Variable rein? Also ich muss die json-enkodierte Zeichenkette, die von php kommt, in Javascript ja irgendwie ausführen, oder?


Zitat:
Das ist noch schlimmer als bei jedem Request unnötig die HTML-Daten zu übertragen. Wo, zum Geier, hast du gelernt, dass man ausführbaren Code per Remote-Scripting zum Client schicken soll? Sagt dir das Wort "Code-Injection" nichts?
Ich versteh deine Besorgnis und Code-Injection sagt mir schon was. Nur wusste ich nicht, dass das im Zusammenhang mit Javascript auch ne Rolle spielen kann. Ich mein... hmm... ich seh nicht so genau, an welcher Stelle hier ein Angriff möglich wäre? Der Client empfängt ja nur Daten aus einem Script. Und das Script könnte ich ja genauso gut auch per Browser aufrufen.
__________________
Grüße, Chrissi
Our Dreams are Wings
Mit Zitat antworten
  #15 (permalink)  
Alt 03-02-2009, 09:17
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Schau dir doch mal die Element.update-Methode von Prototype an, die kann genau, was du suchst.
Btw: Ich finde das direkte Übergeben von HTML an den Browser nicht komplett daneben. Klar, eine saubere JSON - oder wie auch immer - Schnittstelle ist eindeutig sauberer, aber das direkte übergeben von HTML hat den Charm, das ich diese gerenderten Abschnitte auch direkt ohne Ajax verwenden kann und nicht zwei verschiedene Formate unterstützen muss. Gerade für etwas kurzfristige oder zeitkritische Projekte eine einfache Alternative, um trotzdem den Ajax-Vorteil nutzen zu können.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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