473,769 Members | 5,877 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

edit/update - all in one PHP pages?

Jim
Hi,

Let me explain how I'd generally do things. For a page where the user
edits data, I'd generally call it something like editfred.php (for
example), the page which updates the data would be called
updatefred.php and equally the page which processes a delete would be
deletefred.php. I like splitting the pages up this way, it feels less
cluttered and more organised than throwing all the functionality in one
fred.php.

Here's the problem though. If the user enters erroneous data into the
form editfred.php which is subsequently processed by updatefred.php
then that error needs to be reported to the user. Traditionally what
I've done is have updatefred.php list any errors it finds and then
provide a link to go back or ask the user to hit the back button on
their browser. This is no longer viable, instead I'd like to
automatically throw them back to editfred.php with all their data
already filled in and the fields causing errors to be highlighted. My
question is: what's the best way to do this?

There springs to mind several ways:

1) combine editfred.php and updatefred.php. Again, I'm not keen on this
but it does seem the most logical and programatically easiest.

2) use sessions to store the data, editfred.php would then check
for data in the session each time it's loaded. Is there a maximum data
size for use with session objects?

3) write code to wrap and store the data in a cookie which could then
be read by editfred.php, similar to sessions I believe. However max
cookie size is 4Kb which wouldn't be enough on some forms.

4) store the data from editfred.php in a table in the database which
again editfred.php would check for when loaded. overhead of db access
each time however.

Any other ideas? What method do you guys currently use?

Thanks,

Jim.

Aug 25 '05 #1
10 2046
Hi!

Are you looking for "serialize( )" ?

Best
Olaf
Aug 25 '05 #2
Jim
I don't believe so. I'd still have the same problems. If I serialise
all the form data, I still need to send it back to the original input
page and that'll have to be done either through cookies, database or
text file. The only other way I can think of is the risky use of
javascript to submit a hidden form produced by the update page.

I'm struggling to find justification for not putting the edit/update
functionality in one php file, my original worry (other than the fact
that I just don't like the idea of having the two processes combined)
was the performance issue of the interpreter having to parse a file
probably twice as big as it needs to be.

Jim.

Aug 25 '05 #3
Hello!

Put the serialized data in a session Variable....

Olaf
Aug 25 '05 #4

Olaf Schinkel wrote:
Hello!

Put the serialized data in a session Variable....


Session values are automatically serialized when they are stored. No
need to serialize them first. Just store everything you need in session
variables.

Ken

Aug 25 '05 #5
Hi Jim,

In phpPeanuts there would be an instance of class FredEditDetails Page
that outputs the form and an instance of another class, FredSaveAction,
that updates a domain object (instance of class Fred) that updates the
database.

When the user presses the update button, FredSaveAction processes the
form. It creates an array with FormValues (instances of class
PntFormNavValue ) where it puts the values from the form. Then it asks
each of the values to convert its value (locale specific date and numner
formats, etc), and to validate it. If there is an error, the FormValue
will remember the error message. If any FormValue had an error, the
FredSaveAction creates an instance of FredEditDetails Page, sets its
error state and passes it the array with FormValues. Then it forwards
the request to the FredEditDetails Page. This will make the
EditDetailsPage output the form, the values from the form that was
submitted, the error messages, etc.

With phpPeanuts you may not have to program a specific
FredEditDetails Action: if you only need standard validation against meta
data, you can let the generic ObjectEditDetai lsAction do the work. If
you want you can make a specific FredEditDetails Action extend
ObjectEditDetai lsAction, do the inherited validations, the do you extra
validations. The same with FredEditDetails Page: if a standard Form will
do, you can simply use an ObjectEditDetai lsPage, if you need to, you can
specialize it.

For more info, see www.phpPeanuts.org. There are examples on the
website, where you can try to enter errorneous information (for example
an email address without an @) and see how errors are reported (if there
are no errors it will tell you it is forbidden to change the data on the
website ;=) ). It does not highlight the fields, but because it has the
FormValues with error information, you can override the inherited
routine that prints the form and add the highligting in your own
FredEditDetails Page class.

Greetings,

Henk Verhoeven,
www.phppeanuts.org.

Jim wrote:
Hi,

Let me explain how I'd generally do things. For a page where the user
edits data, I'd generally call it something like editfred.php (for
example), the page which updates the data would be called
updatefred.php and equally the page which processes a delete would be
deletefred.php. I like splitting the pages up this way, it feels less
cluttered and more organised than throwing all the functionality in one
fred.php.

Here's the problem though. If the user enters erroneous data into the
form editfred.php which is subsequently processed by updatefred.php
then that error needs to be reported to the user. Traditionally what
I've done is have updatefred.php list any errors it finds and then
provide a link to go back or ask the user to hit the back button on
their browser. This is no longer viable, instead I'd like to
automatically throw them back to editfred.php with all their data
already filled in and the fields causing errors to be highlighted. My
question is: what's the best way to do this?

