Forum

Moderiert von: stefan, spinne
Forum: Bug oder nicht...
Sie schreiben eine Antwort zum Thema: Fehlerhaftes SELECT admin downloads
Gehe zu: OpenPHPNuke - das Open Source CMS Forum Index


Benutzername:
 
Sicherheits-Code
Sicherheits-Code
Neu laden

Thema im Überblick

Autor
axe

Registriert: 05.11.2006
Beiträge: 58
Sende eine Private Nachricht an axe
Fehlerhaftes SELECT admin downloads

Geschrieben: 02.05.2007 19:46

Supi, funktioniert jetzt danke


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Fehlerhaftes SELECT admin downloads

Geschrieben: 02.05.2007 18:09



Zitieren Druckerfreundliche Darstellung nach oben
axe

Registriert: 05.11.2006
Beiträge: 58
Sende eine Private Nachricht an axe
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.


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
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



Zitieren Druckerfreundliche Darstellung nach oben
axe

Registriert: 05.11.2006
Beiträge: 58
Sende eine Private Nachricht an axe
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) ]


Zitieren Druckerfreundliche Darstellung nach oben
axe

Registriert: 05.11.2006
Beiträge: 58
Sende eine Private Nachricht an axe
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


Zitieren Druckerfreundliche Darstellung nach oben
axe

Registriert: 05.11.2006
Beiträge: 58
Sende eine Private Nachricht an axe
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) ]


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
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?


Zitieren Druckerfreundliche Darstellung nach oben
axe

Registriert: 05.11.2006
Beiträge: 58
Sende eine Private Nachricht an axe
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 !??


Zitieren Druckerfreundliche Darstellung nach oben
axe

Registriert: 05.11.2006
Beiträge: 58
Sende eine Private Nachricht an axe
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


Zitieren Druckerfreundliche Darstellung nach oben
2 Seiten ( 1 - 2 )