Diese Board wurde aus Spamschutz-Gründen auf minimale Funktionen beschränkt.
Nutze für neue Anfragen/Bug-Reports bitte meine Gitlab-Instanz.

Datenbank Problem

Hilfe bei Installation oder einem Update der Filmverwaltung. Behebung von aufgetretenen Fehlern

Moderator: Lifestyle

Gast

Beitrag von Gast »

entschuldigung... ich meine natürlich "vehement"
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Mich ärgert es einfach, dass du hier doch sehr den Eindruck hinterlässt ein fehlerfreies Skript zu erwarten.

MySQL, PHP und Apache sind mit so vielen Version und verschiedenen Konfigurationen im Betrieb, dass es überhaupt nicht möglich ist alle Kombinationen zu testen.
Es ist ganz normal, dass immer wieder Fehler auftreten!

Das Problem mit der SETTING-Tabelle ist behoben, da hier nur ein SET fehlt.
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Sorry, dass ich ein wenig überzogen reagiert habe...

Um das DaBa-Problem zu beheben, empfehle ich in der DaBa-Klasse "classes/class.db.php" am Ende des Konstruktors (Zeile 87) diesen Befehl hinzuzufügen.

Code: Alles auswählen

$this->go( "SET @@session.sql_mode='';", TRUE );
Dadurch wird der Modus zurückgesetzt. Mit dem nächsten Update werden die Fehler beseitigt.

Im Installationsskript ist der Fehler nicht weiter dragisch. Enftfernen tut man ihn durch Ersetzen mit

Code: Alles auswählen

            $sql = "UPDATE $myDB->SETTINGS SET Wert=\"0\" WHERE Variable=\"anzTopFilme\"";
            $rs = $myDB->go($sql);
            $sql = "UPDATE $myDB->SETTINGS SET Wert=\"0\" WHERE Variable=\"anzNeueFilme\"";
            $rs = $myDB->go($sql);
            $sql = "UPDATE $myDB->SETTINGS SET Wert=\"0\" WHERE Variable=\"anzBestFilme\"";
            $rs = $myDB->go($sql);
Kann zur Not aber auch im Settings-Menü geändert werden...
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Jonesy

Beitrag von Jonesy »

kein problem :wink: ...


wäre es nicht einfacher nur
SET @@global.sql_mode='';
einmal in phpmyadmin einzugeben?
oder ist das keine permanente lösung??

Jonesy
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Jonesy hat geschrieben:wäre es nicht einfacher nur
SET @@global.sql_mode='';
einmal in phpmyadmin einzugeben?
Weiß ich nicht. Nach einem Datenbank-Reset war der Modus wieder zurückgesetzt, meine ich. Außerdem denke ich, dass das Auswirkungen auf alle Skripte hat, oder?
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Gast

Beitrag von Gast »

Butzemann
Beiträge: 139
Registriert: Mi 20. Dez 2006, 15:22
Kontaktdaten:

Beitrag von Butzemann »

Ich habe einen Fehler bei der Ausgabe der Suche bei Regisseur und Schauspieler.

Bei der domi demo wird auch dieser Fehler ausgegeben. Oder ist das so gewollt, wahrscheinlich nicht.?!

----------------------------------------------------------------------------------------------------------------------------

Hallo, ich habe seit kurzem beim Suchen von Regisseur und Schauspieler folgenden Fehler (bei Filmtitel und FilmID geht alles)