There springs to mind several ways:

1) combine editfred.php and updatefred.php. Again, I'm not keen on this
but it does seem the most logical and programatically easiest.

2) use sessions to store the data, editfred.php would then check
for data in the session each time it's loaded. Is there a maximum data
size for use with session objects?

3) write code to wrap and store the data in a cookie which could then
be read by editfred.php, similar to sessions I believe. However max
cookie size is 4Kb which wouldn't be enough on some forms.

4) store the data from editfred.php in a table in the database which
again editfred.php would check for when loaded. overhead of db access
each time however.

Any other ideas? What method do you guys currently use?

Thanks,

Jim.

Aug 25 '05 #6
On 2005-08-25, Jim <ji***@yahoo.co m> wrote:
Let me explain how I'd generally do things. For a page where the user
edits data, I'd generally call it something like editfred.php (for
example), the page which updates the data would be called
updatefred.php and equally the page which processes a delete would be
deletefred.php. I like splitting the pages up this way, it feels less
cluttered and more organised than throwing all the functionality in one
fred.php.
KISS :)
Here's the problem though. If the user enters erroneous data into the
form editfred.php which is subsequently processed by updatefred.php
then that error needs to be reported to the user. Traditionally what
I've done is have updatefred.php list any errors it finds and then
provide a link to go back or ask the user to hit the back button on
their browser. This is no longer viable, instead I'd like to
automatically throw them back to editfred.php with all their data
already filled in and the fields causing errors to be highlighted. My
question is: what's the best way to do this?


I have a hard time to understand why you would want to have a editfred
if you also have a update/add/delete script? What does the edit script
add of extra value?

You could make a base script/class that shows the details of a fred
form. Depending on the "mode" it also show existing values and decided
which input controls it should show... mode=edit for add/update.
mode=read for enquire/delete.

And then write an update/read/delete/add specific functionality that
extends the base script/class.

--
Met vriendelijke groeten,
Tim Van Wassenhove <http://timvw.madoka.be >
Aug 25 '05 #7
Jim
> I have a hard time to understand why you would want to have a editfred
if you also have a update/add/delete script? What does the edit script
add of extra value?
Here's how I currently name my scripts:

view*.php - viewing data only
edit*.php - an editable form with data populated ready for changing
new*.php - blank form ready for new record entry
update*.php - processes contents passed from the edit script
create*.php - processes contents passed from the new script
delete*.php - deletes a specific record

So as you can see each individual operation is separated in to a
different php page, this keeps the pages cleaner and shorter although
admittedly, there is duplication of validation and form design although
I've never found this to be a problem.
You could make a base script/class that shows the details of a fred
form. Depending on the "mode" it also show existing values and decided
which input controls it should show... mode=edit for add/update.
mode=read for enquire/delete.


This is advocating the "all in one" script approach, which I must admit
I don't like the thought of but it is clearly the most logical. What's
the overhead like for the extra parsing the interpreter needs to do? If
I combine the files I'm probably gonna end up with a single php file
around 150% bigger.

Thanks,

Jim.

Aug 26 '05 #8
On 2005-08-26, Jim <ji***@yahoo.co m> wrote:
I have a hard time to understand why you would want to have a editfred
if you also have a update/add/delete script? What does the edit script
add of extra value?


Here's how I currently name my scripts:

view*.php - viewing data only
edit*.php - an editable form with data populated ready for changing
new*.php - blank form ready for new record entry
update*.php - processes contents passed from the edit script
create*.php - processes contents passed from the new script
delete*.php - deletes a specific record


Each task is spread over two pages now. And as you mentionned
already, you now introduced the problem that you have to share data
between the two pages.
You could make a base script/class that shows the details of a fred
form. Depending on the "mode" it also show existing values and decided
which input controls it should show... mode=edit for add/update.
mode=read for enquire/delete.


This is advocating the "all in one" script approach, which I must admit
I don't like the thought of but it is clearly the most logical. What's
the overhead like for the extra parsing the interpreter needs to do? If
I combine the files I'm probably gonna end up with a single php file
around 150% bigger.


No it's not advocating "all in one". It advocates that you group
everything that logically belongs to each other together.

Eg: An "insert" script first displays empty fields (meaby a couple of
default values are filled in), and then inserts them into a database.
An update script displays fields (with existing values) and then updates
the database.

They have in common that in both cases you have to display a form with
fields (and meaby values). They are distinct in the processing that is
performed after the data is posted.

Therefor i advocate to have an "edit" base that shows the form (with
eventual values). And then make your insert/update an extension
(inheritance) of that edit base.

If you now change your base a little, you can introduce the concept of
a read only-field. This allows you to use the base also for
enquire/delete (where you first want to display the actual record).
Thus, an enquire/delete script also extends the base edit. Once
again, they have a different "process posted data" implementation.
--
Met vriendelijke groeten,
Tim Van Wassenhove <http://timvw.madoka.be >
Aug 26 '05 #9
Jim wrote:

