Excellent thinking. I'm guessing that the PyscopyDA handles that type of thing and makes sure that it doesn't get nasty. That's a big win for Zope when dealing with inventory and things like that. Thanks Oliver.
On Tuesday 23 April 2002 10:33 am, you wrote: > Jason Spisak wrote: > > You might remember me, I've been a big Zope fan since > > ZTables, and have recently been asked "Why Zope?". The > > project is commited to PostgreSQL and leaning toward PHP. > > Here's the project requirements for a softwre company: > > > > Hardware Compatability List > > Software Compatability List > > Store/ECommerce > > User tracking and services like > > Pay for downloads > > Upgrades if they have a serial number paid up > > Billing/Invoicing for corporate accounts > > Inventory tracking > > CRM/Sales functions > > > > > > They don't see that Zope's built in security machinery > > would beat something home brewed for what they expect to > > need it for. Plus the over head of running Zope instances > > is greater than PHP scripts. > > > > What are the arguments for Zope in this context? > > Transaction Safety? > > When reading your requirements that was the first thing > coming into my mind. I don't know how php does this, so I > went to google and found > http://www.phpbuilder.com/columns/linuxjournal200009.php3 > > Below is one snippet, notice all the ugly "//check for > errors" and "//abort transaction". If someone knows where I > misinterpret something or how php solves this, corrections > welcome. > > But wouldn't it be nice if we had an application server which > would take care of all this for us? > > Oh, wait ... ;-) > > cheers, > oliver > > > > > function cart_new() { > //make the database connection handle available > global $conn,$customer_id,$feedback; > > //start a transaction > query("BEGIN WORK"); > > //query postgres for the next value in our sequence > $res=query("SELECT nextval('seq_customer_id')"); > > //check for errors > if (!$res || pg_numrows($res)<1) { > $feedback .= pg_errormessage($conn); > $feedback .= ' Error - Database didn\'t return next > value '; query("ROLLBACK"); > return false; > } else { > //set that value in a local var > $customer_id=pg_result($res,0,0); > > //register the id with PHP4 > session_register('customer_id'); > > //insert the new customer row > $res=query("INSERT INTO customers (customer_id) > VALUES ('$customer_id')"); > > //check for errors > if (!$res || pg_cmdtuples($res)<1) { > $feedback .= pg_errormessage($conn); > $feedback .= ' Error - couldn\'t insert new > customer row '; query("ROLLBACK"); > return false; > } else { > //commit this transaction > query("COMMIT"); > return true; > } > } > } -- Jason Spisak Marketing Director, Lycoris [EMAIL PROTECTED], http://www.lycoris.com Desktop/LX: Familiar. Powerful. Open. +1 425 869-2930 voice, +1 425 671-0504 fax _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )