Ik moet af en toe websites bouwen op webservers die wel MySQL, maar geen PHPMyAdmin omgeving bieden.
Om toch in de database te kunnen gluren of alles goed gaat en enkele basis zaken te kunnen uitvoeren heb ik een 'database manager' geschreven. De tool biedt momenteel de mogelijkheid om automatisch tabellen en kolommen te detecteren in je database, en bouwt formulieren op waarmee je eenvoudig records kunt toevoegen/bewerken/verwijderen.
De tool wil ik in de toekomst ook inzetten voor klanten, zodat deze zelf gegevens in de database kunnen beheren.
In de configuratie kun je ook specifiek aangeven welke tabellen/kolommen via de tool beheerd kunnen worden. Zo hoef je niet de hele database bloot-te-geven aan je klanten.
Ook heb ik een QUERY-tool ingebouwd waarmee je eigen queries op de database kunt runnen. Deze tool is in het configuratie eenvoudig in en uit te schakelen.
Ik ben zeer benieuwd naar jullie feedback over de tool! Als de tool 'af' is zal ik deze zeker open source als script opnemen op dit forum.
Je kunt inloggen met "admin/password". De database heb ik gevuld met een standaard JOOMLA installatie.
Ziet er echt heel goed uit :) Heel overzichtelijk en simpel om te gebruiken. Enige nadeel is dat je geen query kan laten maken door wat dropdowns zoals bij PhpMyAdmin.
Hmm, niet echt het enige nadeel naar mijn idee, en ook niet het grootste.
Maar de enige functionaliteit die hierin zit is rijen bewerken. Verder moet alles via queries. Dat maakt dit in mijn ogen geen database manager, maar een data manager waar klanten waarschijnlijk niet veel van begrijpen.
Het was ook niet mijn doel om PHPMyAdmin na te bouwen, maar om een eenvoudige interface te bieden waarin je 'ff een record kunt inzien/bewerken'.
Maar als er behoefte zou zijn aan dergelijke functionaliteit kan ik die nog altijd realiseren. Maar het zou voor mij irreeel zijn om met een 'PHPMyAdmin' te willen concurreren
Toch 2 puntjes van kritiek:
- Backticks in de queries??
- Als je een record kopieert is het misschien handig om de velden met een primary key/auto increasment leeg te laten. Anders mislukt de query
Wat ik nog mis:
- Relaties
- De mogelijkheid om een diagram van alle tabellen te laten maken. (eventueel met relaties). Misschien past dit niet bij je doelgroep, maar het zou heel mooi zijn.
- Toen ik voor het eerst het syteem bekeek wilde ik instinctief op de tabel naam klikken om hem te bekijken/bewerken. Misschien is het handig om die mogelijkheid erbij te maken. Het duurde even voordat ik het potloodje zag
Toch 2 puntjes van kritiek:
- Backticks in de queries??
Zeker nodig: als je een kolom of tabel hebt met de naam van een bestaande MySQL-functie, gaat 'ie zeiken. Met backticks heb je dat probleem niet. Zelf gebruik ik backticks alleen voor die specifieke kolommen.
In mijn mening (maar dat is maar mijn mening) moet je die kolommnamen vermijden. Waarom zou je een kolom zo willen noemen. Vaak zijn er ook andere goede kolomnamen te bedenken die mysql niet gereserveerd heeft.
Ik ben van mening dat het gebruik van backticks geen oplossing voor een probleem is maar slechts een opschuiving daarvan. In plaats van het gebruik van namen die niet gereserveerd zijn voeg je backtick toe. Dat maakt de code niet echt leesbaarder:
SELECT `FROM` FROM pm WHERE `HIGH_PRIORITY` = true;
SELECT sender_id FROM pm WHERE priority = 'high';
En dan zeker het af en toe gebruik van backticks kan voor problemen zorgen. Het maakt het debuggen nodeloos veel ingwikkelder.
Je zou gewoon SQL moeten schrijven zonder die truukjes als backticks te voorschijn moeten halen.
En als je ze zou willen gebruiken, wat ik afraad, doe het dan altijd. Dat staat een stuk duidelijker, in mijn ogen.
Het probleem met DATABASE-BEHEER-TOOLS is dat je vaak zelf niet de database hebt ingericht.
Ik wil SQL niet laten 'crashen' als de maker van de database toevallig een keyword gebruikt als tabel/kolomnaam. Daarnaast werkt het met backticks altijd goed. Het is (wat dit systeem betreft) net zo noodzakelijk als single quotes om waarden heen.
Zo bevat de joomla installatie die gebruik is in het voorbeeld ook een # in de tabelnaam.. Opzich moest deze natuurlijk vervangen worden door een PREFIX, maar zelf zonder die vervanging werken de queries vlekkeloos dankzij de backticks..
@Martin
Wat bedoel je met je opmerking? Is er iets niet goed beveiligd? Graag meer feedback zodat als er iets mis is met de beveiliging dat ik het kan fixen..