Fehler " Call to undefined method DB::Error()" in DB Klasse

xtramen01

Erfahrenes Mitglied
Hallo Leute,

habe eine DB Klasse und wenn ich folgende Abfrage starte kommt eine Fehlermeldung:

Call to undefined method DB::Error().....

Abfrage:
PHP:
$query = $db->query("select gid, name, level from gruppen WHERE gid IN '1,2,3'");

Die Methode der Klasse:
PHP:
function Query($query)
	{
		$res = @mysql_query($query, $this->_handle);
		if(!$res)
		{
			$this->Error('query', $query);
		}

		return new DB_Result($res);
	}

Ich komm leider nich weiter, kann mir da vielleicht jemand helfen?

Gruss
 
Bei Variablen-, Funktions-, Klassen- und Methodennamen ist die Groß- und Kleinschreibung nicht egal.
 
Leider ist das nicht das Problem.

Mach ich eine normale Abfrage:

PHP:
$db->query("select gid, name, level from gruppen WHERE gid = '".$array."");

dann klappt es einwandfrei.

Das Problem ist, das ich das so benötige:

PHP:
$db->query("select gid, name, level from gruppen WHERE gid IN '".$array."");

Mit der ersten Abfrage bekomme ich nicht das gewünscte Ergebnis.

Oder gibt es vielleicht eine andere Variante das wie in Bsp. 2 abzufragen?

Das Array enthält z.b. 1,2,3.....nun brauch ich als Ergebnis alles wo 1,2,3 in gid vorkommt.
Die Spalte gid enthält kommagetrennte zahlen...also 1,2,3,4,5 usw.

Ich bin mit meinem Latein leider am Ende :-(

Gruss
 
Hi.

Das erste Problem ist, das deine SQL Abfrage inkorrekt ist:
SQL:
select gid, name, level from gruppen WHERE gid IN ('1','2','3')
Das löst dann natürlich den Fehler aus, da offenbar die Klasse DB keine Error Methode besitzt.

Gruß

\edit: Das hatte ich überlesen:
Die Spalte gid enthält kommagetrennte zahlen...also 1,2,3,4,5 usw.
Das müßtest du nochmal erläutern. Wie sieht das Schema der Tabelle denn aus? Und was willst du mit der Abfrage überhaupt erreichen.
 
Zuletzt bearbeitet:
Also,

ich habe in der spalte "gid" der Tabelle "gruppen" alle id's stehen welche Zugriff auf eine bestimmte Seite haben.
Die Spalte "gid" enthält Kommagetrennte Werte z.b. 1,2,3,4,5....als Format verwende ich Varchar.

Nun habe ich ein $array welches 1-2-3 enthält.

Ich möchte nun als Ergebnis alle DB EInträge aus "gruppen" haben welche die Werte von $array also 1,2,3 in Spalte "gid" enthält.

Normalerweise klappt das mit:
PHP:
$erg = mysql_query("select gid, name, level from gruppen WHERE gid IN '".$array."'");

Wenn ich aber die DB Klasse verwende:
PHP:
$erg = $db->query("select gid, name, level from gruppen WHERE gid IN '".$array."'");

Dann kommt besagt Fehlermeldung.

Hoffe das war verständlich :-) Bin nich so der Profi.

Gruss

EDIT: Hattest recht, die Abfrage war falsch...jetzt klappts. Das kommt davon wenn man zu lange arbeitet....danke für den Hinweis :-)
 
Zuletzt bearbeitet:
Hallo nochmal,

anscheinend isses doch ein wenig komplexer als ich dachte.
Zwar bekomm ich keine Fehlermeldungen mehr, aber doch nicht das gewünschte Ergebnis.

Ich versuch es nochmal zu beschreiben, diesmal ein wenig abgeändert.

Ich habe eine Navigation. Nun möchte ich bestimmte Elemente dieser, nur berechtigten Usern anzeigen lassen.

Dazu ermittle ich die userid und anhand der lese ich die entsprechenden Rechte aus.
Bis dahin alles kein Problem.

Jetzt muss ich aber die Rechte des Users mit den rechten des Navigationselemts vergleichen. Und hier fängt das Problem an.

Ich versuche bildlich folgendermaßen zu vergleichen:

Selektiere alles aus der Tabelle "menu" welche in der Spalte "level" zahlen aus dem array $level_id enthält

Das versuche ich dann so:
PHP:
    $gruppen_level = array();
    $gruppen_level[] = $user->userGruppe; 
    
    foreach($gruppen_level as $level_id);
    
    
    $sql = $db->query("SELECT * FROM menu WHERE level IN (".$level_id.") and parent_id = '".$parent_id."' and status = '1' order by sortierung");

$level_id enthält z.b. die Werte 1,3,5 und die Spalte "level" enthält die Werte 1,2,3,4,5.

1 ist in der Spalte vorhanden und der User der dieser Gruppe angehört darf das Menüelement sehen.....bei 3 und 5 dasselbe.

Einfach gesagt ich will schauen ob 1 oder 3 oder 5 in der Spalte "level" vorkommt.

Teilweise stimmts und teilweise auch nicht. Bin noch nicht dahinter gekommen warum es so durcheinander ist.

Blickt das einer vielleicht? Ich bin am Ende mit meinem Latein.

Gruss
 
Zuletzt bearbeitet:
Hi,

jetzt machst Du ja für jede ID in $level_id einzeln eine Datenbankabfrage. Bastel in der Schleife die Abfrage zusammen, so dass die von deepthroat gepostete Syntax dabei rauskommt und sende sie nach der Schleife ab.
Wenn gid ein numerisches Feld ist, kannst Du Dir die Schleife auch sparen und mit [phpf]implode[/phpf] arbeiten.

LG
 
Ich bekomme das einfach nicht so hin wie geplant :-(

Gibt es denn noch eine andere Variante bzw. Möglichkeit zwei spalten zu vergleichen.

Also so:

$row1 = 1,3,5;
$row2 = 1,2,3,4,5;

Prüfe ob 1 oder 3 oder 5 aus $row1 in $row2 vorkommen....wenn ja dann gib TRUE zurück.

Ich sitze wieder viel zu lange drann, da wird man irgendwie blind.

Gruss
 
Zuletzt bearbeitet:
Zurück