[Zope] Content Management

Ria Marinussen marinus@cs.utwente.nl
Thu, 13 Feb 2003 09:15:59 +0100


Hi Don,

I've read the responses on your question so far and don't want to argue
about whether you should use DTML or PythonScript or whatever. 

I think however that your problem is in the ZSQL method. The variable names
in your database contain capitals. I think for entering (and updating) you
need to put the variable names in quotes when you use capitals, otherwise
Postgress or Zope (I don't know which one) assumes they are all small caps.

So I think it should be:
--
UPDATE A1
SET=
"A1_Title"= <dtml-sqlvar a1_Title type= "string">,
"A1_Author"= <dtml-sqlvar a1_Author type= "string">,
"A1_Body"= <dtml-sqlvar a1_Body type= "string">,
"A1_Pix1"= <dtml-sqlvar a1_Pix1 type= "string">,
"A1_Pix2"= <dtml-sqlvar a1_Pix2 type= "string">,
"A1_Date"= <dtml-sqlvar a1_Date type= "string">,
"Ai1"= <dtml-sqlvar ai1 type= "string">,
"Ai2"= <dtml-sqlvar ai2 type= "string">,
"Ai3"= <dtml-sqlvar ai3 type= "string">,
"Ai4"= <dtml-sqlvar ai4 type= "string">,
"Ai5"= <dtml-sqlvar ai5 type= "string">,
"Ai6"= <dtml-sqlvar ai6 type= "string">,
"Ai8"= <dtml-sqlvar ai8 type= "string">,
"Ai9"= <dtml-sqlvar ai9 type= "string">,
"Ai10"= <dtml-sqlvar ai10 type= "string">,
"A1_Publish"= <dtml-sqlvar a1_Publish type= "string">
WHERE
"A1_IDNum"= <dtml-sqlvar a1_IDNum type= "string">
--
 
Hope this helps.

Ria Marinussen


> Message: 35
> Date: Wed, 12 Feb 2003 13:14:53 -0700
> From: "Don Brooksby" <DonB@clh.com>
> To: <zope@zope.org>
> Subject: [Zope] Content Management
> 
> Greetings Zope Mentors...
> 
> I am of a grave realization that perhaps I am once again 
> banging my head =
> on a brick wall.
> 
> I am the one, some may remember, that is using PostgreSQL for data =
> collection and writing dtml forms for administration of 
> articles that =
> can be pulled from one data source for multiple locations in 
> my website. =
>  My last problem was in reference of pulling a checkbox value into a =
> dtml page.
> 
> Now, with all of that working, my problem is writing back to 
> the table =
> with the updated information on an article. Below is my list 
> of trial =
> and errors:
> 
> * I have verified that up to the dtml method of collecting 
> the proper =
> information.
> * I have tried, in my dtml method of posting to the database, all =
> different ways of collecting the data to be written.
>  (this is where my data fails to post to the tables)
> 
> Because in my reading of other emails that are posting to 
> Zope, as much =
> info as possible is what is requested, so here are 2 dtml 
> methods where =
> I am seeing the failures - no error pages are displayed, it 
> just tells =
> me it was not successful writing.
> 
> 1st method, where all changed information to the article is gathered.
> 
> Data checks are preformed before the following code - seeing if the =
> checkbox is set to 1 or 0...
> <<DTML Method -updateArticle_html>>
> 
> <!-- START OF WRITING INFO TO TABLE IN POSTGRESQL -->
> 
> <dtml-try>
>  <dtml-call "article1_updateRecord(
>       a1_Title=3D_['newtitle'],=20
>       a1_Author=3D_['newauthor'],
>       a1_Body=3D_['newbody'],
>       a1_Pix1=3D_['newpix1'],
>       a1_Pix2=3D_['newpix2'],
>       a1_Date=3D_['newdate'],
>       ai1=3D_['newmain'],
>       ai2=3D_['newstate'],
>       ai3=3D_['newmesc'],
>       ai4=3D_['newcorp'],
>       ai5=3D_['newgsa'],
>       ai6=3D_['newreseller'],
>       ai8=3D_['newnetapp'],
>       ai9=3D_['newmobile'],
>       ai10=3D_['neweducation'],
>       a1_Publish=3D_['newpublish'],
>       a1_IDNum=3D_['newarticle'])">
> 
>         <dtml-call "REQUEST.set('status', 'ok')">
>       <dtml-except>
>         <dtml-call "REQUEST.set('status', 'failed')">
>  </dtml-try>
> <dtml-if "_['status']=3D=3D'ok'">
>     <h1>Record was sucessfully Updated.</h1>
>     <form action=3D"index_html">
>        <input type=3D"submit" value=3D"OK">
>     </form>
> <dtml-else>
>     <h1>Updating the new record failed.<br>No record was changed.</h1>
>     <table>
>        <tr>
>           <td>
>              <form action=3D"update_article_html">
>                <input type=3D"submit" value=3D"Try Again">
>              </form>
>           </td>
>           <td>
>              <form action=3D"index_html">
>                 <input type=3D"submit" value=3D"OK">
>              </form>
>           </td>
>         </tr>
>      </table>
> </dtml-if>
> --------------------------
> The *dtml-call "article1_updateRecord* calls the following 
> ZSql method:
> 
> <<Arguments:>>
> 
> A1_Title A1_Author A1_Body A1_Pix1 A1_Pix2 A1_Date Ai1 Ai2 
> Ai3 Ai4 Ai5 =
> Ai6 Ai8 Ai9 Ai10 A1_Publish A1_IDNum
> 
> <<SQL statement:>>
> 
> UPDATE A1
> SET=20
> A1_Title=3D<dtml-sqlvar a1_Title type=3D"string">,
> A1_Author=3D<dtml-sqlvar a1_Author type=3D"string">,
> A1_Body=3D<dtml-sqlvar a1_Body type=3D"string">,
> A1_Pix1=3D<dtml-sqlvar a1_Pix1 type=3D"string">,
> A1_Pix2=3D<dtml-sqlvar a1_Pix2 type=3D"string">,
> A1_Date=3D<dtml-sqlvar a1_Date type=3D"string">,
> Ai1=3D<dtml-sqlvar ai1 type=3D"string">,
> Ai2=3D<dtml-sqlvar ai2 type=3D"string">,
> Ai3=3D<dtml-sqlvar ai3 type=3D"string">,
> Ai4=3D<dtml-sqlvar ai4 type=3D"string">,
> Ai5=3D<dtml-sqlvar ai5 type=3D"string">,
> Ai6=3D<dtml-sqlvar ai6 type=3D"string">,
> Ai8=3D<dtml-sqlvar ai8 type=3D"string">,
> Ai9=3D<dtml-sqlvar ai9 type=3D"string">,
> Ai10=3D<dtml-sqlvar ai10 type=3D"string">,
> A1_Publish=3D<dtml-sqlvar a1_Publish type=3D"string">
> WHERE
> A1_IDNum=3D<dtml-sqlvar a1_IDNum type=3D"string">
> 
> -------------------------
> 
> ** all items in the table are set to "string" - so I am 
> writing Strings =
> to the db.
> 
> I have tested this method with '<dtml...>' and all other ways 
> that are =
> suggested by all the different documentation I have read 
> about zope.  =
> This is the only way I have been able to write data to the db 
> table when =
> adding, so slight modification for Updates seem rational.
> 
> *sigh* where am I getting this wrong?  Does anyone have ideas?
> 
> Don Brooksby
> 
>