[Edit: I have awarded the bounty but not the question, as I feel there is still a chance for a better answer.]
I usually code my MySQL data entry interfaces in php.
But for quick projects where I would like to focus on the web side of things (pulling data from the database), I am looking for a form front-end to MySQL. Ideally, this would be an off-the-shelf Win or OSX program that I can hand over to a friend or client so she can input data into forms.
An Example
The lines above summarize the question, but here is a typical situation to showcase why "just give them phpMyAdmin" or some other web interface to MySQL generally wont work.
We have two main tables: images and albums. The third is an associative table that associates images with albums.
Images: id (PK), filename
Albums: id (PK), album
Album_Image: id (PK), imageid, albumid (these are foreign keys: the two id PKs from the Images and Albums tables)
For big projects, I don't mind coding a nice "back-end" interface (CRUD) that lets me edit data in a very comfortable, customized way.
For small projects, for instance an image gallery for a friend, I would like to be able to only program the "front-end": web interfaces that pull data from the database.
For the back-end, ideally, I would like to give my friend an off-the-shelf solution so she can enter images, albums, and associations between images and albums.
In the old days (I am thinking of DBaseIII), it was really easy to give interfaces to do that entry side of things.
Here is a crude approach I have tried. I have set up a view of the associative table joined to the parent tables, so it shows albumid, imageid (the PKs) and album, filename (associated fields in the parents) using this query:
SELECT albumid, imageid, album, filename FROM album_image axi
JOIN albums a ON a.`id` = axi.`albumid`
JOIN images i ON i.`id` = axi.`imageid`
The idea with this crude approach is that my friend would enter the parent PKs (albumid and imageid) in the associative table through the view, and that after hitting Insert, the full parent fields (filename and album) would be visible in the View for visual feedback. I have tried this view in three GUI tools: SQLyog (Win), HeidiSQL (Win) and Sequel Pro (OSX).
In Heidi and Sequel Pro, I have not found a way to edit the view.
In SQLyog, I can edit the PK fields (albumid and imageid) in the view, and the parent fields (album and filename) show properly when I hit "refresh". That's great. It works because even though the view shows three tables, we are only editing from one table. But I cannot delete a row as SQLyog doesn't know from which of the three tables we are trying to delete. On the other hand, in SQLyog, I able both able to insert and delete in a Query tab that contains the same query that creates the view, because in this kind of tab SQLyog allows me select the table being edited. So that works, but this workflow might start to be a little complex for my friend: she would have to open SQLyog, connect, open a saved query, select the right table to edit within the query, and make all the other right moves.
Wondering if any one knows an existing tool that is really good at making forms for MySQL---ideally a Windows or OSX binary. I will consider a web solution, but I am not interested in a framework---the key is speed of deployment, and if we went the framework route I would be better off making the interface with my own CRUD libraries. Again, I can code it, but my goal with these kinds of "quickie projects" is to focus my workload on the front end (web interface to the database), leaving the back end to an off-the-shelf tool.
Thanks heaps in advance for any insights. :)
Edit: I see that no one has mentioned Navicat or MySQL Workbench. I haven't tried either, wondering if someone knows off the top of their head whether they would do the trick.
I think what you're looking for is a form front-end for MySQL.
Since it sounds like you are more interested in binaries than web apps, have you looked into Microsoft Access? It can talk to MySQL and could be just what you need.
Open Office Base may not have quite the features you're looking for.
You already have the solution, your attempt at making things simpler is creating the complication.
There is no benefit to your friend in adding album images in a view if that view that only shows the filename and album title after they have entered the IDs and clicked Insert.
Before adding an image, your friend needs to know the album ID and the image ID. This information may not be in the view. She will therefore look at the album table and look at the image table to find this information, cross-referencing the filename with her own list of uploaded images.
Then, having written these two numbers down, she can insert a row directly into the album_image.
For visual feedback, she can check the frontend website.
It is true that a view showing the album name and filename would make deleting entries easier, but I would assume that images and albums are added much more frequently than they are deleted.
The ability to edit an associative table in a view that shows linked information, therefore, should not greatly affect your choice of tool. I could suggest tools, and phpMyAdmin is a logical choice, particularly if it is desirable to teach your friend computer skills that are widely applicable. It appears you have already identified some executable tools.
I imagine that you could add some additional hidden frontend views that could make your friend's workflow easier, such as a list of images and IDs that aren't in albums, a list of album IDs, or a view that shows the IDs. I do recommend you consider extending the frontend with a simple login and Edit options using your CRUD library, rather than devising a separate backend GUI.
I appreciate this is not an answer to the exact question, but it does resolve your problem.
I'm not sure if this will be helpful or not. I was hoping to find a UI with some eye candy/styling, but while searching I stumbled upon this:
https://blogs.oracle.com/MySqlOnWindows/entry/introducing_mysql_for_excel
As part of the new product initiatives of the MySQL on Windows group we released a tool that makes the task of getting data in and out of a MySQL Database very friendly and intuitive, and we paired it with one of the preferred applications for data analysis and manipulation in Windows platforms, MS Excel.
Like I said, not sure if it will help. I'm in a similar situation - low-tech, low budget client. The difference is my weakness in MySQL, but for me I just need a single table, so I think this will work.
There is no tool that will allow you delete such values from such a view, not for mysql, since For a multiple-table updatable view ... DELETE is not supported, see Updatable and Insertable Views
I guess you are looking for the equivelent of the Python based Django admin system which practically builds itself from analysis of the data structure.
Frameworks like Symfony, Cake and Yii have some of this built in, however I'm guessing that your database architecture may not be compatable as these types of systems normally require you to stick to strict naming conventions, but it's certainly worth taking a look.
Playful,
I already posted one answer, but this one is different enough to merit a seperate response, IMO.
Since you are looking for a simple, client-friendly solution, may I suggest Adminer?
http://www.adminer.org/en/?
Specifically, I used the Wordpress plugin here on a site recently:
http://wordpress.org/extend/plugins/adminer/
It provides pretty much full phpMyAdmin funcitonality. Very easy for the client, and if they want to, they can export the database as .csv and edit in excel, then re-upload. Just about everyone is familiar with editing in Excel, and they can make backups regularly.
Hope this helps!
J
You can very quickly and easily make a front-end for this type of use with Xataface. I find it very quick and useful. I would be happy to help you get going with it.
www.xataface.com
Related
I am working reverse engineering my WordPress website into Rails. I'm doing this to get a better working knowledge of Rails and adding features I can't seem to add on WordPress without creating my own custom plugin.
I decided to start with taking a datadump of my website by going to goDaddy and then going to StarField Technologies which is a portal to view my database. I was given a large sql file which was named with the ip address .sql similar to 198.XX.XXX.XX:XXXX.sql. In this file there was queries to create tables, add, and modify entries. I'm assuming everyone I've made until date.
Now what I'm trying to do is to take this data, use a GUI to see the tables I have, and the relationships between them. My ultimate goal is to replicate this information in my own database and use Rails API to add/remove/modify the table data.
Can you please suggest me a good GUI like phpMyAdmin to see the tables and the relationships in a birds eye view?
I know this is well travelled ground but after thorough searching I still can't find a question that matches my requirements.
I'm looking to make a flexible system which allows users to define their own custom fields. E.g, some users of certain departments could require an NI number/separate passcode etc.
It currently uses MySQL (open to suggestions if this isn't ideal) a-top the CakePHP 3 Framework.
This works well with just a couple of tables so far (e.g, just users) but as the system grows many other entities will need their own custom fields too which will mean more tables which are basically the same.
I'm also concerned about data integrity - currently values go into a 'value' column which allows any data and the validation happens on the app which I appreciate might not be ideal.
There's obviously also a performance cost. Could I perhaps have an automatically created flat-file version like Magento does?
In light of this I did wonder about changing to a system where the custom data goes into a JSON array within the database but worry this might hold me back in future.
Any thoughts much appreciated.
What i would recommend is to go for a no-sql database like mongo-db. That would make it easier for handeling custom document fields. As far as fetching the data and sending to UI of the app , JSON is just fine (in case you are fetching from JS and not rendering in backend)
I'm not entirely sure that this is the Exchange site to post this on, but I haven't seen another that fits.
I am looking for a project which provides scaffolding that supports granular restrictions. I don't need custom labels or anything pretty like that. I have team members who are intelligent enough to add/edit rows in a table, but I cannot let them have access to all tables, or to delete in every table, etc.
What I'm looking for is something like phpMyAdmin, but with the ability to turn off tables, turn off columns in some tables, make some columns read-only, etc. All per user. This would allow me to provide raw db access to different members of my team, without allowing full omnipresent access.
Is there a project which looks to provide this?
Preferably in PHP & mysql.
Thanks
Take a look at Adminer and Adminer Editor.
They are highly customizable in PHP and they have the additional advantage of being contained in a single PHP file.
If you just want to hide/write-protect some tables and columns, you can always do that in MySQL itself.
I am trying to create a website that will allow me to list all of the different types of beers I have tried including name, type, location, and brief tasting notes. I have a basic login created and believe that I will have to store the information about the beer in a database as well (with a cell for each of the elements). I was wondering a) if this is how people would suggest going about doing this and b) if anyone knows of good tutorials on how to set this up. I plan on using mySQL and PHP for the database and jQuery for the visual side of things. I am relatively new at this, so I am having trouble figuring out what exactly to Google to find what I am looking for.
I plan on going about it similar to a to-do list (only each element would have multiple attributes — name, type, etc.). Any help/suggestions/direction would be awesome! Thanks!
First off you need to decide on the features you want to implement, and then work out which to do first.
For example,
you need a database, which has a table for your beer info. (but do you need another one for people to have a user account too?)
you need to create a set of functions that you can access from the web site.
list beers
add beer
etc.
How do you want the front end to work?
How do you want the front end to look?
Once you know exactly what you want to do, it's much easier to break down the tasks into jobs you need the application to do.
I'd also suggest you look at Ruby on Rails (especially + the Hobo addon) to get you up and running faster (instead of PHP) - if you are set on PHP, have a look at CakePHP or another similar framework, so that you don't end up re-inventing the wheel.
Update:
Once you get started, further more detailed problems will be faced, many you can get a quick answer from google or the documentation for the language / database etc. If something is extra tricky, post another question on StackOverflow.
As it is your question is too general for a more specific answer, but if you need any additional info, just yell.
I have a MySQL database that has a few very simple tables.
I would like to find an app (implemented in Perl, Python or PHP) that will do the following:
Point the app to a database table, and it automatically retrieves the table's schema from the database.
It then generates an HTML view of the table's data. The data is displayed as a grid, with all fields being user-editable. If there are a lot of rows, then it automatically provides pagination.
Bonus points for allowing the user to click a column heading, which would then sort the data by that column.
Bonus points for allowing the data to be filtered by a "where" clause.
I have already looked at a few packages (phpMyAdmin, webmysql), but they do not seem to provide the editable table view. They seem more oriented towards database administrators. What I need is something that's more oriented towards someone who wants to view, enter and modify data.
Use phpGrid. This is all you need.
$dg = new C_DataGrid(“SELECT * FROM orders”, “orderNumber”, “orders”);
$dg -> display();
Outcome:
See if Java NakedObejcts is what you want. http://www.nakedobjects.org
If you can use groovy then Grails can get you jump started. It will build an ORM of your entire DB, build views and your basic CRUD is all built in.
If you have a real aversion to anything thats Java-based then perl's Catalyst can help build all your mappings but might not get you the whole 9 yards. You will need to write some of your basic CRUD, which is easy and can be accomplished by simple following the Catalyst tutorial.
Thanks for the responses, but none of those exactly fit the bill, so I decided to implement it myself.
The result is a new open source project called DWI, which stands for Database Web Interface. It took me about 3 days to get it working, and I did it in about 600 lines of PHP and javascript.
If you want to check it out, it's located at http://code.google.com/p/dwi.
Use CakeApp.com, it does exactly what you want!
CakeApp.com is a rapid development online tool. It's easy to use, no
other software than your browser is needed. Benefit from ER-Diagrams
of others and share your visions too.