Hilfe bei Abfrage

styler2go

Erfahrenes Mitglied
Hallo Tutorianer :D

Ich habe ein Problem wobei ich eure Hilfe bräuchte...
Undzwar folgendes:

Über einen GET Befehl werden einige Daten von einer Seite abgerufen.
Nun möchte ich in eine mysql-datenbank diese Informationen einspeichern, aber NUR wenn diese daten anders sind als die anderen. So habe ich das bis jetzt versucht (habe nicht sooo viel ahnung von php)

PHP:
<?php
<mysql verbinden>
$song = "";
    function get_item($name, $source) {
        preg_match('#<'.$name.'>(.*?)</'.$name.'>#', $source, $matches);

        return $matches[1];
    }
    
    function get_items($name, $source) {
        preg_match_all('#<'.$name.'>(.*?)</'.$name.'>#', $source, $matches);
        return $matches[1];
    }
while ($song == $_POST['song']) {
if($stream = @fsockopen("<ip>", "<port>", $errno, $errstr, 30)) {
 if(fputs($stream, "GET /admin.cgi?pass=<pw>&mode=viewxml HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n")) {
  $xmldata = "";
  while(!feof($stream)) $xmldata .= fgets($stream, 1000);
  $xmldata = explode("\r\n", $xmldata);
  $xmldata = $xmldata[3]; 
 }
}
    $sc_stream_status = get_item("STREAMSTATUS", $xmldata);
    if($sc_stream_status) {
        $dj = get_item("SERVERTITLE", $xmldata);
        $cur_song = get_item("SONGTITLE", $xmldata);
  $_POST['song'] = $sc_current_song;
    } 
  if ($song != $_POST['song'])
   {
   $song = $_POST['song'];
    <mysql Abfrage>
} } ?>

Soweit funktioniert der Code ja, nur ziemlich unpraktisch denn die php datei endet nie mit Laden (logisch, wegen dem While) nd nach kurzer Zeit komtm ein 500 error,.

Hoffe ihr könt mir helfen. Kenne keinen anderen weg.
 
Nun möchte ich in eine mysql-datenbank diese Informationen einspeichern, aber NUR wenn diese daten anders sind als die anderen.

Dann kannst du doch die entsprechenden Felder in deiner MySQL-Datenbank-Tabelle UNIQUE setzen und damit verhindern, das sie noch einmal eingetragen werden. Du musst dann natürlich den Fehler beim Eintragen abfangen und behandeln, je nach dem ob du objekt-orientiert arbeitest oder nicht. Im Falle von funktionalem Zugriff über mysql_query() müsstest du es so einrichten, das bei einem Fehler beim INSERT das Script weiter läuft. Sprich kein die() verwenden.
 
Ich denke ich soltle den Zweck genauer erklären:

Dieses Script ist für ein Webradio, und dieses Script soll im Chat anzeigen wenn sich das derzeit abspielende Lied ändert, der Chat ist AJAX und Mysql basierend.

Dadurch kann ich allerdings den Zustand nicht auf UNIQUE stellen (woran ich auch zuerst gedacht habe), weil es ja sein kann das ein Lied mehrmals abgespielt wird (Nicht hintereinander aber zbs. am nächsten Tag.) Daher müsste ich das so prüfen lassen über PHP oder was mir noch eingefalllen ist, eventuell den letzte eintrag auslesen und gucken was da drinnen steht, wenn da das gleiche drinnen steht schon dann nicht wieder Eintragen. Das soltle doch funktionieren oder?

*Gleich mal dran begeb*
 
Zurück