Seite 2 von 2

Verfasst: Di 1. Aug 2006, 12:22
von Gast
entschuldigung... ich meine natürlich "vehement"

Verfasst: Di 1. Aug 2006, 18:44
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.

Verfasst: So 6. Aug 2006, 15:05
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...

Verfasst: Fr 11. Aug 2006, 00:24
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

Verfasst: Fr 11. Aug 2006, 09:02
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?

Verfasst: Fr 11. Aug 2006, 12:17
von Gast

Verfasst: Sa 6. Jan 2007, 19:43
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]

Verfasst: So 7. Jan 2007, 12:40
von cyprian
bei mir tritt auch der fehler auf!

cyprian

Verfasst: So 7. Jan 2007, 19:27
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;
}

Verfasst: Mo 8. Jan 2007, 20:42
von der-domi
Danke für deine Hilfe!

Verfasst: Do 11. Jan 2007, 21:15
von der-domi
Bitte beachten, dass durch die Änderungen die Privilegien nicht beachtet werden.