Child pages
  • Chapitre 5 - Modification - Mettre à jour un client

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Modification - Mettre à jour un client

Objectif : Une application WEB permettant de lister et de mettre à jour les informations d'un client.
*Difficulté : ****

Préparation

Dupliquez le fichier lister_les_clients.php de la section 3.3 vers un fichier nommé U-CRUD.php} à la racine de votre serveur WEB.

La mise à jour des ressources via le service web est complexe, nous allons donc d'abord expliquer son fonctionnement.

Diagramme de séquence représentant la mise à jour d'une ressource :

Nous pouvons voir que le diagramme se décompose en 2 étapes :

  • Récupération de la ressource à un id définit (1 dans le diagramme) et création du formulaire.
  • Mise à jour de la ressource.
Note

A l'endroit de la flèche, nous trouvons un « get », qui correspond à une récupération de ressource.

Cette étape est importante car il nous est nécessaire de récupérer à nouveau le fichier XML afin de le faire correspondre avec les données envoyées par le formulaire avant d'appeler "edit" pour mettre à jour la ressource.

Notez que nous aurions pu faire autrement en envoyant un XML modifié à l'aide de JavaScript et ainsi ne pas avoir de "get" dans ce processus.

Etape 1 : Récupération et création du formulaire

Récupération du fichier XML et affichage du formulaire :

Code Block
// Définition de la ressource
$opt = array( 'resource' => 'customers' );

// Définition de l'ID de ressource à modifier
$opt[ 'id' ] = $_GET[ 'id' ];

// Appel du service web, récupération du fichier XML
$xml = $webService->get( $opt );

// Récupération des éléments de la ressource dans une variable (tableau)
$resources = $xml->children()->children();

// Formulaire client

Ici, l'appel est similaire à la récupération de données, c'est cette appel qui va nous permettre de créer le formulaire.

Nous allons générer le formulaire de mise à jour automatiquement.

Pour ce formulaire, utilisons des balises HTML "input" ayant comme "name" le nom de l'attribut et comme "value" la valeur de celui-ci.

Afin de ne pas perdre l'id pour la 2ème étape selon le diagramme, le formulaire va pointer sur :

Code Block
?id="id du client"

Ainsi nous le récupèreront comme ceci :

Code Block
$_GET[ 'id' ];

Nous aurions pu faire autrement comme de passer également cette ID en POST, mais vous verrez que cela va simplifier le traitement par la suite.

Etape 2 : Mise à jour de la ressource

Dans un premier temps, comme vous pouvez le voir dans le diagramme là ou se trouve la flèche "Note", nous allons récupérer le fichier XML, pour ceci, vous allez réaliser le même appel que pour la création du formulaire.

Si vous avez bien spécifié comme indiqué précédemment la destination du formulaire avec un id, votre appel devrait déjà se faire et le formulaire se réafficher.

Aide pour la création du formulaire :

Code Block
foreach ($resources as $key => $resource)
{
echo '<tr><th>' . $key . '</th><td>';
echo '<input type="text" name="' . $key . '" value="' . $resource . '"/>';
echo '</td></tr>';
}

Une fois le fichier XML récupéré il nous faut modifier les nouvelles données avec les données reçu en POST.

Parcours des clés dans le fichier XML et mise à jours des valeurs :

Code Block
foreach ( $resources as $nodeKey => $node ) {
  $resources->$nodeKey = $_POST[ $nodeKey ];
}

Nous disposons maintenant d'un fichier XML mis à jour, il ne nous reste plus qu'a l'envoyer

Code Block
$opt = array( 'resource' => 'customers' ); // Définition de la ressource
$opt[ 'xml' ] = $xml->asXML();             // Définition du fichier XML
// L'appel de asXML() retourne une chaine correspondant au fichier
$xml = $webService->edit($opt);            // Appel

Exemple d'une mise à jour

Essayez maintenant de créer dans votre script U-CRUD.php la modification d'un client avec un ID définit dans le code, puis pour tous les clients.

Vérifiez à l'aide de R-CRUD.php que les informations ait bien été modifiées puis rendez dynamique l'ID du client.

Si vous rencontrez des difficultés, regardez le code de 2-Update.php.