Hallo !
Das Menu
Menu598_sentFilmEinfuegen.php einfach wie folgt ändern:
Gilt für die Design-Version. Die Einträge im Bemerkungsfeld behalten dann auch ihre Formatierung.
<?php
/*******************************************
* *
* Filmverwaltung mit PHP & MySQL *
* *
*******************************************
* *
* Copyright: ab 2005 Dominik Erdmann *
* Internet:
http://www.der-domi.de *
* *
*******************************************
* *
* Das Skript darf nach eigenem Belieben *
* geändert werden. Copyright-Hinweise und *
* Links auf
http://www.der-domi.de dürfen nicht *
* verändert werden und müssen jederzeit *
* sichtbar bleiben! *
* *
*******************************************
*/
/*
* Falls Formular für einfügen oder ändern eines Film gensendet wurde
*/
if ( $_SESSION['UserRechte'] < 600 )
exit();
if ( $myVar->MenuID == 598 && ( isset($_POST['insert']) || isset($_POST['change']) ) && $_SESSION['UserRechte'] > 300 )
{
// alle POST-Variablen auf Richtigkeit prüfen und evtl. slashes einfügen
if ( strlen($_POST['Titel']) <= 0 )
$myVar->warnung[] = "Der Eintrag muss einen Titel besitzen!";
$Titel = $myDB->escape_string( htmlentities( $_REQUEST['Titel'] ) );
$Originaltitel = $myDB->escape_string( htmlentities( $_REQUEST['Originaltitel'] ) );
$Land = $myDB->escape_string( htmlentities( $_REQUEST['Land'] ) );
$FSK = $_REQUEST['FSK'];
if ( strlen( $_POST['Webseite'] ) )
$Webseite = $myDB->escape_string( htmlentities( "http://".str_replace( "http://", "", $_POST['Webseite'] ) ) );
else
$Webseite = $myDB->escape_string("");
// Zeilenumbrüche berücksichtigen, Tags in HTML-Entities konvertieren, Zeilenumbrüche umwandeln in <br />
if ( array_key_exists( 'Inhalt', $_POST ) )
$Inhalt = $myDB->escape_string( nl2br( htmlentities( $_REQUEST['Inhalt'] ) ) );
else $Inhalt = "";
if ( array_key_exists( 'Bemerkung', $_POST ) )
$Bemerkung = $myDB->escape_string( $_REQUEST['Bemerkung'] );
else
$Bemerkung = "";
// anzDisks kontrollieren
if ( array_key_exists( 'anzDisks', $_REQUEST ) && (int)$_REQUEST['anzDisks'] >= 1 && (int)$_REQUEST['anzDisks'] <= 16 ) // 16 ist sehr hoch
$anzDisks = (int)$_REQUEST['anzDisks'];
else
$anzDisks = 1;
// brauchtPrivileg kontrollieren
if ( (int)$_REQUEST['brauchtPrivileg'] >= 0 && (int)$_REQUEST['brauchtPrivileg'] <= 99 )
$brauchtPrivileg = (int)$_REQUEST['brauchtPrivileg'];
else
$brauchtPrivileg = 1;
if ( $_REQUEST['brauchtPrivileg'] == '' )
$brauchtPrivileg = 1;
// Jahr kontrollieren
if ( (int)$_REQUEST['Jahr'] >= 1920 && (int)$_REQUEST['Jahr'] <= date('Y') )
$Jahr = (int)$_REQUEST['Jahr'];
else
$Jahr = $myDB->escape_string(0);
// Laufzeit kontrollieren
if ( (int)$_REQUEST['Laufzeit'] >= 1 && (int)$_REQUEST['Laufzeit'] <= 1500 )
$Laufzeit = (int)$_REQUEST['Laufzeit'];
else
$Laufzeit = 0;
// Falls Titel existiert, wird ein Hinweis ausgegeben
$sql = "SELECT FilmID FROM $myDB->FILME WHERE Titel = ".$Titel;
if ( isset ($_REQUEST['change']) )
$sql .= " AND FilmID != {$myVar->FilmID}";
$rs = $myDB->go($sql);
while ( $row = $myDB->getRow($rs) )
$myVar->hinweis[] = "Der Titel <a href=\"{$_SERVER['PHP_SELF']}?MenuID=280&FilmID={$row['FilmID']}\"><strong>".htmlentities($_REQUEST['Titel'])."</strong></a> ist bereits vorhanden!";
if ( (int) $_POST['setMyFilmID'] != 0 )
{
$sql = "SELECT COUNT(*) AS Anz FROM $myDB->FILME WHERE myFilmID=".$_POST['setMyFilmID']." AND COLLECT_CollectID=".$_POST['setCollectID'];
// Wenn Film ändern, dann FilmID!=diese für Query
if ( !isset($_REQUEST['insert']) )
$sql .= " AND FilmID!=".$_POST['FilmID'];
$rs = $myDB->go($sql);
$row = $myDB->getRow($rs);
if ( $row['Anz'] != 0 )
$myVar->warnung[] = "Diese FilmID ist in der gewählten Kollektion bereits vorhanden!";
}
if ( array_key_exists( 'discs', $_REQUEST ) && $_POST['discs'] == 2 )
{
if ( (int) $_POST['DiscID'] <= 0 )
$myVar->warnung[] = "Ungütige DiscID!";
else
{
$sql = "SELECT COUNT(*) AS Anz FROM $myDB->DISCS INNER JOIN $myDB->FILME ON FILME_FilmID=FilmID WHERE COLLECT_CollectID=".$_POST['setCollectID']." AND DiscID=".$_POST['DiscID'];
$rs = $myDB->go($sql);
$row = $myDB->getRow($rs);
if ( $row['Anz'] == 0 )
$myVar->warnung[] = "In dieser Kollektion ist keine passende DiscID vorhanden!";
}
}
// Markieren, ob sich CollectID geändert hat. Wird für DiscID ändern verwendet
$CollectIDchanged = FALSE;
if ( isset($_POST['change']) )
{
$sql = "SELECT COLLECT_CollectID FROM $myDB->FILME WHERE FilmID=$myVar->FilmID";
$rs = $myDB->go($sql);
$row = $myDB->getRow($rs);
if ( $row['COLLECT_CollectID'] != $_POST['setCollectID'] )
{
$oldCollectID = $row['COLLECT_CollectID'];
$CollectIDchanged = TRUE;
// falls sich auf der Disk noch weitere Filme befinden, kann CollectID nicht geändert werden
$sql = "SELECT DiscID FROM $myDB->DISCS WHERE FILME_FilmID=$myVar->FilmID";
//$sql = "SELECT COUNT(*) AS Anz FROM $myDB->DISCS WHERE FILME_FilmID!=$myVar->FilmID AND DiscID IN (SELECT DiscID FROM $myDB->DISCS WHERE FILME_FilmID=$myVar->FilmID)";
$rs = $myDB->go($sql);
$anz = 0;
while ( $row = $myDB->getRow($rs) )
{
$sql2 = "SELECT COUNT(*) AS Anz FROM $myDB->DISCS INNER JOIN $myDB->FILME ON FILME_FilmID=FilmID WHERE FILME_FilmID!=$myVar->FilmID AND COLLECT_CollectID=$oldCollectID AND DiscID=".$row['DiscID'];
$rs2 = $myDB->go($sql2);
$row2 = $myDB->getRow($rs2);
$anz += $row2['Anz'];
}
if ( $anz )
$myVar->warnung[] = "Auf der Disk zu diesem Film befinden sich weitere Filme. Es muss zuerst über die Diskverwaltung die Zuordnung gelöscht werden, damit die Kollektion geändert werden kann! (Lese im Handbuch dazu mehr!)";
}
}
// wenn keine Fehlermeldung, dann einfügen
if ( !count($myVar->warnung) )
{
if ( isset($_REQUEST['insert']) )
{
$sql = "INSERT INTO $myDB->FILME (Titel, inserted, USERS_UserID, COLLECT_CollectID, myFilmID, Originaltitel, Jahr, Land, Laufzeit, FSK, FSKunbekannt, Inhalt, Bemerkung, istTopfilm, Webseite, brauchtPrivileg, FORMATE_FormatID) " .
"VALUES ( '', now(), {$_SESSION['UserID']}, 0, 0, '', 0, '', 0, 0, 0, '', '', 0, '', 0, 0 )";
$rs = $myDB->go($sql);
$myVar->FilmID = mysql_insert_id();
}
// Wenn myFilmID!=0, muss keine neue myFilmID gesucht werden
if ( array_key_exists( 'setMyFilmID', $_REQUEST ) && (int)$_POST['setMyFilmID'] != 0 )
$myVar->myFilmID = (int)$_POST['setMyFilmID'];
else
{
// Passende myFilmID suchen
if ( $settings->firstFitID )
{
$sql = "SELECT myFilmID FROM $myDB->FILME WHERE COLLECT_CollectID=".$_POST['setCollectID']." AND FilmID!=$myVar->FilmID ORDER BY myFilmID ASC";
$rs = $myDB->go($sql);
$oldID = 1;
while ( $row = $myDB->getRow($rs) )
if ( $row['myFilmID'] > $oldID )
break;
else
++$oldID;
$myVar->myFilmID = $oldID;
}
else
{
$sql = "SELECT MAX(myFilmID)+1 AS myFilmID FROM $myDB->FILME WHERE COLLECT_CollectID=".$_POST['setCollectID'];
$rs = $myDB->go($sql);
$row = $myDB->getRow($rs);
$myVar->myFilmID = $row['setMyFilmID'];
}
}
// Nach dem Einfügen von Datum, folgt der Rest, bzw. beim Ändern eines Eintrags
$sql = "UPDATE $myDB->FILME SET Titel=$Titel, Originaltitel=$Originaltitel, COLLECT_CollectID=".$_POST['setCollectID'].", myFilmID=$myVar->myFilmID, Jahr=$Jahr, brauchtPrivileg=$brauchtPrivileg, Land=$Land, FSK=$FSK, FSKunbekannt=";
if ( array_key_exists( 'FSKunbekannt', $_POST ) && (int)$_POST['FSKunbekannt'] == 1 )
$sql .= "1";
else
$sql .= "0";
$sql .= ", Laufzeit=$Laufzeit, istTopfilm=";
if ( array_key_exists( 'istTopfilm', $_POST ) && (int)$_POST['istTopfilm'] == 1 )
$sql .= "1";
else
$sql .= "0";
$sql .= ", Webseite=$Webseite, Inhalt=$Inhalt, Bemerkung=$Bemerkung, FORMATE_FormatID={$_REQUEST['setFormatID']} WHERE FilmID = $myVar->FilmID";
$rs = $myDB->go($sql);
// DiscID finden, wenn neue Discs angelgt werden
if ( $myVar->printChange == FALSE && $_POST['discs'] == 1 ) // wenn neue Disc(s) einfügen
{
if ( $settings->firstFitID )
{
$sql = "SELECT DISTINCT di.DiscID FROM $myDB->DISCS di INNER JOIN $myDB->FILME fi ON di.FILME_FilmID = fi.FilmID WHERE fi.COLLECT_CollectID = ".$_POST['setCollectID']." ORDER BY DiscID ASC";
$rs = $myDB->go($sql);
$oldID = 1;
$check = FALSE;
// es wird gesucht, wo anzDisks hintereinander frei sind
while ( $row = $myDB->getRow($rs) )
if ( $oldID < $row['DiscID'] || $check )
{
// am Anfang markieren, dass freie DiscID gefunden wurde
if ( !$check )
$check = TRUE;
// wenn Differenz von nächste belegte ID und gemerkte freie ID >= Anzahl ist, dann ID gefunden
elseif ( $row['DiscID']-$oldID > $anzDisks )
break;
// ansonsten Markierung rückgängig machen
else
{
$check = FALSE;
$oldID = $row['DiscID'] + 1;
}
}
else
++$oldID;
$DiscID = $oldID;
}
else // !$firstFitID
{
$sql = "SELECT MAX(DiscID)+1 AS DiscID FROM $myDB->DISCS INNER JOIN $myDB->FILME ON FILME_FilmID=FilmID WHERE COLLECT_CollectID=".$_POST['setCollectID'];
$rs = $myDB->go($sql);
$row = $myDB->getRow($rs);
$DiscID = $row['DiscID'];
}
for ( $i = 0; $i < $anzDisks; ++$i )
{
$id = $DiscID+$i;
$sql = "INSERT INTO $myDB->DISCS (DiscID,FILME_FilmID,USERS_UserID,ausgeliehenAm) VALUES (".$id.",$myVar->FilmID,0,'0000-00-00')";
$myDB->go($sql);
}
}
elseif ( $myVar->printChange == FALSE && $_POST['discs'] == 2 ) // wenn einer DiscID zuordnen
{
$sql = "INSERT INTO $myDB->DISCS (DiscID,FILME_FilmID) VALUES (".(int)$_POST['DiscID'].",$myVar->FilmID)";
$myDB->go($sql);
}
// wenn beim Ändern die CollectID sich geändert hat, muss die DiscID geändert werden
if ( $CollectIDchanged == TRUE )
{
$sql = "SELECT COUNT(*) AS Anz FROM $myDB->DISCS WHERE FILME_FilmID=$myVar->FilmID";
$rs = $myDB->go($sql);
$row = $myDB->getRow($rs);
$anzDisks = $row['Anz'];
$sql = "DELETE FROM $myDB->DISCS WHERE FILME_FilmID=$myVar->FilmID";
$rs = $myDB->go($sql);
if ( $settings->firstFitID )
{
$sql = "SELECT di.DiscID FROM $myDB->DISCS di INNER JOIN $myDB->FILME fi ON di.FILME_FilmID = fi.FilmID WHERE fi.COLLECT_CollectID = ".$_POST['setCollectID']." ORDER BY DiscID ASC";
$rs = $myDB->go($sql);
$oldID = 1;
$check = FALSE;
// es wird gesucht, wo anzDisks hintereinander frei sind
while ( $row = $myDB->getRow($rs) )
if ( $oldID < $row['DiscID'] || $check )
{
// am Anfang markieren, dass freie DiscID gefunden wurde
if ( !$check )
$check = TRUE;
// wenn Differenz von nächste belegte ID und gemerkte freie ID >= Anzahl ist, dann ID gefunden
elseif ( $row['DiscID']-$oldID > $anzDisks )
break;
// ansonsten Markierung rückgängig machen
else
{
$check = FALSE;
$oldID = $row['DiscID'] + 1;
}
}
else
++$oldID;
$DiscID = $oldID;
}
else // !$firstFitID
{
$sql = "SELECT MAX(DiscID)+1 AS DiscID FROM $myDB->DISCS INNER JOIN $myDB->FILME ON FILME_FilmID=FilmID WHERE COLLECT_CollectID=".$_POST['setCollectID'];
$rs = $myDB->go($sql);
$row = $myDB->getRow($rs);
$DiscID = $row['DiscID'];
}
for ( $i = 0; $i < $anzDisks; ++$i )
{
$id = $DiscID+$i;
$sql = "INSERT INTO $myDB->DISCS (DiscID,FILME_FilmID) VALUES (".$id.",$myVar->FilmID)";
$myDB->go($sql);
}
}
// alle alten Schauspieler-Beziehungen löschen
$sql = "DELETE FROM $myDB->FILME_ACTORS WHERE FILME_FilmID = $myVar->FilmID";
$rs = $myDB->go($sql);
// Schauspieler einfügen
$actors = getArrayNames( $_REQUEST['Actors'], $settings, $myDB );
$actorsNameID = getArrayNameID( $actors, "Actors", $myDB );
insertIntoRelation( $actorsNameID, "Actors", $myVar->FilmID, $myDB );
// alle alten Regisseure-Beziehungen löschen
$sql = "DELETE FROM $myDB->FILME_REGISSEURE WHERE FILME_FilmID = $myVar->FilmID";
$rs = $myDB->go($sql);
// Regisseure einfügen
$regie = getArrayNames( $_REQUEST['Regisseure'], $settings, $myDB );
$regiesNameID = getArrayNameID( $regie, "Regisseure", $myDB );
insertIntoRelation( $regiesNameID, "Regisseure", $myVar->FilmID, $myDB );
// Genres ändern
// erst alle gesetzten Genre löschen...
$sql = "DELETE FROM $myDB->FILME_GENRES WHERE FILME_FilmID=$myVar->FilmID";
$rs = $myDB->go($sql);
// ... dann neu einfügen
if ( array_key_exists( 'Genre', $_POST ) )
{
for ( $i = 0; $i < count($_POST['Genre']); ++$i )
{
$sql = "INSERT INTO $myDB->FILME_GENRES (FILME_FilmID, GENRES_GenreID) VALUES ($myVar->FilmID, {$_POST['Genre'][$i]})";
$rs = $myDB->go($sql);
}
}
if ( isset($_FILES['Cover']) && !$_FILES['Cover']['error'] )
insertCover( $myDB, $myVar, $gdlib );
if ( strlen($_POST['CoverURL']) && $_POST['CoverURL'] != 'http://' ) {
$urls = split(";", $_POST['CoverURL']);
foreach($urls as $url) {
insertCover( $myDB, $myVar, $gdlib, trim($url) );
}
}
// wenn alles erfolgreich war...
$myVar->printChange = TRUE;
}
}
?>