SQL Error 1064

Hast du einen Fehler in der aktuellen Version gefunden ? Diesen kannst du uns hier mitteilen und uns bei der Fehlersuche helfen.
Antworten
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

SQL Error 1064

Beitrag von ise »

Hallo zusammen,
Ich weiss, es gibt schon div. Themen zu diesem Fehlercode, doch die bringen mir bisher nichts weiter.

Der Adminbereich wird ja bisher nur denen gezeigt, die Webmaster sind oder gewisse Rollen zugewiesen sind. Nun möcht ich aber, dass eine weitere Rolle ebenfalls akzeptiert wird. Ich habe nun also folgendes gemacht:

Code: Alles auswählen

if($g_current_user->isWebmaster() || $g_current_user->assignRoles() || $g_current_user->approveUsers() || hasRole("Leiter") == true || $g_current_user->editUsers())
            {
}
hasRole("Leiter") == true wurde hinzugefügt. Nun, wenn ich als User dieser Role eingelogg bin, sehe ich auch den Titel Administration mit all den Links, die ich haben muss aber wenn ich mich auslogge, erhalte ich den SQL Error 1064. Ich habs auch schon versucht mit $g_current_user->hasRole(Leiter) oder ('Leiter') oder ("Leiter")... Nix hat funktioniert.

Hier der Auszug aus dem SQL Log:
S Q L - E R R O R

CODE: 1064
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 'AND mem_begin <= "2009-09-14" AND mem_end > "2009-09-14" ' at line 4

B A C K T R A C E

FILE: adm_program/system/db/mysql.php
LINE: 193
CALL: DB->db_error()

FILE: adm_program/system/db/mysql.php
LINE: 77
CALL: MySqlDB->db_error()

FILE: adm_program/system/function.php
LINE: 40
CALL: MySqlDB->query()

FILE: adm_themes/other/my_body_bottom.php
LINE: 115
CALL: hasRole()

FILE: adm_themes/other/overall_footer.php
LINE: 20
CALL: require('adm_themes/other/my_body_bottom.php')

FILE: adm_program/index.php
LINE: 375
CALL: require('adm_themes/other/overall_footer.php')

Die Fehlermeldung wird nur angezeigt, wenn ich nicht eingeloggt bin. Bin ich mit einem User eingeloggt, der nicht in dieser Role ist, gibts keinen SQL Error.
Any Ideas?
Tanke für die Hilfe!
Ise
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Any ideas?
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hallo zusammen,
Ich versuchs nochmal... Hat jemand dieses Problem bereits einmal gehabt?
Stimmt das mit dem hasRole("") überhaupt? Sobald ich diese zusätzliche Zeile lösche, verschwindet der SQL Error wieder.
Wenn ihr weitere Infos von mir braucht, fragt nur nach.
Danke vielmals!
Gruss
Ise
superminis
Beiträge: 119
Registriert: 30. Jun 2008, 20:05
Wohnort: Baden
Kontaktdaten:

Beitrag von superminis »

Kann es sein, dass hasRole() ausreicht und du auf das == true verzichten kannst?

Nicht getestet, einfach nur geraten.
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo,

wer soll den die Rolle haben, doch der Current User? Du musst die Funktion auf dem Objekt ausführen, wie alle umliegenden Abfragen auch. Also:

Code: Alles auswählen

$g_current_user->hasRole("Leiter")
Das ==true ist zwar nicht falsch aber auch nicht nötig.

Gruß Jochen
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hallo Jochen,
Wenn ich es so mache wie du beschrieben hast, dann kommt zwar keine SQL Fehlermeldung sondern eine PHP Fehlermeldung:
Fatal error: Call to undefined method User::hasRole() in /.../adm_themes/other/my_body_bottom.php on line 116

Sofern ich mit keinem User eingeloggt bin.
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo,

hast Du denn am Anfang der Datei den Befehl

Code: Alles auswählen

require('../../system/login_valid.php');
rausgenommen? Sonst dürfte da Skript nämlich eigentlich gar nicht bis zu der von Dir beschriebenen Stelle kommen.

Gruß Jochen
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hi Jochen,
Ne, da ist nix drin. Das ist eigendlich die Standardkonfiguration vom my_body_bottom.php.
Hab nun gesehen, wenn ich

Code: Alles auswählen

$g_current_user->hasRole("Leiter")
schreibe und mich mit einem Mitglied anmelde, besteht weiterhin die Fatal Error Meldung, die ich oben gepostet habe:

Code: Alles auswählen

Fatal error: Call to undefined method User::hasRole() in /webhome/jsmoeriken/html/www.jsmoeriken.ch/newpage/adm_themes/other/my_body_bottom.php on line 116
D.h. mit dem hasRole("Leiter") == true hats besser funktioniert, da nach einem Login die Anzeige korrekt war.
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo Ise,

sorry, da war ich wohl auf der falschen Fährte. Die Funktion ist nicht Objektunabhängig. hasRole("Leiter") ist also doch richtig.

Der Fehler liegt im SQL Befehl in der Datei adm_program/system/function.php Wo genau muss ich noch suchen.

Gruß Jochen
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo Nochmal,

ich hab mir grade mal ein Testscript gebastelt. Bei mir läuft die Funktion durch. Welche Admidioversion verwendest Du?

Mein Testscript abgelegt in adm_prgram:

Code: Alles auswählen

<?php
require_once('system/common.php');
if(hasRole("Mitglied") == true)
{
    echo 'test';
}
else
{
    echo 'nixda';
}
?>
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hi Jochen,
Verwendwe die neuste Version 2.16. Kann dir ansonsten mal den Code per PN oä zusenden. Ist viel zu lange um hier zu posten.
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo Ise,

kannst Du machen. Hast Du es mal mit dem von mir geposteten Testscript versucht?

Gruß Jochen
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Ne noch nicht, abwarten bis Abends. Geschäft blockiert FTP, da kann ich leider nix testen :)
Melde mich wieder!

Gruss Ise
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hi Jochen,
Hab dein Testscript nun ausgeführt - erfolglos. Scheint nicht zu funktionieren. Soll ich dir mal den Code zukommen lassen?
Gruss Ise
Antworten