• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Eine PHP Datei von alleine updaten lassen - geht das?

Mellipupsi

Mitglied
Hallo Leute,

ich hab mal folgendes vor. Ich habe hier eine php Datei, die ich gerne immer in kurzer Zeit von selbst updaten lassen möchte. Es geht dabei um die Titelanzeige die hier zu sehen ist. Cover und Titel sind in der Datei als bestimmter Code eingesetzt:

HTML:
<div class="poptitel1"><?=CURRENT_ARTIST?></div><div class="poptitel2"><?=CURRENT_TITLE?></div>
<div class="poptitelanzeige"><img src="<?=CURRENT_COVER?>" width="100" height="100" /></div>

Abrufen tut das System das ganze von einer anderen PHP Datei. Bisher bleibt aber bei einem Liedwechsel immer Titel und Cover stehen. Ich würde gerne das sich der Titel und das Cover von alleine in einem bestimmten Minutentakt updaten. Geht sowas? Und geht das auch so das es sich auch alleine in dem Link, den ich oben gepostet habe updatet, auch wenn es mit include eingesetzt wurde?

Ich hoffe ich hab es gut erklärt und jemand kann mir helfen :-)
Schon mal schönes Wochenende an alle...

Liebe Grüße
Melli
 
Werbung:
mit php so weit ich weiß nicht.
aber mit html meta refresh
so hab ich das in meinen player-boxen früher zumindest immer gemacht.
da es sich in deinem fall abr nicht um einen iframe handelt, fällt das wohl weg, da dann der player auch immer wieder neu startet.
mit JS sollte da aber sicher was machbar sein...allerdings kann ich dir damit nicht behilflich sein.

ich würde es mit titelanzeige im iframe lösen und das ganze mit meta-refresh aktuell halten
 
Mit Ajax (also per Javascript) ließe sich der Liedtitel nachladen. Am leichtesten sind die Abfragen per Ajax zu gestalten. Und die Daten würde ich mir dann im JSON Format holen.
Heisst auf der Website, wo der Interpret und das Lied abgefragt werden brauch nur so etwas in der Art stehen.
PHP:
<?php
  
  $antwort = array();
  $antwort['interpret'] = "Black Eyed Peas";
  $antwort['song'] = "Time of my Life";

  echo json_encode($antwort);


?>

Es wird dann so etwas von der Seite ausgegeben:
Code:
{
  "interpret" : "Black Eyed Peas",
  "song" : "Time of my Life"
}

bei jQuery gibt es ein Ajax-Request, dass dir JSON-direkt parsed. Somit könntest du dann so etwas machen:
PHP:
<script type="text/javascript">
  function reloadSongList(artistElement, songElement) {
    $.getJSON('reloadArtist.php', function(data) {
       artistElement.innerHTML = data['interpret']; // in Data stecken die Variablen aus der PHP-Datei
       songElement.innerHTML = data['song'];
    });
  }

  reloadSongList(document.getElementById("poptitel1"), document.getElementById("poptitel2"));
</script>

