Und damit nicht nur ich davon profitiere hier ein kleines HowTo
Ziel: Fünf Bewertungskategorien anstatt der bisherigen einen.
Ich verwende die Filmverwaltung Stand: 2007-10-30 und das AllInOneDesign 2.05 Addon.
Datenbankanpassung:
Die Tabelle _FILME_USERS muss um um vier weitere Spalten am Ende der Tabelle erweitert werden:
BewertungA, BewertungB, BewertungC, BewertungD
Die Einstellungen entsprechen denen der vorhandenen Spalte 'Bewertung' (Typ: int(2), Attribute: UNSIGNED, Null? Nein, Standard: Benuzerdefiniert: 0)
Anpassung der Datei /includes/Menu280_FilmAnzeigen.php
In dieser Datei wird die Filmansicht bearbeitet. Hier müssen die zusätzlichen Anzeigefelder für die Bewertung eingebunden werden.
Der folgende Codeabschnitt:
Code: Alles auswählen
$sql2 = "SELECT AVG(Bewertung) AS Bewertung FROM $myDB->FILME fi " .
"INNER JOIN $myDB->FILME_USERS fu ON fu.FILME_FilmID=FilmID " .
"WHERE Bewertung!=0 AND FilmID=$myVar->FilmID";
$rs2 = $myDB->go($sql2);
$row2 = $myDB->getRow($rs2);
if ( $row2['Bewertung'] != '' )
{
echo '<dt class="description_Filmanzeigen">Bewertung: Gesamt</dt>';
echo '<dd class="description_Filmanzeigen_rechts">' . round( $row2['Bewertung'], 2 ) . ' von 10 Punkte</dd>';
}
wird bei insgesamt fünf Bewertungsanzeigen ersetzt durch:
Code: Alles auswählen
$sql2 = "SELECT
AVG(Bewertung) AS Bewertung,
AVG(BewertungA) AS BewertungA,
AVG(BewertungB) AS BewertungB,
AVG(BewertungC) AS BewertungC,
AVG(BewertungD) AS BewertungD
FROM $myDB->FILME fi " .
"INNER JOIN $myDB->FILME_USERS fu ON fu.FILME_FilmID=FilmID " .
"WHERE Bewertung!=0 AND FilmID=$myVar->FilmID";
$rs2 = $myDB->go($sql2);
$row2 = $myDB->getRow($rs2);
if ( $row2['Bewertung'] != '' )
{
echo '<br /><dt class="description_Filmanzeigen">Bewertung: </dt>';
echo '<dd class="description_Filmanzeigen_rechts"> </dd>';
echo '<dt class="description_Filmanzeigen">Gesamtwertung</dt>';
echo '<dd class="description_Filmanzeigen_rechts">' . round( $row2['Bewertung'], 2 ) . ' von 10 Punkte</dd>';
echo '<dt class="description_Filmanzeigen">Informationsgehalt</dt>';
echo '<dd class="description_Filmanzeigen_rechts">' . round( $row2['BewertungA'], 2 ) . ' von 10 Punkte</dd>';
echo '<dt class="description_Filmanzeigen">Wissenschaftlichkeit</dt>';
echo '<dd class="description_Filmanzeigen_rechts">' . round( $row2['BewertungB'], 2 ) . ' von 10 Punkte</dd>';
echo '<dt class="description_Filmanzeigen">Anspruch / Verständnis</dt>';
echo '<dd class="description_Filmanzeigen_rechts">' . round( $row2['BewertungC'], 2 ) . ' von 10 Punkte</dd>';
echo '<dt class="description_Filmanzeigen">Unterhaltungswert</dt>';
echo '<dd class="description_Filmanzeigen_rechts">' . round( $row2['BewertungD'], 2 ) . ' von 10 Punkte</dd><br />';
}
Die von mir gewählten Bewertungskategorien sind natürlich austauschbar.
Anpassung der Datei /index2.php
In dieser Datei müssen drei Codeabschnitte ersetzt werden
Abschnitt 1
Der folgende Codeabschnitt:
Code: Alles auswählen
if ( $myVar->MenuID == 291 && isset($_POST['FilmGesehen']) )
{
// nachfragen, ob eintrag schon existiert
$sql = "SELECT COUNT(*) AS Anz FROM $myDB->FILME_USERS WHERE FILME_FilmID = $myVar->FilmID AND USERS_UserID = {$_SESSION['UserID']}";
$rs = $myDB->go($sql);
$row = $myDB->getRow($rs);
if ( array_key_exists( 'Bewertung', $_REQUEST ) )
$Bewertung = (int) $_REQUEST['Bewertung'];
else
$Bewertung = 0;
$comment = $myDB->escape_string( htmlentities( $_POST['Kommentar'] ) );
if ( $row['Anz'] == 0 )
{
$sql = "INSERT INTO $myDB->FILME_USERS ( USERS_UserID, FILME_FilmID, Kommentar, istNeu, zeigeNamen, Zeitpunkt, Bewertung ) VALUES ( {$_SESSION['UserID']}, $myVar->FilmID, $comment, 1, {$_POST['zeigeNamen']}, NOW(), $Bewertung )";
$myVar->erfolg[] = "Bewertung war erfolgreich.";
}
else
{
$sql = "UPDATE $myDB->FILME_USERS SET Kommentar=$comment, istNeu=1, zeigeNamen={$_POST['zeigeNamen']}, Bewertung=$Bewertung WHERE FILME_FilmID=$myVar->FilmID AND USERS_UserID={$_SESSION['UserID']}";
$myVar->erfolg[] = "Änderung war erfolgreich.";
}
muss durch folgenden ersetzt werden:
Code: Alles auswählen
if ( $myVar->MenuID == 291 && isset($_POST['FilmGesehen']) )
{
// nachfragen, ob eintrag schon existiert
$sql = "SELECT COUNT(*) AS Anz FROM $myDB->FILME_USERS WHERE FILME_FilmID = $myVar->FilmID AND USERS_UserID = {$_SESSION['UserID']}";
$rs = $myDB->go($sql);
$row = $myDB->getRow($rs);
if ( array_key_exists( 'Bewertung', $_REQUEST ) )
$Bewertung = (int) $_REQUEST['Bewertung'];
else
$Bewertung = 0;
if ( array_key_exists( 'BewertungA', $_REQUEST ) )
$BewertungA = (int) $_REQUEST['BewertungA'];
else
$BewertungA = 0;
if ( array_key_exists( 'BewertungB', $_REQUEST ) )
$BewertungB = (int) $_REQUEST['BewertungB'];
else
$BewertungB = 0;
if ( array_key_exists( 'BewertungC', $_REQUEST ) )
$BewertungC = (int) $_REQUEST['BewertungC'];
else
$BewertungC = 0;
if ( array_key_exists( 'BewertungD', $_REQUEST ) )
$BewertungD = (int) $_REQUEST['BewertungD'];
else
$BewertungD = 0;
$comment = $myDB->escape_string( htmlentities( $_POST['Kommentar'] ) );
if ( $row['Anz'] == 0 )
{
$sql = "INSERT INTO $myDB->FILME_USERS ( USERS_UserID, FILME_FilmID, Kommentar, istNeu, zeigeNamen, Zeitpunkt, Bewertung, BewertungA, BewertungB, BewertungC, BewertungD ) VALUES ( {$_SESSION['UserID']}, $myVar->FilmID, $comment, 1, {$_POST['zeigeNamen']}, NOW(), $Bewertung, $BewertungA, $BewertungB, $BewertungC, $BewertungD )";
$myVar->erfolg[] = "Bewertung war erfolgreich.";
}
else
{
$sql = "UPDATE $myDB->FILME_USERS SET Kommentar=$comment, istNeu=1, zeigeNamen={$_POST['zeigeNamen']}, Bewertung=$Bewertung, BewertungA=$BewertungA, BewertungB=$BewertungB, BewertungC=$BewertungC, BewertungD=$BewertungD WHERE FILME_FilmID=$myVar->FilmID AND USERS_UserID={$_SESSION['UserID']}";
$myVar->erfolg[] = "Änderung war erfolgreich.";
}
Abschnitt 2
Der folgende Code-Abschnitt:
Code: Alles auswählen
$sql2 = "SELECT Bewertung Kommentar, zeigeNamen FROM $myDB->FILME fi INNER JOIN $myDB->FILME_USERS fu ON FILME_FilmID=FilmID WHERE fi.FilmID=$myVar->FilmID AND fu.USERS_UserID={$_SESSION['UserID']}";
muss durch diesen ersetzt werden:
Code: Alles auswählen
$sql2 = "SELECT Bewertung, BewertungA, BewertungB, BewertungC, BewertungD, Kommentar, zeigeNamen FROM $myDB->FILME fi INNER JOIN $myDB->FILME_USERS fu ON FILME_FilmID=FilmID WHERE fi.FilmID=$myVar->FilmID AND fu.USERS_UserID={$_SESSION['UserID']}";
Abschnitt 3
Der folgende Code-Abschnitt
Code: Alles auswählen
echo "<tr>";
echo "<td colspan=\"2\" style=\"vertical-align:top;\">";
echo "optionale Bewertung: (1 = miserabel bis 10 = sehr gut)";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"padding:0px 0px 20px 0px; vertical-align:top;\">";
for ( $i=1; $i<=10; ++$i )
{
echo "<input class=\"checkbox\" style=\"margin-left: 0.5em\" type=\"radio\" name=\"Bewertung\" value=\"$i\" ";
if ( $row2['Bewertung'] == $i )
echo "checked=\"checked\" ";
echo "/> <span style=\"font-size: 0.82em; font-family: Tahoma;\">$i</span>";
}
echo $myVar->getRequest("",TRUE);
echo "</td>";
echo "</tr>";
Muss durch diesen ersetzt werden:
Code: Alles auswählen
echo "<tr>";
echo "<td colspan=\"2\" style=\"vertical-align:top;\">";
echo "Gesamtwertung: (1 = miserabel bis 10 = sehr gut)";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"padding:0px 0px 20px 0px; vertical-align:top;\">";
for ( $i=1; $i<=10; ++$i )
{
echo "<input class=\"checkbox\" style=\"margin-left: 0.5em\" type=\"radio\" name=\"Bewertung\" value=\"$i\" ";
if ( $row2['Bewertung'] == $i )
echo "checked=\"checked\" ";
echo "/> <span style=\"font-size: 0.82em; font-family: Tahoma;\">$i</span>";
}
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"vertical-align:top;\">";
echo "Informationsgehalt: (1 = miserabel bis 10 = sehr gut)";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"padding:0px 0px 20px 0px; vertical-align:top;\">";
for ( $i=1; $i<=10; ++$i )
{
echo "<input class=\"checkbox\" style=\"margin-left: 0.5em\" type=\"radio\" name=\"BewertungA\" value=\"$i\" ";
if ( $row2['BewertungA'] == $i )
echo "checked=\"checked\" ";
echo "/> <span style=\"font-size: 0.82em; font-family: Tahoma;\">$i</span>";
}
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"vertical-align:top;\">";
echo "Wissenschaftlichkeit: (1 = miserabel bis 10 = sehr gut)";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"padding:0px 0px 20px 0px; vertical-align:top;\">";
for ( $i=1; $i<=10; ++$i )
{
echo "<input class=\"checkbox\" style=\"margin-left: 0.5em\" type=\"radio\" name=\"BewertungB\" value=\"$i\" ";
if ( $row2['BewertungB'] == $i )
echo "checked=\"checked\" ";
echo "/> <span style=\"font-size: 0.82em; font-family: Tahoma;\">$i</span>";
}
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"vertical-align:top;\">";
echo "Anspruch / Verständnis: (1 = miserabel bis 10 = sehr gut)";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"padding:0px 0px 20px 0px; vertical-align:top;\">";
for ( $i=1; $i<=10; ++$i )
{
echo "<input class=\"checkbox\" style=\"margin-left: 0.5em\" type=\"radio\" name=\"BewertungC\" value=\"$i\" ";
if ( $row2['BewertungC'] == $i )
echo "checked=\"checked\" ";
echo "/> <span style=\"font-size: 0.82em; font-family: Tahoma;\">$i</span>";
}
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"vertical-align:top;\">";
echo "Unterhaltungswert: (1 = miserabel bis 10 = sehr gut)";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"padding:0px 0px 20px 0px; vertical-align:top;\">";
for ( $i=1; $i<=10; ++$i )
{
echo "<input class=\"checkbox\" style=\"margin-left: 0.5em\" type=\"radio\" name=\"BewertungD\" value=\"$i\" ";
if ( $row2['BewertungD'] == $i )
echo "checked=\"checked\" ";
echo "/> <span style=\"font-size: 0.82em; font-family: Tahoma;\">$i</span>";
}
echo "</td>";
echo "</tr>";
echo $myVar->getRequest("",TRUE);
Nun habt ihr fünf Bewertungskategorien, die ihr je nach Belieben betiteln könnt. Natürlich könnt ihr auch die Anzahl der Bewertungskategorien anpassen. Dann müsstet ihr jedoch auch die entsprechenden Code-Abschnitte entsprechend ändern.