September 14th, 2002, 06:00 PM
best language and tools for a datadriven web app ?
im currently putting some specs together to develop a database driven web application.
the web application is to look after inventory, some basic accounts, and sales invoicing etc.
i have 2 programmers working on this project full-time, and theyre going to be doing it in PHP becuase thats what theyre most comfortable with.
Now , i was thinking of sticking to MySQL since its free and the programmers like it, but i was also thinking of getting them to develop in such a way that program logic is separate from the presentation layer, as i want to sell the app to different clients. it would be nice to be able to change the visual design efficiently.
I was thinking, a mixture, of php, xml/xslt and mysql would do the trick. what do u think ? too hard? no point in using xslt ? very good ? brilliant? wanna help ?
please let me know ur thoughts.(its my first big project and i'd like to get it right)
and any recommendations of whats the most efficient way of putting such a large project together (any tools u might recommend?). ive been playing with some application servers such as Krysalis and ampoliros bt havent had much fun.
Last edited by eemo; September 14th, 2002 at 06:02 PM.
September 15th, 2002, 12:00 AM
Don't know enough about your project to give you good advice on the use of XML/XSLT, but I do have one point for you to consider:
Yes, MySQL is a very simple, programmer-friendly database engine, (No DBA required), but it has substandard support of ANSI SQL, which most of the big database vendors tend to use. Thus, you will find just a few headaches if you want this application to suddenly be used with Oracle or DB2, instead of MySQL.
Also, if you want to separate logic and presentation, a real DBMS goes a long way. MySQL still doesn't support triggers, Views, constraints, and quite a few other "business logic" features which are standard among the large database vendors.
PostgreSQL is a harder database system to learn, but it is also open source, and the benefit is, most of your SQL can be standardized to fit well with Oracle, SQL Server, SyBase, etc... Another open source DBMS you might want to consider is Firebird. And honestly, you can freely develop your application using any of the "big 3" database vendors' software, simply by downloading and installing the developer/evaluation version.
September 15th, 2002, 07:05 AM
actually, i was just roaming around last night, and i had a look at the php adodb class, which allows you to develop for any RDBMS.
So that should solve the problem of needing to switch to different databases.
September 15th, 2002, 08:48 AM
You are missing the point. The ADODB class just handles the database connection syntax, so the programmer can simply concentrate on the SQL. It doesn't, and can't have anything to do with the SQL statements themselves, and much less with the fact that different DBMS's support different SQL syntax, and different levels of logical functionality, as I state above.
If you develop with MySQL using ADODB, and still wanting to support other DBMS's, you will reduce your application to the barest, simplest levels of SQL possible. Having "been there" myself, I personally can't imagine anything more frustrating than trying to develop an invoicing/inventory application without views, triggers, and stored procedures.
September 15th, 2002, 08:57 AM
oh right.....i get u now . so baring in mind im jst moving up from mysql and am used to using phpmyadmin, which of the 2 would u recommend out of firebird and Postgres
i assume they both handle foreign keys ?
is there a phpmyadmin type interface available for either of these ?
September 15th, 2002, 02:35 PM
I can't give too much advice about Firebird, not having used it, but I have spent plenty of time with both MySQL and PostgreSQL. There is a PHP admin interface at phppgadmin.sourceforge.net, which has some nice features. Also, there is an excellent Windows-based admin kit at pgadmin.postgresql.org (the alpha release for PGAdminII 1.3 is easily as good as most commercial DBMS management tools.)
Yes, both Firebird and PostgreSQL handle foreign key constraints. As I said, I cannot elaborate much on Firebird, but we had a good discussion on the differences between MySQL and PostgreSQL earlier.
And here is my FAQ on the topic.
September 19th, 2002, 12:00 AM
Tools for jobs
Look at smarty:
You can create a *real* templating system with this, not the bizzarro things I see from most PHP applications. Of course it helps if you model your app and not just code away.
About the database. What's the purpose? I had a client who used Oracle for an app for which MySQL was perfect. If you are going to be writing a banking application, I'd not use MySQL, but if you are just doing some content management, MySQL can be quite handy.
September 19th, 2002, 07:01 AM
hey - that engine is exactly what i was looking for
should solve my dilemma now hopefully.
About the database, the app will be doing stock control, some basic accounting, handling customers and suppliers etc.
Ive come to the conclusion the PostgreSQL is going to be the right choice for me
Thanks for all the replies.
September 20th, 2002, 04:40 PM
Dudes, give me some advice.
This application will eventually fit into a b2b environment.
can smarty help with my problems there or do i need to go back to xml (due to platform independece) ?
September 20th, 2002, 04:44 PM
Don't have enough information. Will PHP run on the platform you are using?
If Answer is yes, then answer is yes.
I feel I'm not understanding the question. This is all about PHP right? smarty is a php app. Got nothing to do with xml afaics
September 20th, 2002, 06:15 PM
well i want to create the app so it can do supplier chain linking. so its not neccassary that they will have php on their platform. the only solution that i could really only think of for integration is xml, unless u can think of something else ?
September 20th, 2002, 07:15 PM
So then mean independence of programming platform, not operating system platform? Smarty templates are PHP-specific, but they will work on any operating system with PHP.
Are you saying that you will have other programming languages accessing the same web page templates? (Java, ASP, JSP?) If this is the case, then XML/XSLT might not be a bad idea.
But generally, when I see the term B2B, I think in terms of program logic and content being shared, rather than the front end templates. In this case, you may be able to use PHP templates, but use XML-RPC or SOAP (or on a simpler level, WDDX) to transfer data and programming logic to other online applications.
Since you seem to be examining application frameworks, I will cast my two cents: I recommend that you choose a framework lets you operate with an MVC (model/view/controller) architecture, this allows for a nice amount of freedom between layers in your application. http://www.jphplib.org is one example, but there are several others. One thing you might like about JPHPLib is that it models itself after the Java standards, which might make it easier for your application to interoperate with Java-based systems. (I cannot specifically recommend it, because I haven't used it yet)
Here is a good tutorial by Zend on 3-tier architecture with PHP.
The major application frameworks for PHP at the moment seem to be:
- http://php-fusebox.sourceforge.net/ (a PHP implementation of the Coldfusion framework known as "Fusebox")
- http://prometheus.zerodivide.net/ (looked interesting at one time, but not as popular now)
Honestly, the simplicity of PHP has meant that not too many developers bother to learn these frameworks. This is why I recommend at least sticking to the somewhat flexible MVC architecture, which should makes it easier to move from one framework to another.
Also, I know that Smarty is a very popular templating engine, but IMHO, it does too much. I think templating systems should be extremely simple, with all serious logic being accomplished in your main program architecture. There are actually a couple simple PHP template engines coded in C, as PHP extensions, which are extremely fast (YATS, and php-templates). To each his/her own, though.
Enjoy your searching...
September 20th, 2002, 11:33 PM
I gotta bow out now as I'm not sure where eemo is going. The last guy gave some good advise but he misspelled binarycloud:
And he mentions that religious war about templates and what they should and should not do
I think the key is a development framework. I've spend years at Perl and only a few months at PHP. I have a nice framework in Perl and now with Smarty and some Pear classes I've got it in PHP.
A major problem I have is that I use virtual environments. Nearly all established Perl frameworks require a dedicated host. I see that binarycloud also requires that.
So eemo, see the other guy's post. He lays it out.
September 20th, 2002, 11:59 PM
thanks rycamore for your informed advice
rycamore, thank you for your informed dialog with eemo. I personally agree with all of your suggestions, and I thank you for being more articulate that I would have been.
It makes me feel good that professionals such as yourself are willing to share openly with someone who needs it.
September 21st, 2002, 12:26 AM
My Personal Template Choice for small scale websites
Just on the topic of templates.
I recently researched PHP templates for my own useage. My personal choice was using the template features of the PHPLIB
code : https://sourceforge.net/projects/phplib/
docs : http://www.phpbuilder.com/columns/david20000512.php3
I work in a shared virtual environments on small scale websites. There are two reasons why I chose this "simpler" template system:
1) I work with a designer without much programming experience. Keeping the templates as simple as possible reduces chance for error. Also, there is a very low learning curve with simple templates.
For small scale, PHPLIB was a clear winner. It did take me some thought how to set them up, but once I did so maintainace is easy.
For medium scale, I may have chosen another template system.
For enterprise scale, I would chose XML/XSLT mostly because this would allow flexability to change the programming languages and would allow products that you may buy to interact with them.