Und das ganze lässt du dann von einem setIntervall aufrufen. (Eventuell musst du noch eine zwischenfunktion machen.
Möglichkeit Nummer 2 wäre, dass du die jQuery Funktion load benutzt.
.load() – jQuery API
 
Werbung:
Huhu,

danke schon mal für die Info. Hab auch schon gelesen, dass es wohl mit Ajax geht. Für mich klingt deine Erklärung net ganz so simple :S

Liegt aber daran das ich jetzt bei PHP Sachen nicht so nen Ass bin, kenn das nicht so die Begriffe. Die Codes sind für mich jetzt noch bissl verwirrend, weil du da einen Titel reingeschrieben hast? Es darf sich ja die Seite mit dem Player nicht updaten, weil sonst würde der sich ja auch ständig updaten.

Dein dritter Code, soll der dann in die Datei, wo der Titel angezeigt wird, also wo auch der Player drin ist?

Und das ganze lässt du dann von einem setIntervall aufrufen. (Eventuell musst du noch eine zwischenfunktion machen.

Das hab ich noch nicht ganz verstanden, wie exakt ist das machen soll...

lg Melli
 
AJAX ist nicht PHP. Er meint, du sollst das ganze zur Laufzeit mit JavaScript machen. Mit Code #3 forderst du Code #1 an. Code #3 steht irgendwo in deinem Player, für gewöhnlich findet man JavaScripte im <head>-Tag. Code #2 ist die Ausgabe von Code #1, wenn man die PHP-Datei im Browser öffnen würde. Diese Niederschrift nennt sich JSON (JavaScript-Object-Notation) und kann in JavaScript mittels
Code:
eval( '(' + JSON + ')' );
in ein funktionstüchtiges JS-Objekt verwandeln. Dies nimmt dir aber die von Gilles präsentierte Funktion bereits ab. Über dieses Objekt kannst du dann zur Laufzeit deine Titel ändern. Allerdings müsstest du das noch etwas weiter austüfteln... ;) Zum Beispiel herausfinden welches Lied gerade läuft und dann Code #1 aufrufen mit einem GET-Parameter wie songID=53, welchen du über JavaScript in deinem Player setzt und in deiner... "Titles.php" oder wie auch immer du die Datei nennst behandelst.
 
Hi,

klingt jetzt für mich wieder extrem kompliziert...

in ein funktionstüchtiges JS-Objekt verwandeln. Dies nimmt dir aber die von Gilles präsentierte Funktion bereits ab. Über dieses Objekt kannst du dann zur Laufzeit deine Titel ändern. Allerdings müsstest du das noch etwas weiter austüfteln... :wink: Zum Beispiel herausfinden welches Lied gerade läuft und dann Code #1 aufrufen mit einem GET-Parameter wie songID=53, welchen du über JavaScript in deinem Player setzt und in deiner... "Titles.php" oder wie auch immer du die Datei nennst behandelst.

Wie meinst du rausfinden welches Lied gerade läuft? Eigentlich will ich ja nur das die Datei in einer bestimmten Zeit refresht (upgedatet) wird, ohne das der Hörer immer F5 drücken muss und sich der Player neu lädt. In html gibt es doch auch sowas ähnliches? Also muss doch nur sowas in die Datei, die den Titel ausliest oder ist das Problem das es als include drin ist? Also als iframe würde es wahrscheinlich gehen?

Weil die Songs haben keine IDs oder so was...
 
Werbung:
Tschuldige, ich sollte an meiner Ausdrucksweise feilen. Ich klinge immer so kompliziert... ^^'

Naja, ich weiß ja nicht, wie genau dein Player funktionieren soll, zumal ich keinen Ton an meinem PC habe. Wenn du nur möchtest, dass die Datei neu geladen wird, könntest du <meta http-equiv="refresh" content="60" /> setzen, die Seite würde nach 60 Sekunden neu geladen.
Um dir genauer helfen zu können bräuchte (ich zumindest) mehr Code aus der PHP-Datei, die das ganze "steuert"... Was du da gezeigt hast sind 3 Zeilen Code, da kann ich nicht so viel mit anfangen... ^^
 
Hihi,

ach nein, du bist net kompliziert, ich bin einfach nur hohl^^ - bin ja froh das man mir hilft und nicht wi ein vielen Foren dumme Kommentare bekommt oder blöde Sprüche. Ich kann auch etwas ins Detai gehen, bin nur etwas vorsichitg, weil die Funktion hat ein Freund für mich gebaut und will net das jemand sich das abguckt^^

Also das ganze sieht so aus: Ich hab dir mal den Code hier an dein Postfach geschickt, einfach aus Sicherheitsgründen, hoffe ist okay.
Der ist die Titelanzeige und das Cover. Auch die Playlist wird teils mit der Datei gesteuert. Und per Include sitzt diese Datei jetzt in der webradio.php die im Forum oben verlinkt ist wo auch der Player drin ist. Jetzt soll sich ja nur Titelanzeige, Cover und Playlist in einer bestimmten Zeit refreshen, mir geht es nicht mal darum, das nach jedem Liedwechsel sich das ändert, sondern einfach z.B alle 2 Minuten, dann wird auch jeder Song super angezeigt und aufgelistet. Und esd darf halt nicht Serverüberlastend sein, was ja so refresh Sachen oft sein können.

Jetzt hoffe du hast die perfekte Lösung für mich, dann bekommste auch nen Keks *gg*
 
Klar, kann ich verstehen. :) Glaube aber weniger, dass ich die perfekte Lösung finden kann... xD Im Bereich PHP bin ich noch nicht ganz so fortgeschritten, immerhin komm ich damit durch die Runden. ^^ Ich werds mir mal ansehen und mein Bestes geben. Hoffe, das ist genug... :p
 
Werbung:
Ach perfekt ist doch nie was, es soll ja nur funktionieren, aber dein Code sieht ja schon ganz schick aus, könnte ja was werden, wenn ich alles kapieren würde *lach*
 
Der PHP-Inhalt der Datei mit der du den Titel (im Moment statisch) ausgibst brauchen wir.

Ein meta-refresh kommt hier nicht in Frage.

Für den Ajax-Teil würde ich dir auch jQuery empfehlen und das ganze mit der .load-Funktion machen. Ist hier erklärt
http://designgala.com/how-to-refresh-div-using-jquery/

Und das, wenn du es per Hand machen willst.
JQuery HowTo: Replacing images at time intervals
Code:
<script type='text/javascript'>
function refresh(artistElement, songElement){
    $.getJSON('reloadArtist.php', function(data) {
       artistElement.innerHTML = data['interpret']; // in Data stecken die Variablen aus der PHP-Datei
       songElement.innerHTML = data['song'];
    });
}

$(document).ready(function(){
    setInterval('refresh(document.getElementById("poptitel1"), document.getElementById("poptitel2"))', 5000);
}
</script>
Den restlichen Teil hat Gilles ja bereits geschrieben.
 
Zuletzt bearbeitet:
Zurück
Oben