1) combine editfred.php and updatefred.php. Again, I'm not keen on this
but it does seem the most logical and programatically easiest.


We do it this way and it works out well. The trick is to divide the
processing into two stages. First is data processing ( do an update,
insert or delete), and second is display.

You can then control flow by having the results of data processing, stage 1,
determine what happens in stage 2.

So for example the user requests to input a new row. This is a simple case
where there is no data processing yet, so you do nothing at Stage 1 and at
Stage 2 you return the HTML INPUT controls to enter a new row.

Going further, the user now saves the new row, so at Stage 1 you must do the
insert. If the insert succeeds, then in Stage 2 you go to Display mode and
show them the row they just put in. But if the insert fails, you set the
flag to return them to Insert mode and display the error message.

In like fashion, you work out what you want to happen on each data
processing action. What happens when it fails, what happens when it
succeeds. So perhaps on a successful delete you move to the next row in
the search results, but on fail you return to display mode and show them
the row with the error message.

--
Kenneth Downs
Secure Data Software, Inc.
(Ken)nneth@(Sec )ure(Dat)a(.com )
Aug 26 '05 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

25
10419
by: dixie | last post by:
I have some code that adds new records into a table for each ID in a list box when a button on a form is clicked. This works fine. My problem now is that I wish to be able to edit all the records for people whose ID is in the list box. I made minor changes to the code (mainly replacing rs.AddNew with rs.Edit)and it appears to be updating only the first record and then overwriting that record with the next, etc until it runs out of ID's...
4
4413
by: DC | last post by:
Newbie's question about .NET datagrid If I use: <asp:EditCommandColumn></asp:EditCommandColumn> When I edit a row, it will automatically show Update and Cancel Link. But when I use: <asp:Button id="btnEdit" runat="server" Text="Edit" CommandName="Edit" CssClass="clickable"Width="50px" /> When I edit a row, the Update/Cancel links don't show up.
2
2339
by: Sky | last post by:
Hello: Another question about trying to wring functionality from a DataGrid... Have a DB table of "Contacts" -- 14 or more fields per record Show in datagrid -- but only 5 columns (First,Last, Fax, Phone, Category). Put an Edit column at the end... Now what?! If you go into Edit mode -- you can only edit 5 cells -- not all the rest of the Record's fields...not enough!
2
1972
by: jason | last post by:
Hello and Good Day. REALLY LOST. Running ASP.NET 1.1 Becuase I think I'm using my own controls smartnavigation does not appear to work for me. Stardard issue: I've got a datagrid thats displaying pages and pages of rows. When I edit some row below pages 1 the post refreshes back to page one, requiring me to page down to do the input.
9
2728
by: rn5a | last post by:
A Form has a DataGrid which displays records from a SQL Server 2005 DB table. Users can modify the records using this DataGrid for which I am using EditCommandColumn in the DataGrid. This is the code: <script runat="server"> Dim sqlConn As New SqlConnection(".....") Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs) If Not (Page.IsPostBack) Then FillDataGrid()
1
2166
by: ollielaroo | last post by:
Hi guys, Firstly I did do a search for this one first but I couldn't find anything related in this forum. I am using Dreamweaver MX and trying to build admin pages for an ASP site. My problem is I have Categories and various Products in each Category. I'm trying to build a page to EDIT/UPDATE each product.I want to be able to change the Category that a product belongs to, but all I get in the drop-down menu is the one specific Category. ...
8
5281
by: chromis | last post by:
Hi, I'm writing a contacts section for a cms on a website, I've decided to write the section in OO code. So far I have my Contacts object and a page structure I would use for a procedural site. /com/Contacts.cfc <cfcomponent displayname="Contact" output="false" hint="Contact component"> <!--- properties: used for self-documentation ---> <cfproperty name="dsn" displayname="dsn" hint="Contact id (UUID)" type="string" required="false"...
1
3330
by: chromis | last post by:
Hi, I'm having trouble fully implementing the edit section of a contact admin system, so far I have written the following: - Bean (Contact.cfc) - Data Access object (ContactDAO.cfc) - Gateway (ContactGateway.cfc) - index.cfm - Deals with the business logic - display/form.cfm - Produces the form for both add and edit behaviour
2
1324
by: slinky | last post by:
I had a successfully deployed datagrid reading an XML file and showing the data: Private Function MakeDataView() as DataView Dim myDataSet As New DataSet() myDataSet.ReadXml(Server.MapPath("TimberSales.xml")) Dim view As DataView = New DataView(myDataSet.Tables(0)) view.AllowDelete = False view.AllowEdit = True view.AllowNew = False
0
9579
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9415
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10198
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10032
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
8860
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
6661
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5293
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5432
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
3947
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.