Message-ID: <1070192962.375782.1710827164693.JavaMail.root@confluence-doc2-production> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_375781_718704164.1710827164688" ------=_Part_375781_718704164.1710827164688 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html Chapter 5 - Modification - Update client

Chapter 5 - Modification - Update client

Modification - Update client

Goal: A Web application to list and update customer inf= ormation.
Difficulty: ***

Preparation

Duplicate file list_the_clients.php from Chapter 3.3, renam= e it to U-CRUD.php, and put it at the root of your Web server.=

Updating resources via the web service is complex, so we will first expl= ain its operation.

Sequence diagram representing how a resource is updated:

We can see that the diagram is divided into 2 parts:

  1. Getting the resource to a defined id (1 in the diagram) and creating of= the form.
  2. Update resource.

The arrow points to a get(), which means a resource retriev= al.
This step is important because we need to get the XML file back in = order to match it with the data sent by the form before we can call "edit" = to update the resource.
Note that we could have modified it otherwise b= y sending an XML using JavaScript, and thus have not used get() in this process.

Step 1: Getting data and form creation

Retrieving the XML file and display the form:

=20
// Defin=
e the resource
$opt =3D array('resource' =3D> 'customers');

// Define the resource id to modify
$opt['id'] =3D $_GET ['id'];

// Call the web service, recuperate the XML file
$xml =3D $webService->get( $opt );

// Retrieve resource elements in a variable (table)
$resources =3D $xml->children()->children();

// client form
=20

Here, the call is similar to data retrieval. It is this call that will e= nable us to create the form.

We will generate the automatic update form.

For now, use HTML tags "input" as having as its "name" the name of the a= ttribute, and as its "value" the value of the attribute.

In order not to lose the id for the second step according to the diagram= , the form will show up as: ?id =3D "Customer Id"

Thus we will get it this way:

=20
$_GET['i=
d'];
=20

We could have done this differently, such as by passing this ID in a POST request, 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 di= d when you created the form.

If you have specified, as indicated above, the form destination with an = id, your call should already be done and the form will be redisplayed.

Help for creating a form:

=20
foreach =
($resources as $key =3D> $resource) {
=09echo '<tr><th>' . $key . '</th><td>';
=09echo '<input type=3D"text" name=3D"' . $key . '" value=3D"' . $resour=
ce . '"/>';
=09echo '</td></tr>';
}
=20

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:

=20
foreach =
($resources as $nodeKey =3D> $node) {
=09$resources->$nodeKey =3D $_POST[$nodeKey];
}
=20

We now have an XML file updated. Now we just need to send it.

Example of an update:

=20
// Resou=
rce definition
$opt =3D array('resource' =3D> 'customers');=20

//XML file definition
$opt['putXml'] =3D $xml->asXML();

// Definition of ID to modify=20
$opt['id'] =3D $_GET[ 'id' ];=20

// Calling asXML() returns a string corresponding to the file
$xml =3D $webService->edit($opt);
=20

Now, in your U-CRUD.php script, try to modify a customer wi= th an ID defined in the code, then do it for all customers.

Check using R-CRUD.php that the information has been change= d and then process the Client ID.

If you have trouble, look at the code in the 2-update.php s= ample file.

------=_Part_375781_718704164.1710827164688 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: file:///C:/590e09cd058f6774566e818e131580c9 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 ------=_Part_375781_718704164.1710827164688--