Modification - Update client
Objective: A Web application to list and update customer information.
Difficulty: ***
Preparation
...
Duplicate file list_the_clients.php
from Section 3.3 to a file named U-CRUD.php
at the root of your Web server.
Updating resources via the web service is complex, so we will first explain its operation.
Sequence diagram representing how a resource is updated:
We can see that the diagram is divided into 2 stages:
- Getting the resource to a defined id (1 in the diagram) and creating of the form.
- Update resource.
...
Note |
---|
The arrow points to a "get", which corresponds to a resource getting. |
...
Step 1:
...
Getting
...
data
...
and
...
form creation
Retrieving the XML file and display the form:
Code Block |
---|
// Define the |
...
resource $opt = array( 'resource' => 'customers' ); |
...
// Define the resource id to |
...
modify $opt |
...
[ 'id' |
...
] = $_GET |
...
[ 'id' |
...
]; |
...
// Call the web service, recuperate the XML |
...
file $xml = $webService->get( $opt ); |
...
// Recuperate resource elements in a variable (table) |
...
$resources = $xml->children()->children();
|
...
// client |
...
form
|
Here, the call is similar to data getting. It is this call that will allow us to create the form.
...
In order not to lose the id for the second step according to the diagram, the form will show up as:
?id = "Customer Id"
Thus we will get it like this:unmigrated-wiki-markup
Code Block |
---|
$_GET |
...
[ 'id' |
...
]; |
We could have done this differently, such as by passing this ID in POST, but you will see that this method will simplify the processing that follows.
Step 2: Update the resource
Initially, as you can see from the "Note" arrow in the diagram, we will retrieve the XML file. For this, you will carry out the same call as you did when you created the form.
...
Help for creating a form:
Code Block |
---|
foreach ( $resources as $key => $resource ) |
...
{ |
...
echo '<tr><th>' . $key . '</th><td>'; |
...
echo '<input type="text" name="' . $key . '" value="' . $resource . '"/>'; |
...
echo '</td></tr>'; |
...
} |
...
Once the XML file is retrieved we need to modify the new data with data received by POST. |
...
Path of the keys in the XML file and update values |
...
: |
foreach ( $resources as $nodeKey => $node ) \{ {
$resources->$nodeKey = $_POST\[ $nodeKey \ ];
}
Code Block |
---|
|
...
We now have an XML file updated. Now we just need to send it. |
...
Example of an update: |
...
|
$opt = array( 'resource' => 'customers' ); <span style="color: #0070c0"> // Resource definition</span>
$opt\Resource definition
$opt[ 'putXmlxml' \ ] = $xml->asXML(); <span style="color: #0070c0"> //XML file definition</span>
$opt\file definition
$opt[ 'id' \ ] = $_GET\[ 'id' \ ]; // Definition of ID to modify
<span style="color: #0070c0">modify
// Calling asXML () returns a string corresponding to the file</span>
$xml = the file
$xml = $webService->edit( $opt ); <span style="color: #0070c0"> // Call</span>Call
Code Block |
---|
Now, in your "U-CRUD.php
" script, try to modify a customer with an ID defined in the code, then do it for all customers.
Check using "R-CRUD.php
" that the information has been changed and then process the Client ID.
If you have trouble, look at the code for 2-update.php
.