Folgendes Problem:
Ich möchte eine Seite haben, die anzeigt, welche Filme auf meinem Rechener innerhalb der letzten 6 Tage hinzugefügt wurden. Dafür habe ich zuerst das Verzeichnis mit einem seperatem Skript ausgelesen:
Funktioniert auch alles noch bestens...
Um jetzt aber nicht jeden Film, den ich auf dem Dateisystem hinzufüge auch noch von Hand in die Datenbank eingeben muss, lese ich das Verzeichnis der Festplatte aus...
Die Filme sind jetzt in $fsMov als Array gespeichert. Nun das Auslesen der Filme die schon in der DB gespeichert sind (stehen dann als Array in $dbMov):
Nun vergleiche ich die beiden Arrays und füge die Unterschiede direkt in die DB ein (in der DB könnten nur dann mehr Filme sein, wenn ich welchen von der HD lösche - was ich nie tue...):
Eigenltich sollte man ja davon ausgehen, dass die vorher ausgelesenen, dann zwischengespeicherten Filmbezeichnungen mit den erneut ausgelesenen übereinstimmen. Ich verzweifel aber langsam, da sie es natürlich nicht tun und ich keine Ahnung habe, woran das liegen könnte...
Ich möchte eine Seite haben, die anzeigt, welche Filme auf meinem Rechener innerhalb der letzten 6 Tage hinzugefügt wurden. Dafür habe ich zuerst das Verzeichnis mit einem seperatem Skript ausgelesen:
Code:
$link = mysql_connect('localhost', 'user, 'pass'); mysql_select_db("db") or die("Auswahl der Datenbank fehlgeschlagen"); $d = dir("../videos"); while (false !== ($entry = $d->read())) { if ($entry != "." && substr_count($entry, "..") == 0 && substr_count($entry, "@") == 0){ $query = "INSERT into filme (bez, Datum) VALUES ('".$entry."', CURRENT_DATE)"; $result = mysql_query($query); } } $d->close(); mysql_close($link); Soweit so gut. Auf der Hauptseite kann ich direkt nach dem auffüllen (und einer kleinen Modifikation der Daten) auch die ganze Sache darstellen: $newMov = "SELECT bez FROM filme WHERE DATE_SUB(CURDATE(),INTERVAL 6 DAY) <= datum";//Filme der letzten 6 Tage $oldMov = "SELECT bez FROM filme WHERE DATE_SUB(CURDATE(),INTERVAL 6 DAY) >= datum";/Filme älter als 6 Tage $newRes = mysql_query($newMov); $oldRes = mysql_query($oldMov); echo "<h1>Neuzugänge bei den Filmen während der letzten Woche:</h1> "; for ($i=0; $i<mysql_num_rows($newRes); $i++){ echo mysql_result($newRes, $i)." "; } echo "<h1>Ansonsten noch das Altbewährte:</h1>"; for ($i=0; $i<mysql_num_rows($oldRes); $i++){ echo mysql_result($oldRes, $i)." "; }
Um jetzt aber nicht jeden Film, den ich auf dem Dateisystem hinzufüge auch noch von Hand in die Datenbank eingeben muss, lese ich das Verzeichnis der Festplatte aus...
Code:
$i = 0; $d = dir("../videos"); while (false !== ($entry = $d->read())) { if ($entry != "." && substr_count($entry, "..") == 0 && substr_count($entry, "@") == 0){ $fsMov[$i] = $entry; $i++; } } $d->close();
Code:
$result = mysql_query("SELECT bez From filme"); $i = 0; while ($row = mysql_fetch_assoc($result)) { $dbMov[$i] = $row["bez"]; $i++; }
Code:
$j = $i = 0; for($i=0; $i<count($dbMov); $i++){ if ($dbMov[$i] == $fsMov[$j]){} else{ mysql_query("INSERT Into filme (bez, Datum) VALUES ('".$fsMov[$j]."', CURRENT_DATE)"); echo $fsMov[$j]." wurde hinzugefügt"; $j++; } }
Kommentar