SELECT DISTINCT COUNT(*) AS ANZ FROM filme_REGISSEURE re WHERE Name Cameron, James AND re.RegisseurID IN( SELECT REGISSEURE_RegisseurID FROM filme_FILME_REGISSEURE fr INNER JOIN filme_FILME fi ON fr.FILME_FilmID=fi.FilmID WHERE fi.FilmID IN ( SELECT fi2.FilmID FROM filme_FILME fi2 INNER JOIN filme_FORMATE fo2 ON fi2.FORMATE_FormatID = fo2.FormatID INNER JOIN filme_COLLECT co2 ON fi2.COLLECT_CollectID = co2.CollectID WHERE fo2.brauchtPrivileg <= 1 AND co2.brauchtPrivileg <= 1 AND fi2.brauchtPrivileg <= 1 AND ( SELECT COUNT(*) FROM filme_FILME fi3 INNER JOIN filme_FILME_GENRES fg3 ON fg3.FILME_FilmID = fi3.FilmID INNER JOIN filme_GENRES ge3 ON ge3.GenreID = fg3.GENRES_GenreID WHERE ge3.brauchtPrivileg > 1 AND fi3.FilmID = fi.FilmID) = 0) AND fi.FSK <= 18 )

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Cameron, James AND re.RegisseurID IN( SELECT REGISSEURE_RegisseurID FROM filme_' at line 1

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/htdocs/w0074a7d/filmdb/classes/class.db.php on line 127

SELECT DISTINCT COUNT(*) AS ANZ, LEFT(Name, 1) AS Letter FROM filme_REGISSEURE re WHERE Name Cameron, James AND re.RegisseurID IN( SELECT REGISSEURE_RegisseurID FROM filme_FILME_REGISSEURE fr INNER JOIN filme_FILME fi ON fr.FILME_FilmID=fi.FilmID WHERE fi.FilmID IN ( SELECT fi2.FilmID FROM filme_FILME fi2 INNER JOIN filme_FORMATE fo2 ON fi2.FORMATE_FormatID = fo2.FormatID INNER JOIN filme_COLLECT co2 ON fi2.COLLECT_CollectID = co2.CollectID WHERE fo2.brauchtPrivileg <= 1 AND co2.brauchtPrivileg <= 1 AND fi2.brauchtPrivileg <= 1 AND ( SELECT COUNT(*) FROM filme_FILME fi3 INNER JOIN filme_FILME_GENRES fg3 ON fg3.FILME_FilmID = fi3.FilmID INNER JOIN filme_GENRES ge3 ON ge3.GenreID = fg3.GENRES_GenreID WHERE ge3.brauchtPrivileg > 1 AND fi3.FilmID = fi.FilmID) = 0) AND fi.FSK <= 18 ) GROUP BY Letter HAVING Letter IN (SELECT DISTINCT LEFT(Name, 1) AS Letter FROM filme_REGISSEURE)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Cameron, James AND re.RegisseurID IN( SELECT REGISSEURE_RegisseurID FROM filme_F' at line 1

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/htdocs/w0074a7d/filmdb/classes/class.db.php on line 127
alle

Suche: keine Regisseure für Cameron, James (Suchformular)

* Seite:
*
*
* [1]
cyprian
Beiträge: 8
Registriert: Fr 1. Dez 2006, 14:11

Beitrag von cyprian »

bei mir tritt auch der fehler auf!

cyprian
Butzemann
Beiträge: 139
Registriert: Mi 20. Dez 2006, 15:22
Kontaktdaten:

Beitrag von Butzemann »

Hab das Problem gefunden:

Man bearbeite die Datei functions.php im Verzeichnis include.

Man gehe zur Zeile 647:

Man ersetzt:

case "Actors":
{
$sql = "SELECT DISTINCT COUNT(*) AS ANZ FROM $myDB->ACTORS re WHERE Name $myVar->searchFor $myVar->sqlLetterName AND re.ActorID IN( SELECT ACTORS_ActorID FROM $myDB->FILME_ACTORS fa INNER JOIN $myDB->FILME fi ON fa.FILME_FilmID=fi.FilmID WHERE ".$myDB->sqlForPriv." )";
$sqlForLetters = "SELECT DISTINCT COUNT(*) AS ANZ, LEFT(Name, 1) AS Letter FROM $myDB->ACTORS re WHERE Name $myVar->searchFor AND re.ActorID IN( SELECT ACTORS_ActorID FROM $myDB->FILME_ACTORS fa INNER JOIN $myDB->FILME fi ON fa.FILME_FilmID=fi.FilmID WHERE ".$myDB->sqlForPriv." ) GROUP BY Letter HAVING Letter IN (SELECT DISTINCT LEFT(Name, 1) AS Letter FROM $myDB->ACTORS)";
break;
}
case "Regisseure":
{
$sql = "SELECT DISTINCT COUNT(*) AS ANZ FROM $myDB->REGISSEURE re WHERE Name $myVar->searchFor $myVar->sqlLetterName AND re.RegisseurID IN( SELECT REGISSEURE_RegisseurID FROM $myDB->FILME_REGISSEURE fr INNER JOIN $myDB->FILME fi ON fr.FILME_FilmID=fi.FilmID WHERE ".$myDB->sqlForPriv." )";
$sqlForLetters = "SELECT DISTINCT COUNT(*) AS ANZ, LEFT(Name, 1) AS Letter FROM $myDB->REGISSEURE re WHERE Name $myVar->searchFor AND re.RegisseurID IN( SELECT REGISSEURE_RegisseurID FROM $myDB->FILME_REGISSEURE fr INNER JOIN $myDB->FILME fi ON fr.FILME_FilmID=fi.FilmID WHERE ".$myDB->sqlForPriv." ) GROUP BY Letter HAVING Letter IN (SELECT DISTINCT LEFT(Name, 1) AS Letter FROM $myDB->REGISSEURE)";
break;
}

--------------------------------------------------------------------------------------------------------------------------------

Mit:

case "Actors":
{
$sql = "SELECT COUNT(*) AS ANZ FROM $myDB->ACTORS WHERE $myVar->searchVar $myVar->sqlLetterName";
$sqlForLetters = "SELECT COUNT(*) AS ANZ, LEFT(Name, 1) AS Letter FROM $myDB->ACTORS WHERE $myVar->searchVar GROUP BY Letter HAVING Letter IN (SELECT DISTINCT LEFT(Name, 1) AS Letter FROM $myDB->ACTORS)";
break;
}
case "Regisseure":
{
$sql = "SELECT COUNT(*) AS ANZ FROM $myDB->REGISSEURE WHERE $myVar->searchVar $myVar->sqlLetterName";
$sqlForLetters = "SELECT COUNT(*) AS ANZ, LEFT(Name, 1) AS Letter FROM $myDB->REGISSEURE WHERE $myVar->searchVar GROUP BY Letter HAVING Letter IN (SELECT DISTINCT LEFT(Name, 1) AS Letter FROM $myDB->REGISSEURE)";
break;
}
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Danke für deine Hilfe!
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Bitte beachten, dass durch die Änderungen die Privilegien nicht beachtet werden.
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast