Noch ein kleines Weihnachtsgeschenk für die Community Ich mach ganz gerne SQL-Abfragen gegen die DB um z. B. Bestände zu prüfen etc. - und das regelmässig. Wer keine WaWi "dran hat" braucht trotzdem Werte. Als bequemer Mensch hatte ich dann keine Lust mehr ständig die SQLs aus einem File zu holen, auszuführen und womöglich noch vorher in MySQL einzuloggen. So entstand die Möglichkeit wahlfreie SQLs als Bildschirmreporting abzusetzen. Sieht so aus im Menü: Sieht (beispielhaft) so aus, wenn angeklickt: Das "Tool" führt einen hinterlegten SQL gegen die DB aus und stellt die Ergebnismenge dar. Ganz simple eigentlich. Man erspart sich das Hantieren mit SQL-Statements, weil diese hinterlegt sind. So können dann auch Kolleg(inn)en ohne SQL-Kenntnisse reportieren ;-) Einbauen macht das Christkind, oder wer dem nicht traut macht es folgendermassen selbst: Einfach eine Datei anlegen mit folgendem Inhalt: Code: <?xml version="1.0"?> <admin_menu> <menugroup id="BOX_HEADING_SQLREPORTS" sort="90" background="statistik.png" title="SQL-Reporting"> <menuitem sort="10" link="sql_reports.php" link_param="report=[COLOR=blue]1[/COLOR]" title="Attributemeldebestand" /> <menuitem sort="20" link="sql_reports.php" link_param="report=[COLOR=purple]2[/COLOR]" title="Artikelmeldebestand" /> </menugroup> </admin_menu> und als Datei /user_classes/conf/AdminMenu/menu_sqlreports.xml auf den Server laden. Hier könnt ihr nun die Abschnitte <menuitem... so oft duplizieren und anpassen abhängig davon wieviele "Reports" ihr braucht. Wenn also ein dritter Report notwendig ist, dann für die nächste Zeile die sort-Nummer hochzählen - also z. B. auf 30 setzen, den Wert "report=x" um eins erhöhen und z. B. auf "report=3" anpassen und einen neuen Titel vergeben - usw. Nun noch dem Admin das Recht geben die Menüeinträge zu sehen und auszuführen: SQL absetzen: Code: ALTER TABLE `admin_access` ADD `sql_reports` INT( 1 ) DEFAULT '0' NOT NULL ; UPDATE `admin_access` SET `sql_reports` = '1' WHERE `customers_id` = '1' LIMIT 1 ; Ggf. die "customer-id" anpassen, wenn der Admin nicht die kundennummer 1 besitzt Und nicht vergessen den Cache zu leeren. Dann noch die beigefügte Datei hochladen nach /admin/sql_reports.php. Ist die Datei hochgeladen, dann muss sie einmalig modifiziert werden. Am Anfang des Files findet sich nachfolgender Abschnitt, der angepasst werden muss. Dort gibt es (zunächst 2 sind vorbereitet) für jeden "report=x" aus dem XML-File einen CASE-Abschnitt, also auch hier für weitere Reports die Abschnitte hinzufügen, die benötigt werden abhängig von der in der XML-Datei definierten Anzahl Reports ("report=xxx"). Die Zahl im "case" muss mit der Zahl im "report=" des XML-Files oben übereinstimmen. Die schrägen Werte sind das jeweilige SQL-Statement, welches ihr nach Euren Bedürfnissen hinterlegen könnt. Braucht ihr also einen 3. Report dann den "case '2'-Abschnitt kopieren, aus dem "case '2' ein case '3' machen und die gewünschte SQL-Selektion eintragen. Der Define('HEADING_TITLE'... legt den Titel des Reports fest, also auch nach Notwendigkeit anpassen. Fettich! Code: switch ($_GET['report']) { [COLOR=blue]case '1' :[/COLOR] Define('HEADING_TITLE', 'Meldebestand über Artikel-Attribute (Bestand <= 3)'); $gm_query = gm_split_sql_queries(" [I] select products_attributes.attributes_model as SKU, products.products_model as SKN, products.products_quantity as SKN_Qty, products_description.products_name as Name, products_attributes.attributes_stock as SKU_Qty from products, products_description, products_attributes where products.products_id = products_description.products_id and products.products_id = products_attributes.products_id and products_attributes.attributes_stock <= 3 order by products_attributes.attributes_model[/I];"); break; [COLOR=purple]case '2' : [/COLOR] Define('HEADING_TITLE', 'Meldebestand über Artikel ohne Attribute (Bestand <= 3)'); $gm_query = gm_split_sql_queries(" [I] select products.products_model as SKU, products.products_quantity as SKU_Qty, products_description.products_name as Name from products, products_description where products.products_id = products_description.products_id and products.products_id not in (Select products_id from products_attributes) and products.products_quantity <= 3;[/I]"); break; }
Na, da hat aber einer jetzt richtig "Blut geleckt" mit dem (updatesicheren) Erweitern des Gambio-Systems ...