Autor |
Fehlerhaftes SELECT admin
downloads |
axe
Registriert: 05.11.2006
Beiträge:
58
|
Fehlerhaftes SELECT admin downloads
Geschrieben: 01.05.2007 22:42
Hi,
wenn ich im Download-Modul unter Admin auf Downloads klicke bekomm ich einen SQL Fehler.
Das Select Statement ist
SELECT lid , lid, title, url, user_group FROM opn_downloads_links ORDER BY lid ASC
2x lid kann nicht passen !??
in V 2.4.4 war dieses statement in der ....admin/index.php
wo es in V 2.4.6 hingewandert ist konnt ich noch nicht finden.
Gruß
Alex
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Fehlerhaftes SELECT admin downloads
Geschrieben: 01.05.2007 23:16
ok, bin jetzt fündig geworden:
in .../modules/download/admin/index.php wird definiert
$dialog->settable ( array ( 'table' => 'downloads_links',
'show' => array (
// 'lid' => _DOWN_DLID,
'title' => _DOWN_PAGETITLE,
'url' => _DOWN_PAGEURL,
'user_group' => _DOWN_USERGROUP),
'type' => array (
'url' => _OOBJ_DTYPE_URL,
'user_group' => _OOBJ_DTYPE_USERGROUP),
'id' => 'lid') );
und in class/engine/gui_engine/gui_part/class.gui_listbox.php
wird mit
$select_feld = $this->_data['_table']['id'] . ' ';
$ar = array();
foreach ($this->_data['_table']['show'] as $key => $val) {
das lid Attribut doppelt ins SELECT statement eingebaut.
Ich geh mal davon aus dass das lid Attribut im show-array redundant ist, das bereits im id Array mit drin !?
Hab das bei mir auskommentiert, dann geht auch wieder die Auflistung der Downloads.
Gruß
Alex
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Fehlerhaftes SELECT admin downloads
Geschrieben: 01.05.2007 23:20
Noch ein Nachtrag:
ist leider doch nicht so einfach, aus dem show-Array kann man das Attribut nicht rausnehmen, sonst fehlt der Spaltentitel in der erstellten Listbox und aus dem id array kann man es auch nicht rausnehmen, da dieses für SELECT COUNT(...)... verwendet wird :/
=> class.gui_listbox.php anpassen !??
|
|
stefan Wohnort: Münster
|
Fehlerhaftes SELECT admin
downloads
Geschrieben: 02.05.2007 05:31
hmm... ich kann den fehler hier nicht reproduzieren, wie kann ich den erzeugen. weil ob da 2 lid drin sind dürfte nicht die ursache sein.
lad dir mal die aktuelle class.gui_listbox.php aus dem branch, ist das dann immer noch, also der SQL Fehler?
kann man das auf larborcenter nach stellen?
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Fehlerhaftes SELECT admin downloads
Geschrieben: 02.05.2007 09:31
Hallo Stefan,
meine Vermutung dass Du es nicht nachstellen kannst dürfte MySQL sein ich denke mal MySQL stört sich nicht wenn in einem Select ein Attribut doppelt vorkommt.
Mit Firebird gehts nicht, hab das besagte Select
SELECT lid , lid, title, url, user_group FROM opn_downloads_links ORDER BY lid ASC
mal manuell in der DB abgesetzt:
Undefined name.
Dynamic SQL Error.
SQL error code = -204.
Ambiguous field name between a field and a field in the select list with name.
LID.
Funktionieren würde dieses SELECT nur in der Form:
SELECT lid as lid_a , lid as lid_b, title, url, user_group FROM opn_downloads_links ORDER BY lid_a ASC
Das entspräche auch dem ANSI-SQL Standard.
Werd das mal testen ob MySQL da einfach toleranter dem Standard gegenüber ist.
Gruß
Alex
Nachtrag:
Wie vermutet ist es so, MySQL stört sich nicht an doppelten Attributen in einem Select - sauberes SQL ist es aber nicht. Sollte man daher nachdenken wie man es ändern könnte. werd es mal noch mit mssql und oracle testen....
[ Diese Nachricht wurde bearbeitet von: axe am 02.05.2007 09:39 (Originaldatum 02.05.2007 09:31) ]
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Fehlerhaftes SELECT admin downloads
Geschrieben: 02.05.2007 10:03
Ok, MSSQL und Oracle akzeptieren auch doppelte identische Attribute in einem Select :/ schade, dann muss ich wohl schauen im DB driver das wieder auszufiltern....
Falls dies hier ein regular expressions Experte liest, gibt es da eine Möglichkeit doppelte Wörter in einem String zu erkennen und entfernen??
Gruß
Alex
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Fehlerhaftes SELECT admin downloads
Geschrieben: 02.05.2007 10:14
Nächste Korrektur:
MSSQL meldet doch auch einen Fehler:
Meldung 209, Ebene 16, Status 1, Zeile 1
Ambiguous column name 'tp_WebId'.
Funktionieren tut nur ein
SELECT a,a,b FROM mytable
Das geht auch mit Firebird.
aber sobald ein ORDER BY a
dazu kommt gibt es mit MSSQL und Firebird einen Fehler da das ORDER by Attribut eben nicht eindeutig ist.
Jetzt stehts 2:2
MySQL geht
Oracle geht
Firebird geht nicht
MSSQL geht nicht
Postgres muss ich mal schauen ob ich da eine Installation zum testen hab. -> PostgreSQL funktioniert es.
Gruß
Alex
[ Diese Nachricht wurde bearbeitet von: axe am 02.05.2007 10:43 (Originaldatum 02.05.2007 10:14) ]
|
|
stefan Wohnort: Münster
|
Fehlerhaftes SELECT admin
downloads
Geschrieben: 02.05.2007 12:55
ui ui ui
Du fängst an mich zu begeistern Testest eben mal paar SQL DBs
Du weisst schon das wenn man zeigt was man kann gnadenloss gefordert wird
Wie auch immer wenn das so ist hast du 100% recht das es geändert werden muss, sollte auch nicht das problem sein das in der classe (nicht db) zu ändern
sqlite geht auch
class.gui_listbox.php muss da angepasst werden das das id feld nicht noch mal extra in das select kommt wenn ein feld = id schon vorhanden ist.
sollte da im aufbau aber kein problem sein
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Fehlerhaftes SELECT admin downloads
Geschrieben: 02.05.2007 13:07
supi, weil das wäre auch meine Präferenz das in der gui_listbox class anzupassen.
tendentiell würde ich _data['_table']['id'] gar nicht mit ins select nehmen, sondern immer nur das was in _data['_table']['show'] steht.
dann muss man aber darauf achten, dass die 'id' attribute auch immer mit im 'show' array stehen.
in modules/weblogs/admin/index.html ist dies z.B. nicht der Fall
'show' => array (
'title' => _WEB_LINKNAME,
'homepage' => _WEB_URL),
'showfunction' => array (
'homepage' => $homepage_visible_func),
'id' => 'lid') );
aber naja, gibt da sicher mehrere Möglichkeiten die sich vom Aufwand in Grenzen halten.
|
|
stefan Wohnort: Münster
|
Fehlerhaftes SELECT admin
downloads
Geschrieben: 02.05.2007 18:09
|
|
|
sortieren nach
|
Seite 1 2 nächste Seite |