![]() |
div-container in einer .html-Datei automatisch alle x-Sek. aktualisieren lassen
Hallo Forengemeinde,
ich habe eine .html-Datei (wird im "content"-Bereich meines Template ausgeführt), deren <div> - Inhalt über eine .php-Datei (eine darin befindliche Smarty-Funktion) befüllt wird. Dem <div> wurde eine ID zugewiesen. Nun habe ich leider erfolglos 'zig Codeschnipsel probiert, um diesen <div> Container automatisch neu befüllen zu lassen, jedoch leider ohne Erfolg, mit Sicherheit auch durch meine, doch sehr mangelhaften Kenntnisse in dem Bereich PHP, Javas*****, etc. . Ich habe nun Versuche durchgeführt, S*****e direkt in die .html zu schreiben (mit window.setTimeOut()...setInterval() für den Zeitinterval, sowie den Versuch, den <div> Bereich mittels der vergebenen ID dabei anzusprechen...alles ohne Erfolg. Dann habe ich 'zig JavaS*****e-Codeschnipsel ausprobiert (diese wurden dann mittels "general.js.php") geladen bzw. ausgeführt....leider auch dieses führten nicht zum Erfolg... den <div> Container mit der ID kann ich ja mittels "document.getElementById("meine_Div-ID")" ansprechen (oder???), meistens scheitert es dann an dem .load-Befehl mit der Url-Angabe für die .php-Datei, die intervalmäßig neu geladen werden soll (lt. den S*****en!!! oder muß die nicht neu geladen werden, um den <div> Container neu zu befüllen???), die ja auf meinem Server liegt, aber egal was ich für eine Url dafür angebe (also "www.meineDomain.de/Unterordner1/Unterordner2/Unterordner3/meineDatei.php"), es funktioniert ebenfalls nicht. Das ist echt zum :cry: .... Ich wollte den <div> - Bereich eigentlich alle 30 Sek. mit neuen Daten (es handel sich hier um Artikelansichten) befüllen, am liebsten natürlich verbunden, wärend des einladens der Daten, mit einem "fadeOut" und "fadIn"...ok, das ist aber nicht wichtig. Viel wichtiger ist für mich die Aktualisierung des <div> Containers... Weiß hier Jemand Rat oder kann mir bezüglich der Deklarierungen ein paar Tipps geben? Würde mich sehr freuen. Gruß Thomas |
Hallo nochmal....
...damit es nicht falsch verstanden wird: ...ich möchte keinesfalls die gesamte Seite neu laden, sondern nur den <div> Container... (würde gerne einmal zur Veranschaulichung einen Ausschnitt des <div> Container anhängen, kann ich aber komischerweise nicht, da "nicht erlaubt", warum?), der durch eine .html-Datei erzeugt wird und im Contentbereich (durch Aufruf/Eintrag in der "main_content.html") beigefügt. Die Daten für den Inhalt der .html-Datei und somit ja auch der <div> Container werden durch eine .php-Datei, in der sich eine Smarty-Funktion befindet, befüllt. Bei dem ganzen Vorgang handelt es sich um die Anzeige von Produkten aus einer bestimmten Kategorie. Da ich aufgrund der Übersicht aber nur 4 in einer Reihe anzeigen möchte, es sich natürlich wesentlich mehr Produkte in der Kategorie befinden, wollte ich den <div> Container ca alle 30 Sek. "refreshen" / aktualisieren, richtig cool wäre natürlich mit fadeOut ()--> <div> Container neu befüllen --> fadeIn (). Ich habe hier z. B. folgenden S***** gefunden und entsprechend angepaßt: PHP-Code:
So langsam bin ich ziemlich ratlos... Geht das nicht auch ohne Pfadangabe oder gar direkt in der eigentlichen .html-Datei, in der der <div> Container "refresht" werden soll? So habe ich eine .js-Datei erstellt, die entsprechend "hochgeladen" wird... Vielleicht hat ja Jemand noch eine Idee dazu.... Gruß Thomas |
1. Bist du sicher das der in get genutzte Pfad richtig ist ?
2. Ist die Domain, auf die sich das get bezieht gleich der abrufenden Seite ? 3. Warum machst du es nicht mit einem IFrame ? Wenn ich solche Anforderungen habe pack ich das ganze in ein IFrame und lasse das aktualisieren. Das funktioniert auch wenn kein Javas***** aktiviert ist |
Hallo kkhamburg... (hey cool, Jemand aus der Nähe, komme aus Stade, bin aber gebürtiger Hamburger :T )
erst einmal vielen Dank für Deine Antwort.... zu 1: ja, was muß ich denn hier angeben? Wie kann ich denn auf eine Datei richtig verweisen, die eigentlich ab Rootverzeichnis, also " ../ShopOrdner/Unterordner1/Unterordner2/Unterordner3/Unterordner4/hier_liegt_gesuchte_Datei.php" liegt? Egal, in welcher Weise ich die Pfadangabe tätige, ich erhalte leider immer die Meldung "NetworkError: 403 Forbidden - http://www.../.../..." zu 2: ja, das ist korrekt, da der besagte <div> Container (erzeugt durch eine .html-Datei) im Contentbereich des Template angezeigt wird. zu 3: ja, das hört sich natürlich nicht schlecht an (wird das dann in die betreffende .html-Datei geschrieben, in der der <div> Container erzeugt wird)... habe nur leider keinen blassen Schimmer wie...habe bisher auch noch nichts im Web gefunden, wo ein beispiel meines Problemes mit iFrame gelöst wurde.... ...also stehe ich leider weiter auf dem Schlauch... Gruß Thomas PS: ...."Du kannst keine Anhänge posten..." kann man mir sagen, warum?? |
Also das ganze per IFrame zu machen ist relativ einfach.
In die "Hauptseite" baust du das IFrame ein, das du auch noch entsprechend formatieren kannst. Hier mal ein Beispiel ais einer meiner Seiten : Code:
<iframe src="show_cover.php" style="background-color:transparent;"allowtransparency="true" height="220" width="270" name="radio_info" frameborder="0" border="0" scrolling="no" noresize></iframe> Code:
<s*****> Damit wird der Inhalt des IFrames alle 30 Sekunden aktualisiert ohne das die gesamte Seite neu geladen wird. |
Hallo kkhamburg
Zitat:
Die "show_cover.php" wäre ja dann mit meiner .php-Datei zu benennen, richtig? Was bedeutet in dem weiterem Codeverlauf das bzw. der "name="radio_info" ? Worauf wird hier bezogen/aufgerufen etc.? Zitat:
Wenn ja, geht diese Lösung natürlich nicht.... Wenn ich z.B. den Browser aktualisiere wird der <div> Bereich mit neuen Daten gefüllt (also es erscheinen hier 4 neue Produktvorschläge)....und genau diese neue Befüllung des <div> Bereiches möchte ich gerne automatisch erzeugen lassen (so alle 30 Sek.), ohne eine Aktualisierung der gesamten Seite... Der <div> Bereich (deklariert in einer .html-Datei) bekommt seine Daten aus einer .php-Datei bzw. die .php-Datei übergibt die Daten an die .html-Datei.... vielleicht gehe ich das ganze auch falsch an und muß in der .php-Datei, wo ja der gesammte Vorgang für die Befüllung der .html-Datei abgearbeitet wird (wie z.B. zugehörige Daten aus der Datenbank ziehen, etc.), eine Anweisung schreiben, diesen Vorgang alle XX Sek. zu wiederholen....wäre das vielleicht die Lösung... nur welche Befehle benutze ich dann dafür? Gruß Thomas |
Wie du das Style regelst bleibt dir überlassen und der Name ist vergeben weil die Seite aus dem das ganze kommt hat mehrere IFrames dieses Typs, daher der Name um sie direkt ansprongen zu können.
Da der Reload-Befehl in der Seite steht, die per IFrame geladen wird, wird nur der Bereich innerhalb des IFrames neu geladen. Mit PHP ist das nicht vernünftig umsetzbar. Du müsstest in PHP eine Endlosschleife bauen was überhaupt nicht sinnvoll ist. Probiere es doch einfach mal mit zwei HTML-Dateien aus, du wirst sehen es funktioniert wie gewünscht. |
Hallo kkhamburg,
also ok....auch wenn ich nur Bahnhof verstehe (was meinst Du mit "Probiere es doch einfach mal mit zwei HTML-Dateien aus...") ....es geht doch nur um eine HTML-Datei, die durch eine PHP-Datei gefüttert wird..... aber gut, was muß ich jetzt genau tun, in welche der beiden Dateien (in die HTML-Datei oder in die PHP-Datei?) kommt nun die "window.setTimeout"-Anweisung und in welche das iFrame-S***** rein (sieht der dann ohne die Styleanweisungen so aus: "<iframe src="meinPHP-Dateiname.php" name="radio_info" </iframe>"? ...name="radio_info" ist mir immer noch nicht ganz klar...woher kommt er bzw. was soll hier angesprochen werden oder ist das nur ein Name von Deinem S***** und ich muß da einen anderen reinsetzen?, weil Deiner Ausführung diesbezüglich mit: "....der Name ist vergeben weil die Seite aus dem das ganze kommt hat mehrere IFrames dieses Typs, daher der Name um sie direkt ansprongen zu können"..welche Seite bei mir hat mehrere iFrames?? bzw. habe ich keine Seite mit dem Namen "radio_info"....oder etwa doch...ich glaub' , ich dreh hier nochmal durch...vor allem weiß ich aufgrund meiner Null-Kenntnisse überhaupt nicht, was das alles bedeutet, welche Auswirkungen dahinter stecken....diese Materie mit PHP, Javas*****, HTML und was da noch alles so zugehört ist sowas von trockener Stoff, das ich immer wieder davon Abstand genommen habe, mir dieses reinzuprügeln, weil ich NICHTS in irgend welchen Tutorials kapiert habe...oder die Tutorials waren einfach nur Sch....:dozey: , keine Ahnung....daher Hut ab vor solchen Leuten wie Dir, die damit rumwerkeln als wäre es das normalste der Welt...naja, wenn Du den Mut mit mir noch nicht verloren hast, dann warte ich gespannt auf Deine (erklärende) Antwort....im übrigen finde ich es ebenfalls voll Sch...:dozey: ......wieso kann ich hier keine Datei ranhängen (dann hätte ich Dir die .php und die .html-Dateien einmal hochladen können)....ich habe doch den Button "antworten" gewählt und nicht "Direkt antworten", wie's in der Hilfe unter Anhänge und Bilder steht.....man, voll blöd..... Gruß Thomas PS: ich habe die "window.setTimeout"-Anweisung einmal in meine betreffende .html-Datei gesetzt, es wird dann auch immer alle angegebenen Sek neu geladen (allerdings mit dem Hinweis im Mozilla "warten auf..." und dann mein Domainname, nur wird der <div> Bereich nicht mit neuen Daten befüllt, es bleiben die alten drinnen, der Hinweis ist natürlich auch doof, da die Aktualisierung ja im Hintergrund ablaufen soll (wenn das geht)....wenn ich jedoch beim Mozilla den "Aktualisierungs-Pfeil" drücke, werden komischerweise neu Daten in den <div> Bereich "gepackt"......warum?? (ok, weil dann wohl alle Daten nochmal vom Webspace / Server angefordert werden, oder??) |
Schau dir mal die Seite [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] an. Wenn der Bereich unten rechts, da wo das Cover und der Titel auftaucht so funktioniert wie du dir das vorstellst, ist das von mir beschriebene deine Lösung. Musst allerdings ein paar Minuten abwarten, bis ein neuer Titel gespielt wird.
|
Ein Iframe ist nich unbedingt die eleganteste Lösung.
Das ganze lässt sich am Besten mit Ajax realisieren. Zitat:
Beispiele finden sich einige im Netz: z.B. [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] Einfach mal googeln: Ajax automatisch aktualisieren, Ajax reload, etc. |
Frag 3 Leute und du bekommst 5 Meinungen.:D
Meiner Ansicht nach ist ein IFrame für die Anforderungen die beste Lösung zumal diese auch bei deaktiviertem Javas***** noch funktioniert. |
Ähm?
Zitat:
Zitat:
|
Ja, funktioniert auch wenn Javas***** deaktiviert ist.
|
@Mr_Braun....vielen Dank für Deinen Beitrag, das Beispiel kannte ich schon, es wurde dabei aber von Firebug eine Fehlermeldung bezüglich der .php-Datei gegeben, die er nicht finden konnte.....nach 3 Tagen rumprobieren habe ich es daher aufgegeben, dieses so zu lösen, vielleicht habe ich dieses Beispiel auch nur an falscher Stelle eingegeben...bin also für weitere Tipps offen...
@kkhamburg Zitat:
also folgendes (da ich ja hier keine Anhänge posten kann...(hätte sich ja mal ein Moderator zu äußern können, warum das so ist...), werde ich Dir mal die .html-Datei als Code posten, die verantwortlich für die Anzeige des <div> Bereiches ist....ich hoffe, so etwas darf ich hier....das posten der .php-Datei (die die .html-Datei füllt), die in einem anderem Shopordner liegt, erspare ich mir lieber aufgrund des Volumens.... Den iFrame-S***** + den "window.setTimeout"-S***** habe ich nun versucht innerhalb dieser .html-Datei einzubinden, das einzige, was passiert ist, das die ganze Startseite permanent "refresht" wurde und in dem <div> Bereich nicht die Produkte aufgelistet wurden, sondern ebenefalls die Startseite nocheinmal innerhalb des <div>-Bereiches.... ...so, hier erstmal der Code für den <div>-Bereich in der .html-Datei, die "tt_random_7.html" heißt und sich im Template-Verzeichnis befindet, die .php-Datei heißt übrigens "function.tt_random.php" und befindet sich außerhalb des Template-Verzeichnis, aber natürlich noch innerhalb des restlichem Shopverzeichnis: Code:
<div id="tt_random"> Angezeigt wird dieser <div> Bereich übrigens im "Content"-Breich des Shops.... ...trotzdem erstmal vielen Dank für Eure Mühe, @kkhamburg und @Mr_Braun... Gruß Thomas |
Du bist noch auf dem Holzweg.
In die "Hauptdatei" kommt das IFrame und dann benötigst du eine weitere Datei in der der Inhalt deines IFrames kommt plus das S*****. Wenn die Infos die du einbinden willst aus einer PHP-Datei kommen kannst du entweder den relevanten Part in eine neue PHP-Datei setzen und diese in Verbindung mit einem neuen Template aufrufen oder aber in die bestehende Programmierung eine Weiche für das 2. Template einbauen. Dies müsstest du aber sowieso machen, da du ja nur einen Teilbereich aktualisieren willst. |
@kkhamburg,
sorry, wenn ich nochmal wieder doof nachfragen muß (daher danke für Deine Geduld)...in welche "Hauptdatei" meinst Du?...meine "index.html" ? ....gibt es keine Möglichkeit die .html-Datei oder die .php-Datei mit der Funktionsabfrage einfach neu aufzurufen? |
Na im konkreten Fall geht es wohl um die "tt_random_7.html"
Da du nicht die ganze Seite aktualisieren willst sondern nur einen Teilbereich musst du ja irgendwie die Möglichkeit dazu schaffen. Beim IFrame gäbe es sogar noch die Möglichkeit nur diesen Bereich zu fokusieren, aber das macht mehr Probleme als es Nutzen bringt. Nochmal für dein Verständnis. Die Seite die ich dir gegeben habe besteht aus 2 Dateien. Datei 1 (die Hauptdatei) zeigt die grundsätzliche Webseite an und hat ein IFrame. Datei 2 (das IFrame) beinhaltet nur das, was in dem IFrame der Hauptdatei angezeigt werden soll. Beide Dateien bestehen in diesem Fall sowohl aus einem PHP-teil, als auch aus einem HTML-Teil. So ist der Aufbau immer, egal ob IFrame oder reines Javas*****. Das siehst du auch in dem von Mr_Braun geposteten Link : Zitat:
|
Zitat:
Code:
$("#tt_random").load("function.tt_random.php"); |
Hast du es denn mal versucht ?
Da die PHP-Datei auch den Verweis zum Template erscheint bekommst du dann in dem Bereich nochmals die komplette Seite angezeigt, und das ist es doch nicht was du willst. Deswegen schrieb ich ja das dieses S***** um eine Template-Weiche erweitert werden muss. |
meinst Du mit Versucht das?:
Code:
$("#tt_random").load("function.tt_random.php"); Firbug gibt mir unter Konsole diese Fehlermeldung zum unteren S*****: Code:
missing } in XML expression Code:
<s***** type="text/javas*****"> Ich habe mal meinen Shop eben auf "online" gestellt, bin gerade beim Aufbau...vielleicht magst Du ja mal kurz raufschauen...der<div> Bereich, den ich meine, befindet sich direkt unter dem Slider..mit der Überschrift "...unsere Empfehlung aus TV, Video & Elektronik".... Shop-Adresse: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...].... |
Wenn du jemanden bittest mal drüber zu schauen solltest du aber auch den entsprechenden Teil aktivieren, das macht die Fehlersuche einfacher.
Aber selbst wenn der Fehler beseitigt ist wird das Ganze trotzdem nicht machen was du willst denn es würde dann in dem DIV die gesamte Seite erneut erscheinen. Und eine Weiche baut man am einfachsten indem man im load-befehl eine Variable vergibt und diese dort, wo das Template geladen wird auswertet. Dazu ist es aber immer noch erforderlich eine zweite HTML-Datei zu bauen die eben nur das beinhaltet was in dem DIV erscheinen soll. Das ist dann zwar immer noch "suboptimal", sollte aber funktionieren. Der eigentlich richtige Weg wäre eine Funktion zu schreiben, die genau das liefert, was auch angezeigt werden soll und diese dann per load einzubinden. |
....ich nehme mal an, mit "....solltest du aber auch den entsprechenden Teil aktivieren, das macht die Fehlersuche einfacher....." meinst Du die Fehlermeldung meines stümperhaften Versuches mit dem eben genannten S*****....ja, den habe ich wieder raugenommen, das stimmt...wollte Dir den <div> Bereich "jungfräulich" präsentieren, damit Du Dir mal ein Bild von dem machen kannst, was ich meine...ich kann den Code gerne wieder einbauen, aber wahrscheinlich habe ich dabei schon murks gemacht....habe Ihn als Javas*****-Datei eingebunden, was mit Sicherheit nicht richtig ist....:o
Zitat:
....wie würde denn so eine "load"-Anweisung ungefähr aussehen? |
Die "Schleife" ist ja auch deine Load-Anweisung. Wenn ich richtig erinnere steht da bei dir 5000 drin, was alle 5 Sekunden bedeuten würde.
Darum geht es doch gerade. Du baust die Funktion in eine neue PHP-Datei mit einem eigenen Template und bindest das Ganze mit einer der genannten Möglichkeiten ein. Da dein Shop eh "Javas*****-verseuchet" ohne Ende ist kannst du auch bei reinem Javas***** bleiben. Durch das S***** wird nun der DIV-Bereich alle 5 Sekunden aktualisiert weil eben alle 5 Sekunden die PHP-Datei, die du gebaut hast, aufgerufen wird. Über die 5 Sekunden würde ich mir jedoch nochmal Gedanken machen. |
Zitat:
Zitat:
Zitat:
Zitat:
na, schauen wir mal..... ich danke Dir erst einmal recht herzlich für Deine Mühe und Deine Geduld... :T ... erst mal schönes Wochenende.... übrigens coole Seite... Gruß Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.