Le monde des pensées positives

VIP-Blog de trankiland

Le monde des pensées positives
VIP Board
Blog express
Messages audio
Video Blog
Flux RSS

35 articles publiés
2 commentaires postés
1 visiteur aujourd'hui
Créé le : 13/04/2007 22:20
Modifié : 27/05/2007 20:24

Garçon (26 ans)
Origine : cotonou
Contact
Favori
Faire connaître ce blog
Newsletter de ce blog

 Décembre  2025 
Lun Mar Mer Jeu Ven Sam Dim
01020304050607
08091011121314
15161718192021
22232425262728
293001020304


| Accueil | Créer un blog | Accès membres | Tous les blogs | Meetic 3 jours gratuit | Meetic Affinity 3 jours gratuit | Rainbow's Lips | Badoo |

[ HISTOIRE ] [ *Qu`est ce que la ] [ PENSEES POSITIVES ] [ CULTURE GENERALE ] [ COURS LOGICIELS ] [ RENCONTRE ET AMITIER ] [ EXERCICES DE DROIT ET CORRIGE BTS ] [ COURS BTS ] [ LE BENIN ] [ CITATION ] [ LA PENSEES POSITIVE ]

Initiation à AJAX

26/05/2007 19:25



 Initiation à AJAX

Une approche du web 2.0

Propriétés

Description

Intitulé long

Initiation à la technique de développement Ajax

Formation concernée

BTS Informatique de gestion option Développeur d’application

Matière

DAIGL

Présentation

Le Web 2.0 donne aux internautes la possibilité d’agir sur les modalités d’acquisition et de présentation des informations. Ajax est le support technique de cette évolution du web vers plus d’ergonomie et de fonctionnalités. Ce support de cours propose de faire connaissance avec ces techniques à travers quelques exemples progressifs.

Notions

S34 Conception et développement d’applications client-serveur Méthodes et outils

Outils

Un logiciel navigateur de type Internet Explorer 7, Opera 8 ou Firefox 2. Un service web type Apache ou IIS avec un interpréteur PHP.

Mots-clés

Ajax, javascript, PHP, XML, client-serveur, web, HTML.

Auteur

Pierre Loisel avec la contribution de Daniel Régnier et la relecture d’Olivier Korn

Version

1.0

Date de publication

Mai 2007

AJAX (Asynchronous Javascript And Xml) est une méthode permettant d'interroger un serveur http à partir d'un navigateur à l'aide du langage javascript. L'idée de base est d'envoyer une requête au serveur en javascript et d'en récupérer le résultat pour mettre à jour l'affichage de la page. Remarques :

  1. - Les exemples fournis ont été testés avec Internet Explorer 7, Opera 8 et Firefox 2.
  2. - Le code HTML est volontairement minimaliste…

Merci à Daniel Régnier pour sa précieuse relecture. 1. L'objet XMLHttpRequest a. Description Le fonctionnement d'Ajax est basé sur un objet javascript de la classe XMLHttpRequest. Cet objet était à l'origine un objet ActiveX introduit par Microsoft dans Internet Explorer 5. Les autres navigateur l'ont ensuite implémenté en tant qu'objet javascript, ce que Microsoft a également fait depuis IE7. Un objet XMLHttpRequest permet d'envoyer une requête à un serveur http, de lui transmettre des informations via les méthodes GET ou POST, et de récupérer le résultat qui peut être du XML, du HTML ou du simple texte. Il convient de remarquer que les navigateurs trop anciens ou n'exécutant pas le code javascript ne donnent pas accès à cette technique.

Réseau CERTA Initiation à AJAX Page 2/30

b. Comment obtenir ce sésame ? > D'une manière basique, il suffit d'écrire en javascript : requeteHttp = new XMLHttpRequest(); > Mais ce serait trop simple… Ceci ne fonctionnerait pas avec IE5 ou IE6 pour lesquels cet objet est un objet ActiveX. Pour ces deux navigateurs, il faut : requeteHttp = new ActiveXObject("Microsoft.XMLHTTP"); Ou : requeteHttp = new ActiveXObject("Msxml2.XMLHTTP"); D'autre part, certains navigateurs basés sur Mozilla (Firefox notamment) exigent que le type de données utilisé par le serveur soit text/xml. On peut forcer ce type à l'aide de la méthode overrideMimeType, qui n'est pas appréciée par tout le monde. > Au final, il faut écrire : function getRequeteHttp() { var requeteHttp; if (window.XMLHttpRequest) { // Mozilla requeteHttp=new XMLHttpRequest(); if (requeteHttp.overrideMimeType) { // problème firefox requeteHttp.overrideMimeType('text/xml'); } } else { if (window.ActiveXObject) { // C'est Internet explorer < IE7 try { requeteHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { requeteHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { requeteHttp=null; } } } } return requeteHttp; }

Réseau CERTA Initiation à AJAX Page 3/30

2. Techniques de base a. Premier exemple L'exemple 1 permet simplement de mettre en oeuvre le mécanisme.

  1. - La première page (page1.html) contient la fonction getRequeteHttp vue précédemment et affiche un lien qui provoque l'exécution de la requête vers le serveur.
  2. - La seconde page (page2.html) ne contient en fait que le mot "coucou".
  3. - Lorsque l'utilisateur clique sur le lien de page1.html, la requête est envoyée au serveur par une fonction javascript, celui-ci se contente de retourner le mot "coucou" sur le flux http et la fonction affiche le résultat.

Page1.html <html> <head> <script type="text/javascript"> function getRequeteHttp() { // voir paragraphe 1 } function envoyerRequete(url) { var requeteHttp=getRequeteHttp(); if (requeteHttp==null) { alert("Impossible d'utiliser Ajax sur ce navigateur"); } else { requeteHttp.open('GET',url,false); requeteHttp.send(null); if (requeteHttp.readyState==4) { // la requête est achevée, le résultat a été transmis if (requeteHttp.status==200) { // la requête s'est correctement déroulée // (pourrait être 404 pour non trouvé par exemple) alert(requeteHttp.responseText); } else { alert("La requête ne s'est pas correctement exécutée"); } } } return; } </script> </head> <body> <a href="javascript:envoyerRequete('page2.html');">requete</a> </body> </html> Page2.html Coucou Remarque : cette page ne contient que cela.

Réseau CERTA Initiation à AJAX Page 4/30

Autre exemple Dans l'exemple 2, on remplace le contenu de page2.html par : <html> <body> <p>Ceci est la deuxi&egrave;me page.</p> </body> </html> Et le traitement du résultat de la requête par : function envoyerRequete(url) { var requeteHttp=getRequeteHttp(); if (requeteHttp==null) { alert("Impossible d'utiliser Ajax sur ce navigateur"); } else { requeteHttp.open('GET',url,false); requeteHttp.send(null); if (requeteHttp.readyState==4) { // la requête est achevée, le résultat a été transmis if (requeteHttp.status==200) { // la requête s'est correctement déroulée // (pourrait être 404 pour non trouvé par exemple) document.write(requeteHttp.responseText); } else { alert("La requête ne s'est pas correctement exécutée"); } } } return; } On obtient le remplacement de la page1 par la page2 dans le navigateur. Totalement inutile me direz-vous, un simple lien fait la même chose, c'est vrai… b. Principe de fonctionnement Lorsque l'utilisateur clique sur le lien, la fonction envoyerRequete est appelée et effectue les traitements suivants :

  1. - Obtention d'un objet XMLHttpRequest à l'aide de la fonction getRequeteHttp.
  2. - Ouverture de la requête (méthode open) en paramétrant :
    1. o la méthode d'envoi de données au serveur (nous y reviendrons),
    2. o l'url de la page appelée (celle-ci doit se trouver sur le même domaine),
    3. o le mode d'appel, synchrone ou asynchrone (nous y reviendrons).
    4. - Envoi de la requête (méthode send) en lui passant d'éventuelles informations destinées au serveur (nous y reviendrons).
    5. - Une fois la requête exécutée par le serveur, la fonction teste l'état d'avancement (propriété status), 4 indique une requête terminée (0 : non initialisée, 1 : en cours de chargement, 2 : chargée, 3 : interaction en cours).
    6. - La propriété status permet de savoir si tout s'est bien déroulé (valeur 200). L'exemple 404 pour une page non trouvée permet de comprendre la signification de cet indicateur.
    7. - Le résultat est ensuite récupéré via la propriété responseText (il est également possible d'exploiter la propriété responseXML pour obtenir la réponse sous la forme un document XML que l'on peut ensuite analyser à l'aide des routines DOM).

      Réseau CERTA Initiation à AJAX Page 5/30

      c. Que peut faire le serveur ? Nous avons vu qu'il peut retourner un simple texte comme "coucou", ou une page html complète. Il peut également retourner un document XML conforme au DOM (Document Object Model) qui peut ensuite être exploité en javascript. Il pourrait également retourner un code javascript qui serait exécuté à l'aide de la fonction eval (voir exemple 3 fourni). L'important est de comprendre que quelle que soit la nature de ce qu'il retourne, il le fait par n'importe quel moyen valide : fichier (ce que nous avons fait), mais aussi PHP, ASP, etc… En fait tout ce qui permet d'envoyer de l'information sur un flux http. Le script PHP ci-dessous (exemple 4) retourne la date courante sur le serveur et un message de bienvenue adapté à l'heure courante. <?php $jma=date('d/m/Y'); if (date('G')>20) { echo $jma.' Bonsoir.'; } else { echo $jma.' Bonjour'; } ?> Ce script peut être par exemple appelé par la page suivante (page1.html) : <html> <head> <script type="text/javascript"> function getRequeteHttp() { // comme d'habitude } function envoyerRequete(url) { var requeteHttp=getRequeteHttp(); if (requeteHttp==null) { alert("Impossible d'utiliser Ajax sur ce navigateur"); } else { requeteHttp.open('GET',url,false); requeteHttp.send(null); if (requeteHttp.readyState==4) { if (requeteHttp.status==200) { traiterReponse(requeteHttp.responseText); // voir page suivante } else { alert("La requête ne s'est pas correctement exécutée"); } } } return; }

      Réseau CERTA Initiation à AJAX Page 6/30

      function traiterReponse(reponse) { alert(reponse); } </script> </head> <body> <a href="javascript:envoyerRequete('voirDate.php');">Voir la date</a> </body> </html> La fonction traiterReponse ne change rien à l'affaire… d. Enfin un exemple intéressant (à la page 6 !!!) Tout ce que nous avons fait jusque là, nous aurions pu le faire sans Ajax… L'exemple 5 va enfin nous montrer l'intérêt de la technique. La page ci-dessous (page1.php) contient un certain nombre d'informations : <html> <head> <script type="text/javascript"> function getRequeteHttp() { // comme d'habitude } function envoyerRequete(url) { // comme d'habitude } function traiterReponse(reponse) { document.getElementById("heure").innerHTML=reponse; } </script> </head> <body> Page appel&eacute;e à : <?php echo date('h:i:s'); ?><br /> Ca va sauter dans 10 minutes, surveillez l'heure...<br /> <img src="bombe.gif"><br /> Il y a plein de choses ici !<br /> Il y a plein de choses ici !<br /> Il y a plein de choses ici !<br /> Il y a plein de choses ici !<br /> <form> <a href="javascript:envoyerRequete('majHeure.php');">Actualiser l'heure ci-dessous</a><br /> Heure du serveur : <span id="heure"><?php echo date('h:i:s'); ?></span><br /> Nom : <input type="text"><br /> Pr&eacute;nom : <input type="text"><br /> </form></body> </html> Le code PHP mis en gras permet d'afficher l'heure du serveur. Le script PHP ci dessous (majHeure.php) rafraichit cette information. <?php header("Cache-Control: no-cache, must-revalidate"); echo date('h:i:s'); ?> La première ligne oblige le navigateur à exécuter le script à chaque appel au lieu d'utiliser l'information présente dans son cache.

      Réseau CERTA Initiation à AJAX Page 7/30

      Cette fois, Ajax a servi a quelque chose :

      1. - Pour afficher l'heure du serveur, on est bien obligé de la lui demander.
      2. - Il doit donc y avoir une requête à chaque clic sur le lien.
      3. - Classiquement, nous aurions dû recharger toute la page pour rafraichir l'heure.
      4. - Ici, le trafic (et donc le temps de réponse) a été limité au strict nécessaire.

3. Un peu plus loin… a. Appel asynchrone Jusqu'ici, nous avons réalisé un appel synchrone au serveur dans la fonction envoyerRequete : requeteHttp.open('GET',url,false); requeteHttp.send(null); if (requeteHttp.readyState==4) { ... } Dans le code ci-dessus, la fonction javascript envoie la requête à l'aide de la méthode send, puis attend la réponse du serveur. Que se passe-t-il si la réponse est longue à venir ou pire, n'arrive jamais ? Le navigateur est figé… Une autre solution est d'envoyer la requête en indiquant le nom de la fonction à appeler lorsque le résultat sera arrivé (fonction de callback), et donc de ne pas attendre le résultat pour continuer. Le code de la fonction envoyerRequete devient (exemple 6) : function envoyerRequete(url) { var requeteHttp=getRequeteHttp(); if (requeteHttp==null) { alert("Impossible d'utiliser Ajax sur ce navigateur"); } else { requeteHttp.open('GET',url,true); requeteHttp.onreadystatechange=recevoirReponse; requeteHttp.send(null); } return; } function recevoirReponse() { alert('Mais elle est où cette réponse ?'); } La première ligne en gras montre que le troisième argument de la méthode open a changé. Il indique maintenant l'utilisation d'un appel asynchrone. Que se passe-t-il lorsque l'on exécute cet exemple ?

  1. - On ouvre l'objet requeHttp en précisant un appel asynchrone.
  2. - On indique le nom de la fonction de rappel (callback).
  3. - La requête est envoyée, l'exécution de la fonction envoyerRequete se termine, le navigateur n'est pas figé.
  4. - Lorsque l'événement readystatechange se produit (c'est à dire à chaque fois que la valeur de la propriété status de l'objet requeteHttp change), la fonction recevoirReponse est appelée par le navigateur.
  5. - On obtient donc 4 fois le message, l'état passant successivement par les valeurs 0, 1, 2, 3 et 4 (voir "principe de fonctionnement" page 4).
  6. Réseau CERTA Initiation à AJAX Page 8/30

    Deux choses sont à remarquer :

    1. - La réponse n'est réellement arrivée que lorsque l'état vaut 4.
    2. - Il est impossible d'accèder à cette réponse puisque l'objet requeteHttp est local à la fonction envoyerRequete.

      Il faut donc passer l'objet requeteHttp en paramètre à la fonction recevoirReponse, ce qui est impossible avec cette syntaxe. Il faut utiliser une "fonction anonyme", c'est-à-dire une fonction définie à la volée à l'aide de la syntaxe suivante (une autre solution serait d'utiliser une variable globale) : requeteHttp.onreadystatechange=function() {//code de la fonction}; L'exemple 7 utilise cette technique pour traiter correctement cette fois l'appel asynchrone : function envoyerRequete(url) { var requeteHttp=getRequeteHttp(); if (requeteHttp==null) { alert("Impossible d'utiliser Ajax sur ce navigateur"); } else { requeteHttp.open('GET',url,true); requeteHttp.onreadystatechange= function(){recevoirReponse(requeteHttp);}; requeteHttp.send(null); } return; } function recevoirReponse(requeteHttp) { if (requeteHttp.readyState==4) { if (requeteHttp.status==200) { traiterReponse(requeteHttp.responseText); } else { alert("La requête ne s'est pas correctement exécutée"); } } } function traiterReponse(reponse) { document.getElementById("heure").innerHTML=reponse; }

      Réseau CERTA Initiation à AJAX Page 9/30

      b. Transmettre de l'information (méthode GET) Envoyer une requête à un serveur http en javascript, c'est bien. Le faire en mode asynchrone, c'est mieux… Mais lui transmettre en plus de l'information, c'est le top ! L'exemple 8 montre cette possibilité. Il utilise la base de données mysql nommée "ajax" : Categorie (ca_id, ca_libelle) Clé primaire (ca_id) Produit (pr_id, pr_libelle, pr_prix, pr_categorie) Clé primaire (pr_id) Clé étrangère (pr_categorie) en référence à categorie(ca_id) Cette base peut être constituée à l'aide du script "creerAjax.sql", après création de la base de données via phpMyAdmin par exemple. La page principale (page1.php) affiche la liste des catégories de produits. Lorsque l'utilisateur sélectionne une catégorie, une requête retournant le nombre de produits de cette catégorie est envoyée au serveur. Le résultat est affiché sur la page. page1.php <html> <head> <script type="text/javascript"> function getRequeteHttp() { // idem } function envoyerRequete(url,idCateg) { var requeteHttp=getRequeteHttp(); if (requeteHttp==null) { alert("Impossible d'utiliser Ajax sur ce navigateur"); } else { requeteHttp.open('GET',url + '?categ=' + escape(idCateg),true); requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);}; requeteHttp.send(null); } return; } function recevoirReponse(requeteHttp) { // idem } function traiterReponse(reponse) { document.getElementById("nbPdt").innerHTML=reponse; } </script> </head> La première ligne en gras montre le passage d'information à l'aide de la méthode GET. Il serait possible de passer plusieurs valeurs : monScript.php?nom=dupont&prenom=paul. L’utilisation de la fonction escape permet de s’affranchir des problèmes liés aux caractères spéciaux.

      Le corps du document est présenté page suivante.

      Réseau CERTA Initiation à AJAX Page 10/30

      <body> <form name="categorie"> <select name="categ" size="4" onchange="javascript:envoyerRequete('getNbProduits.php',this.value)"> <?php $cnx=mysql_connect('localhost','root',''); mysql_select_db('ajax',$cnx); $req=mysql_query('select * from categorie'); $ligne=mysql_fetch_assoc($req); while($ligne) { echo '<option value='.$ligne['ca_id'].'>'.$ligne['ca_libelle']; $ligne=mysql_fetch_assoc($req); } mysql_close($cnx); ?> </select> </form> <br /> Nombre de produits : <span id="nbPdt">0</span> </body> </html> La construction de la liste est classique. Sur l'événement change, la valeur sélectionnée est transmise à la fonction envoyerRequete. getNbProduits.php <?php header("Cache-Control: no-cache, must-revalidate"); $cnx=mysql_connect('localhost','root',''); mysql_select_db('ajax',$cnx); $req=mysql_query('select count(*) as nb from produit where pr_categorie='.$_GET['categ']); $res=mysql_fetch_assoc($req); echo $res['nb']; mysql_close($cnx); ?> La première ligne n'est plus nécessaire si la base de données n'est pas modifiée par ailleurs. En effet, le code de catégorie change d'un appel à l'autre et ce changement force la réexécution de la requête HTTP. C'est d'ailleurs une technique possible pour forcer le navigateur à ne pas utiliser son cache : transmettre systématiquement un paramètre généré aléatoirement à la requête HTTP. On pourrait également écrire l'appel de la fonction envoyerRequete en lui passant directement le paramètre : onchange="javascript:envoyerRequete('getNbProduits.php?categ='+escape(this.value))". c. Transmettre de l'information (méthode POST) Pour utiliser la méthode POST, il est nécessaire de paramétrer l'entête utilisé par la requête : requeteHttp.open('POST',url,true); requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); Et de transmettre la ou les valeur(s) lors de l'envoi : requeteHttp.send('categ=' + escape(idCateg)); Il est possible de transmettre plusieurs valeurs avec la syntaxe habituelle : requeteHttp.send('nom=dupont&prenom=paul');

      Réseau CERTA Initiation à AJAX Page 11/30

      L'exemple 9 présente une transmission d'information à l'aide de la méthode POST et montre la possibilité de créer des pages très réactives. L'utilisateur saisit le libellé d'un produit. La page est mise à jour à chaque caractère entré pour afficher les produits dont le début du libellé correspond à la saisie. page1.php <html> <head> <script type="text/javascript"> function getRequeteHttp() { // idem function envoyerRequete(url, debut) { var requeteHttp=getRequeteHttp(); if (requeteHttp==null) { alert("Impossible d'utiliser Ajax sur ce navigateur"); } else { requeteHttp.open('POST',url,true); requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);}; requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); requeteHttp.send('debutLib=' + escape(debut)); } return; } function recevoirReponse(requeteHttp) { // idem } function traiterReponse(reponse) { var i,nb,selectPdt; var produits=reponse.split('/'); nb=produits.length; selectPdt=document.getElementById("listePdt"); selectPdt.length=nb; for (i=0; i<nb; i++) { selectPdt.options[i].text=produits[i]; } } </script> </head> <body> Libell&eacute; : <input type="text" onkeyup="javascript:envoyerRequete('getProduits.php',this.value)"> <br /> Liste des produits : <br /> <select id="listePdt" size="4"> </select> </body> </html>

La fonction envoyerRequete transmet le début du libellé à l'aide de la méthode POST. La fonction traiterReponse reconstruit dynamiquement la liste des produits après avoir "découpé" la réponse (liste de libellés séparés par le caractère '/'). La mise à jour a lieu à chaque entrée de caractères.

Réseau CERTA Initiation à AJAX Page 12/30

getProduits.php <?php header("Cache-Control: no-cache, must-revalidate"); header('Content-Type: text/plain; charset=ISO-8859-1'); $cnx=mysql_connect('localhost','root',''); mysql_select_db('ajax',$cnx); $req=mysql_query("select * from produit where pr_libelle like '".$_POST['debutLib']."%'"); $pdt=mysql_fetch_assoc($req); if ($pdt) { $resultat=$pdt['pr_libelle']; $pdt=mysql_fetch_assoc($req); } else { $resultat=''; } while($pdt) { $resultat=$resultat.'/'.$pdt['pr_libelle']; $pdt=mysql_fetch_assoc($req); } mysql_close($cnx); echo $resultat; ?> La première ligne en gras permet de spécifier l'encodage des caractères. La seconde ligne en gras montre la construction de la réponse. 4. Un exemple complet a. Résultat à obtenir L'idée est de créer un écran de recherche d'un produit : b. Technique classique La solution classique consiste à :

  1. - Charger une première fois la liste des catégories, la liste des produits de la première catégorie et le prix du premier produit.
  2. - Recharger entièrement la page lorsque l'utilisateur sélectionne une catégorie,
  3. - Recharger entièrement la page lorsque l'utilisateur sélectionne un produit.

Il est évident que cette solution entraine un trafic (donc une lenteur) inutile…

Réseau CERTA Initiation à AJAX Page 13/30

c. Un solution un peu lourde Il est possible de faire mieux en constituant en php dès le premier chargement :

  1. - Un tableau javascript contenant toutes les informations concernant les catégories et les produits.
  2. - Un ensemble de fonctions javascript destinées à mettre à jour l'affichage.

Mais cette solution est un peu lourde et conduit à créer des pages HTML assez volumineuses. d. Merci Ajax ! Avec Ajax, la solution est simple… Seules les informations nécessaires sont rechargées, la page est plus réactive, le trafic limité et la charge du SGBD optimisée. L'exemple 10 implémente cette solution. page1.php <html> <head> <script type="text/javascript"> function getRequeteHttp() { // idem } function envoyerRequeteListeProduits(idCateg) { var requeteHttp=getRequeteHttp(); if (requeteHttp==null) { alert("Impossible d'utiliser Ajax sur ce navigateur"); } else { requeteHttp.open('POST','getProduits.php',true); requeteHttp.onreadystatechange= function() {recevoirListeProduits(requeteHttp);}; requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); requeteHttp.send('categ=' + escape(idCateg)); } return; }

Réseau CERTA Initiation à AJAX Page 14/30

function recevoirListeProduits(requeteHttp) { if (requeteHttp.readyState==4) { if (requeteHttp.status==200) { var selectPdt=document.getElementById("listePdt"); if(requeteHttp.responseText=='') { selectPdt.length=0; document.getElementById("prix").innerHTML=''; } else { var produits,i,nb,pdt; produits=requeteHttp.responseText.split('/'); nb=produits.length; selectPdt.length=nb; for (i=0; i<nb; i++) { pdt=produits[i].split('*'); selectPdt.options[i].value=pdt[0]; selectPdt.options[i].text=pdt[1]; } selectPdt.options[0].selected='selected'; envoyerRequeteProduit(selectPdt.options[0].value); } } else { alert("La requête ne s'est pas correctement exécutée"); } } } // La ligne en gras est destinée à mettre à jour l'affichage du prix du produit sélectionné. function envoyerRequeteProduit(idPdt) { var requeteHttp=getRequeteHttp(); if (requeteHttp==null) { alert("Impossible d'utiliser Ajax sur ce navigateur"); } else { requeteHttp.open('POST','getInfoProduit.php',true); requeteHttp.onreadystatechange= function() {recevoirInfoProduit(requeteHttp);}; requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); requeteHttp.send('pdt=' + escape(idPdt)); } }

Réseau CERTA Initiation à AJAX Page 15/30

function recevoirInfoProduit(requeteHttp) { if (requeteHttp.readyState==4) { if (requeteHttp.status==200) { document.getElementById("prix").innerHTML=requeteHttp.responseText; } else { alert("La requête ne s'est pas correctement exécutée"); } } } </script> </head> <body> <?php echo '<select name="idCateg" onchange="javascript:envoyerRequeteListeProduits(this.value)">'; $cnx=mysql_connect('localhost','root',''); mysql_select_db('ajax',$cnx); $req=mysql_query('select * from categorie'); $ligne=mysql_fetch_assoc($req); if ($ligne) { $categ1=$ligne['ca_id']; } else { $categ1=null; } while($ligne) { echo '<option value='.$ligne['ca_id'].'>'.$ligne['ca_libelle']; $ligne=mysql_fetch_assoc($req); } echo '</select>'; echo '<br />';

Réseau CERTA Initiation à AJAX Page 16/30

echo 'Liste des produits : <br />'; echo '<select id="listePdt" size="4" onchange="javascript:envoyerRequeteProduit(this.value)">'; if ($categ1!=null) { $req=mysql_query('select * from produit where pr_categorie='.$categ1); $ligne=mysql_fetch_assoc($req); if ($ligne) { echo '<option selected value='.$ligne['pr_id'].'>'.$ligne['pr_libelle']; $prix1=$ligne['pr_prix']; $ligne=mysql_fetch_assoc($req); } else { $prix1=''; } while($ligne) { echo '<option value='.$ligne['pr_id'].'>'.$ligne['pr_libelle']; $ligne=mysql_fetch_assoc($req); } } echo '</select>'; echo '<br />'; echo 'Prix : <span id="prix">'.$prix1.'</span>'; mysql_close($cnx); ?> </body> </html> getProduits.php <?php header("Cache-Control: no-cache, must-revalidate"); header('Content-Type: text/plain; charset=ISO-8859-1'); $cnx=mysql_connect('localhost','root',''); mysql_select_db('ajax',$cnx); $req=mysql_query('select * from produit where pr_categorie='.$_POST['categ']); $pdt=mysql_fetch_assoc($req); if ($pdt) { $resultat=$pdt['pr_id'].'*'.$pdt['pr_libelle']; $pdt=mysql_fetch_assoc($req); } else { $resultat=''; } while($pdt) { $resultat=$resultat.'/'.$pdt['pr_id'].'*'.$pdt['pr_libelle']; $pdt=mysql_fetch_assoc($req); } mysql_close($cnx); echo $resultat; ?>

Réseau CERTA Initiation à AJAX Page 17/30

getInfoProduit.php <?php header("Cache-Control: no-cache, must-revalidate"); header('Content-Type: text/plain; charset=ISO-8859-1'); $cnx=mysql_connect('localhost','root',''); mysql_select_db('ajax',$cnx); $req=mysql_query('select pr_prix from produit where pr_id='.$_POST['pdt']); $pdt=mysql_fetch_assoc($req); mysql_close($cnx); echo $pdt['pr_prix']; ?> 5. Et le X dans tout cela ? a. Introduction J'y viens… Le X d'ajax signifie XML. Document Object Model (DOM) est une norme permettant de manipuler des documents XML. Il est possible de récupérer le résultat d'une requête ajax sous la forme d'un document XML et de l'exploiter à l'aide de DOM. b. Structure d'un document XML selon DOM Considérons le fichier XML donnees.xml (répertoire Exemple11) ci-dessous : donnees.xml <?xml version="1.0" encoding="ISO-8859-1" ?> <catalogue><produit><ref>p01</ref><des>chaise</des></produit><produit><ref>p02</ref><des>table</des></produit></catalogue> Représentation DOM L'arbre ci-dessous représente ce document en indiquant pour chaque noeud son type, son nom et sa valeur (nodeType, nodeName et nodeValue).

3 / #text / table

3 / #text / chaise

3 / #text / p01

1 / des / null

1 / ref / null

1 / produit / null

1 / catalogue / null

7 / xml / version…

9 / document / null

3 / #text / p02

1 / des / null

1 / ref / null

1 / produit / null

Réseau CERTA Initiation à AJAX Page 18/30

6. Présentation de DOM a. Introduction Les principaux objets (ce sont en réalité des interfaces) exploitables à l'aide de DOM sont : Node, NodeList, Attr, Element, Document et NamedNodeMap. Seuls les éléments les plus importants à mes yeux sont présentés ici. Pour une description plus complète, voir http://xmlfr.org/w3c/TR/REC-DOM-Level-1/level-one-core.html. b. Types de noeuds 1 : élément XML 2 : attribut 3 : texte 9 : Document c. Node Représente un noeud XML. > Propriétés :

Nom

Type

Modifiable

Commentaire

nodeType

Entier

Non

Le type du noeud

nodeName

Chaîne

Non

Le nom du noeud

nodeValue

Chaîne

Oui

La valeur du noeud

parentNode

Node

Non

Le noeud parent

childNodes

NodeList

Non

La liste des noeuds enfants

firstChild

Node

Non

Le premier noeud enfant

lastChild

Node

Non

Le dernier noeud enfant

attributes

NamedNodeMap

Non

La liste des attributs d'un élément

> Méthodes - booléen hasChildNodes() Retourne vrai si le noeud courant (celui avec lequel on appelle la méthode) possède des noeuds enfants. - Node insertBefore(Node nouveau, Node positionNoeud) Insère le noeud nouveau avant le noeud positionNoeud dans la liste des enfants du noeud courant. Retourne le noeud inséré. - Node appendChild(Node nouveau) Ajoute le noeud nouveau à la fin des enfants du noeud courant. - Node removeChild(Node ancien) Supprime le noeud ancien de la liste des enfants du noeud courant. Retourne le noeud supprimé. - Node replaceChild(Node nouveau, Node ancien) Remplace le noeud ancien par le noeud nouveau dans la liste des enfants du noeud courant. Si le noeud nouveau appartenait déjà à l'arbre formé par le document XML, il se trouve en fait déplacé. Retourne le noeud ancien. - Node cloneNode(booléen enProfondeur) Retourne une copie du noeud courant. Si enProfondeur vaut vrai, la fonction retourne l'ensemble du sous arbre représenté par le noeud.

Réseau CERTA Initiation à AJAX Page 19/30

d. NodeList Représente une liste ordonnée de noeuds. > Propriétés :

Nom

Type

Modifiable

Commentaire

length

entier

Non

Le nombre de noeuds de la liste

> Méthodes - Node item(entier pos) Retourne le noeud à la position pos dans la liste. Le premier noeud de la liste est à la position 0. e. Attr Représente un attribut XML, hérite de Node. > Propriétés :

Nom

Type

Modifiable

Commentaire

name

Chaîne

Non

Le nom de l'attribut

value

Chaîne

Oui

La valeur de l'attribut

f. Element Représente un élément XML, hérite de Node. > Propriétés :

Nom

Type

Modifiable

Commentaire

tagName

Chaîne

Non

Le nom de l'élément (attribut ID)

> Méthodes - Chaîne getAttribute(chaîne nom) Retourne la valeur de l'attribut nom de l'élément courant. - Attr getAttributeNode(chaîne nom) Retourne l'objet attribut (et pas seulement sa valeur) nommé nom de l'élément courant. - void setAttribute(chaîne nom, chaîne valeur) Si l'attribut nom existe, sa valeur devient valeur. S'il n'existe pas, il est ajouté aux attributs de l'élément courant. - Attr setAttributeNode(Attr nouveau) Si l'élément courant ne possède pas d'attribut de même nom que l'attribut nouveau, cet attribut est ajouté et la fonction retourne null. Si l'élément courant possède déjà un attribut de même nom, il est remplacé par l'attribut nouveau et l'ancien attribut est retourné par la fonction. - void removeAttribute(chaîne nom) Supprime l'attribut nom des attributs de l'élément courant.

Réseau CERTA Initiation à AJAX Page 20/30

- Attr removeAttributeNode(Attr ancien) Supprime l'attribut ancien des attributs de l'élément courant. Retourne l'attribut supprimé. - NodeList getElementsByTagName(chaîne nom) Retourne la liste de tous les éléments de nom nom enfants de l'élément courant. Si nom vaut " * ", tous les éléments enfants sont retournés. g. Document Représente un document XML. Hérite de Node. > Propriétés :

Nom

Type

Modifiable

Commentaire

documentElement

Element

Non

L'élément racine du document

> Méthodes - Element createElement(chaîne nom) Crée un nouvel élement de nom nom et le retourne. - Text createTextNode(chaîne valeur) Crée un nouveau noeud texte de contenu valeur. Le type Text est dérivé de Node. - Attr createAttribut(chaîne nom) Crée un nouvel attribut de nom nom. - NodeList getElementsByTagName(chaîne nom) Retourne la liste de tous les éléments de nom nom enfants du document courant. Si n





EXO :1 ECONOMIE / DROIT

26/05/2007 19:31



I: TRAVAIL METHODOLOGIQUE

À partir des annexes 1 à 5:

  •  Vous cernerez la notion d'entreprise citoyenne,
  •  Vous rechercherez, en vous appuyant sur les exemples fournis, les mesures concrètes qui traduisent l'engagement des entreprises dans cette voie et qui marquent ses limites.

 II:  DEVELOPPEMENT STRUCTURE

Dans un développement structuré, montrez comment les modifications du droit du travail contribuent à résoudre les problèmes économiques et sociaux de l'emploi et précisez les contraintes et limites de leur efficacité.

Vous répondrez à cette question en étayant votre argumentation par des références juridiques et économiques précises. 


Annexe 1 :Entreprise citoyenne

" Tarte à la crème " du débat public depuis quelques années, l'entreprise citoyenne est redevenue à la mode, après que Jean Gandois en eut fait l'un de ses thèmes lors de sa campagne pour la conquête de la présidence du CNPF. Le fait que, sitôt élu, il ait confié à Jacques Dermagne, l'un de ses vice-présidents, le soin de préciser le contenu de cette notion confirme bien une volonté.

Tout au plus peut-on admettre, comme M. Gandois d'ailleurs, que si la vocation de l'entreprise est exclusivement de créer des richesses - dégager du profit -, celle-ci ne saurait être riche seule. Par simple intérêt bien compris.

À défaut, on peut comprendre d'où vient l'exigence. Au temps des "Trente Glorieuses ", le compromis fordiste assurait le lien entre l'économique et le social, les gains de productivité étant compensés par l'amélioration du pouvoir d'achat; alors qu'actuellement, le modèle en vigueur souffre d'un manque de répartition. Pour retrouver un équilibre et alors que les tensions produites par le chômage menacent la société, il est logique de rechercher un nouvel arbitrage qui conduirait les entreprises à se comporter de façon plus humaine. Trop poursuivre la logique de la compétitivité aboutirait à laisser toujours plus de gens sur le bord de la route, avec les risques d'exclusion que cela suppose, sans parler de la déstructuration en cours du tissu social.

Aujourd'hui, il est normal que l'entreprise se préoccupe de son environnement ou s'interroge sur ses responsabilités extérieures à son activité directe. En l'attente de l'élaboration d'un nouveau contrat social qui célébrerait la naissance d'un autre compromis, dont l'actuelle négociation entre les partenaires sociaux pourrait donner le ton, il était nécessaire que des mesures d'urgence soient prises. Le plus souvent en ordre dispersé.

D'où l'effet de mode. En privilégiant l'image sur le contenu ou, plus grave, sur la véritable imprégnation, nombre d'entreprises se sont grillé les ailes dans des opérations sans lendemain qui, avec l'humanitaire notamment, relevaient davantage du marketing (1) que de la solidarité. Caution ou alibi, ces actions ont rarement été convaincantes, et surtout n'ont pas résisté à l'annonce de mauvais résultats d'exploitation, ou n'ont fait que mettre en évidence le décalage avec la politique sociale interne, incohérente par rapport à ces objectifs. Bien souvent, les salariés et les syndicats ont jugé ces dépenses somptuaires ou inutiles, principalement quand des licenciements survenaient simultanément.

Plaquées sur une réalité différente, les initiatives en faveur de l'insertion des jeunes en difficulté ou de chômeurs de longue durée n'ont pas été mieux perçues, ou plus couronnées de succès, quand elles provenaient d'entreprises publiques qui s'offraient ainsi un certificat de bonne conduite tout en poursuivant, par ailleurs, leur politique de gestion humaine rigoureuse. Un fossé demeurait entre le statut des agents et des CES (contrats emploi-solidarité) par exemple, interdisant pratiquement toute intégration ou condamnant à la rotation des publics aidés. Certains responsables qui ont mis en place des dispositifs apparemment innovants, reconnaissent le faire pour éviter que les pouvoirs publics ne leur imposent des efforts supplémentaires, préférant l'autopunition à l'obligation quantifiée!

En revanche, la citoyenneté d'entreprise se lit mieux, parait incontestable, et pérenne quand elle correspond à un intérêt économique ou qu'elle fait intervenir un partenariat - un réseau - d'intérêt.

                  Alain LEBAUDE, Le Monde, 17 mai 1995

(1) en français: mercatique

Annexe 2: Des entreprises dans la cité

La RATP et le groupe Auchan tentent d'agir sur leur environnement social. Pas seulement par angélisme.

La cité c'est leur quotidien. La RATP assure le droit au transport, Auchan y implante ses hypermarchés. La première remplit sa mission de service public tandis que la seconde veut séduire le plus grand nombre de consommateurs. Lorsque la ville est en crise, elles le savent vite. Et doivent faire avec " Nos actions de solidarité ne sont pas un choix de bonne conscience mais de bonne gestion " explique lucidement Pierre-Alain Douay, chargé de mission à la présidence de la RATP.

Lorsque Auchan crée en 1991 dans la ville haute du Havre, quartier d'implantation d'un de ses hypers, l'association Trait d'union, l'objectif est clair: favoriser l'insertion et prévenir la délinquance via un programme permanent avec les jeunes et toute une série d'animations culturelles et sportives. Il fallait apaiser le climat de violence, restreindre l'insécurité.

" Le principe est simple: nos magasins servent de centre de formation à des 18-25 ans pendant six mois. L'immersion est totale. lis acquièrent une qualification monnayable sur le marché du travail ".

Sur les trois cents jeunes déjà concernés, cent quatre-vingts environ ont été embauchés par le distributeur, et une trentaine d'autres ailleurs.

Jouer aux pompiers, agir dans l'urgence, la RATP et Auchan avouent y être parfois contraints - mais leur situation relève aussi du long terme. Tout chômeur est un consommateur ou un voyageur potentiel en moins. C'est une première réalité. " Il faut également réfléchir en termes de légitimité sociale, souligne Bernard Nadoulek, consultant. Nous sommes associés dans l'opération menée par Auchan au Havre. Dans les années 70 et 80, les entreprises avaient une légitimité sociale directe, en interne. Aujourd'hui, cette dernière est en déficit, et certaines entreprises souhaitent la reconquérir.

Un tel choix ne manque pas, cependant, de provoquer des difficultés. Trouver des conducteurs de bus volontaires pour aller dialoguer dans les écoles avec les jeunes ne pose visiblement aucun problème à la RATP Chez Auchan, on explique aussi qu'il y a plus de demandes pour être tuteur d'un jeune accueilli dans le cadre de la convention Veil que de postes disponibles. " L'élan est réel ", assure-t-on, mais des résistances s'expriment. La RATP doit, par exemple, faire front aux critiques sévères d'une CGT attachée aux effectifs statutaires et qui conseille à la direction de balayer devant sa porte en priorité. " La RATP crée elle-même les conditions de l'exclusion en embauchant moins d'agents qu'elle n'en met à la retraite " lance Jacques Delallée, secrétaire général de la CGT RATP. Un discours qui sera certes davantage nuancé à la CFDT, où, tout en demandant des bilans précis, " on estime plutôt positif que l'entreprise réussisse à réinvestir dans les banlieues, sinon transformées en ghettos ".

L'inquiétude d'un certain nombre de salariés à la base n'est pas à négliger non plus. Agents et vendeurs s'interrogent sur l'avenir de leurs enfants, qu'ils verraient bien intégrer à leur tour l'entreprise, " à condition que la place ne soit pas réservée à de jeunes délinquants.. . -. - Nous devons évidemment être attentifs à cette peur d'une discrimination à l'envers, estime Josette Théophile, directrice des ressources humaines à la RATP Mais faisons aussi la part des choses entre l'expression maladroite d'un père ou d'une mère et les obstructions farouches aux actions que nous menons, La question soulevée aussi est celle d'un équilibre de politique général, auquel nous devons travailler".

Pas question donc, pour Auchan et la RATP, " de se transformer en combattants héroïques de la lutte contre l'exclusion -, sous peine de se retrouver menacés en interne. Il s'agirait plutôt de créer une dynamique, de travailler avec d'autres partenaires: collectivités locales ou PME... Bref, convaincre du bien-fondé de la démarche.

              Marie-Béatrice BAUDET, Le Monde, 17 mai 1995

Annexe 3: Grands groupes et responsables

Dans les zones en reconversion, ils concourent au développement de projets locaux. Et s'efforcent de compenser les emplois détruits.

Les grandes entreprises ont dans l'ensemble pris en charge la reconversion des salariés qu'elles employaient, même si les coûts sont en général répartis entre l'entreprise et la collectivité. Question de réputation sans doute, les grands groupes ont, en effet, une image à conserver dans les bassins d'emploi qui dépendent d'eux. Ils mènent généralement deux actions de front: la requalification des personnes et la reconversion des bassins d'emploi.

Les techniques de reconversion se sont considérablement affinées. Elles sont devenues de plus en plus efficaces, avec des taux de placement en progression.

Aux opérations à chaud dictées par l'urgence sont préférables des procédures à froid fondées sur des projets personnels. Laide au développement régional continue de se concevoir de manière très différente suivant les entreprises.

Enfin, les grands groupes jouent un rôle utile en garantissant une qualification. Les personnes ainsi formées seront plus facilement embauchées, notamment par les PME et PMI environnantes.

                Alain BEUVE-MÉRY, Le Monde, 11 mai 1995

Annexe 4: EDF-GFD: une charte sociale à Charenton-le-Pont

La direction d'EDF-GDF Services de Saint-Mandé (Val-de-Marne) signera mardi avec la mairie de Charenton-le-Pont une charte sociale prévoyant notamment des services de " solidarité ", tel le maintien de l'énergie, sous certaines conditions pour les abonnés démunis n'ayant pas acquitté normalement leur facture d'électricité ou de gaz. C'est la première fois en Ile-de-France qu'une telle charte sociale est signée à EDF, dont le président, Edmond Alphandéry, assistera à la signature, au côté du directeur général adjoint de GDF, Jean Balazuc.

                      Le Figaro, 5 mars 1996

Annexe 5: Usine Danone de Strasbourg: décision de fermeture " irréversible "

La décision de fermer le site de production de Danone à Strasbourg est "irréversible", a confirmé le PDG du groupe, Antoine Riboud, au maire de Strasbourg, Mme Catherine Trautmann, qu'il a rencontrée hier dans la capitale alsacienne. " M. Riboud s'est engagé personnellement à rechercher une activité d'alternative pour le site strasbourgeois de Danone et à faire des propositions de reclassement à chacun des 97 salariés ", a indiqué Mme Trautmann.

" M. Riboud a l'habitude de parier d'entreprise citoyenne, il faudra qu'il prouve son engagement à Strasbourg ", a-t-elle ajouté. Par ailleurs, Danone s'est engagé à maintenir ses achats de lait (de 60 000 à 70 000 litres par jour) jusqu'à la fin de l'année afin de permettre à la coopérative régionale Alsace-lait de trouver des acheteurs alternatifs et de tenter d'amortir ainsi les conséquences sur la filière alsacienne.Le Figaro, 2 février 1996.






Corrigé exo 1

26/05/2007 19:39



I Méthodologie

 

 

1 ‑ L'entreprise citoyenne: définition

 

Pendant les « 30 Glorieuses » l'entreprise remplissait essentiellement des fonctions économiques. Le compromis fordiste liait l'économique et le social. En contrepartie des gains de productivité réalisés, les salariés connaissaient une hausse de leur pouvoir d'achat La crise a eu pour effet de rompre le compromis existant. La répartition des gains de productivité s'est alors faite au profit du capital, des clients et de certains salariés en excluant une partie de ces derniers.

Les entreprises se sont alors progressivement aperçues que leurs décisions en matières sociale, mais aussi écologiques, influençaient les comportements d'achat des consommateurs. Apparaît alors l'entreprise citoyenne.

L'émergence de la notion d'entreprise citoyenne met l'accent sur la prise en compte des multiples responsabilités de l'entreprise:

- responsabilité sociale, par le développement et le maintien de l'emploi, la formation des travailleurs et des jeunes en difficultés, l'aide à la reconversion ;

- responsabilité écologique, par le respect de l'environnement naturel;

- responsabilité morale, par l'aide humanitaire, par le développement d'une éthique des affaires c'est‑à‑dire la prise en compte, dans la conduite des entreprises, de considérations morales et de règles de conduite conformes à l'intérêt général, par le refus du travail des enfants dans les pays sous‑traitants ;

- responsabilité culturelle, par le mécénat culturel.

 

2 ‑ L'engagement citoyen des entreprises: mesures concrètes et limites

 

a) À titre d'exemples il est possible de citer plusieurs mesures concrètes prises par des entreprises françaises dans le cadre de leur engagement citoyen.

La RATP malgré les difficultés et en conformité avec sa mission s'efforce de maintenir le service public du transport dans les banlieues difficiles.

 Pour faciliter l'insertion des jeunes et prévenir la délinquance dans les cités, Auchan a créé l'association Trait d'Union. Par le biais de la formation et d'animations culturelles et sportives, Auchan espère accroître l'emploi dans ces quartiers et par là réduire l'insécurité et la violence.

 De nombreuses entreprises à l'image de Danone mènent des actions de reconversion, de reclassement de salariés. Il s'agit pour elles d'accompagner socialement les restructurations industrielles. EDF‑GDF a signé une charte sociale avec la mairie de Charenton. L'objectif est qu'en cas d'impayés, sous certaines conditions, l'approvisionnement en énergie soit maintenu.

Mais ces engagements citoyens présentent un certain nombre delimites.

 

 Très souvent, dans l'humanitaire en particulier, les actions citoyennes sont menées dans l'urgence répondant à un effet de mode et relevant plus de la publicité que de la solidarité véritable. Les actions externes d'entreprises ne sont pas cohérentes avec la politique sociale interne ce qui entraîne des réactions négatives de la part des salariés.

 Dans les entreprises publiques on a vu se développer une précarité induisant un dualisme social entre les agents titulaires et les autres.

‑ Certains salariés s'inquiètent d'une discrimination positive dans le domaine de l'emploi en privilégiant les jeunes en difficultés au détriment des autres au comportement normal. Pour réussir, l'engagement citoyen des entreprises est conditionné par la réalisation de résultats économiques jugés satisfaisants.

 

II Développement structuré

 

Le plan

 

 

    I ‑ Le droit du travail et les problèmes économiques et sociaux de l'emploi

 

1. L'inadaptation du droit du travail.

2. L'adaptation du droit du travail à la nouvelle donne économique.

 

Il ‑Les insuffisances de l'analyse libérale

 

1. La flexibilité, réponse partielle.

2. La flexibilité, conséquences économiques et sociales.

 

 

Introduction

 

L'emploi, composé par les personnes titulaires d'un contrat de travail, constitue, en France, pour le gouvernement, mais aussi pour tous les Français à des degrés divers, le problème numéro un. Le chômage représente (mai 1998) 12 % de la population active. L'exclusion se développe. Face à ces problèmes économiques et sociaux de l'emploi les solutions proposées foisonnent. Une de celles qui émergent résulte de l'analyse libérale.

Le droit du travail, c'est-à-dire l'ensemble des lois et dispositions qui régissent les relations entre employeurs et salariés, doit être adapté pour résoudre les problèmes économiques et sociaux de l'emploi.

En quoi le droit du travail peut‑il résoudre les problèmes de l'emploi ? Les modifications du droit du travail seront‑elles suffisantes ? À quel type d'analyse répondent-elles ? Ne faut-il pas faire appel à d'autres variables, économiques entre autres ?

La vision qui sous-tend cette volonté d'adapter le droit du travail est de nature libérale. Selon ses partisans il faut plus de flexibilité, de souplesse pour résoudre les problèmes économiques et sociaux de l'emploi. Mais les solutions proposées montrent des insuffisances.

 

1 ‑ Le droit du travail et les problèmes économiques et sociaux de l'emploi

 

Le droit du travail hérité en grande partie de la période des Trente Glorieuses est inadapté à la nouvelle donne économique. Il faut le modifier.

 

1.1. L'inadaptation du droit du travail

 

‑ En France, les réglementations qui pèsent sur les entreprises sont bien trop nombreuses. Elles se sont accumulées Pendant de nombreuses décennies. Dans ces conditions la capacité d'entreprendre se trouve insérée dans un véritable carcan, ce qui a pour effet de brider les initiatives.

 Le droit du travail y contribue pour une large part. Le poids des formalités liées à la relation salariale est pour les PME, en particulier, devenu insupportable. L'établissement d'un bulletin de salaire, par exemple, avec les différents taux, s'avère être un exercice très complexe.

 

La gestion des réglementations représente un coût élevé pour les entreprises et leur complexité constitue un frein à l'embauche.

 

 Pour certains, il faut faire éclater le compromis social qui en France a fait accepter le chômage de masse. Le SMIC (Salaire minimum interprofessionnel de croissance) se trouve au centre du problème. La réglementation du SMIC, dont le niveau est jugé trop élevé, coûte des emplois. Les victimes en sont les salariés non qualifiés et tout particulièrement les jeunes sans expérience et formation, dont la productivité est insuffisante pour ce niveau de rémunération. Une grande surface de jouets, par exemple, emploie aux États-Unis 40 % de personnes de plus qu'en France pour le même chiffre d'affaires parce que le niveau de rémunération, charges sociales comprises, y est plus faible.

 

1. 2. L'adaptation du droit du travail à la nouvelle donne économique

 

 La vision libérale de l'économie, le retour du marché, se caractérise par la recherche de plus de flexibilité ou de souplesse. Dans ce cadre les modifications du droit du travail ont été ces dernières années nombreuses avec, pour objectif, de mieux s'adapter aux conditions économiques pour préserver et développer l'emploi.

Le droit du travail dans son article L. 121-5 dispose que le contrat de travail est conclu sans détermination de durée. Or, depuis quelques années, on assiste à une remise en cause du CDI (Contrat à durée indéterminée) à temps plein, au profit de contrats à temps partiel et de contrats atypiques à temps déterminé. Parmi ces derniers on peut relever les CDD (Contrat à durée déterminée), les CTT (Contrat de travail temporaire), les emplois jeunes, les CES (Contrat emploi‑solidarité), les stages divers.

 L'aménagement du temps de travail se fait par la modulation qui a pour but de mieux correspondre aux contraintes de production. La loi quinquennale sur l'emploi prévoit l'annualisation du temps de travail. Elle permet de répartir la durée du travail sur tout ou partie de l'année.

Avec le licenciement économique, le droit du travail s'est adapté au contexte économique. Il est prononcé pour un ou plusieurs motifs, non inhérents à la personne du salarié, résultant d'une suppression ou d'une transformation d'emploi ou d'une modification substantielle du contrat de travail, consécutives notamment à des difficultés économiques ou à des mutations technologiques (loi du 2 août 1989 article L. 321‑1).

 

 Dans une approche différente, la loi Robien et la loi sur les 35 heures ont pour objectif de résoudre en partie le problème de l'emploi par la réduction du temps de travail. La loi Robien du 11 juin 1996 a deux axes. Elle cherche à inciter les entreprises à embaucher ou à éviter les licenciements économiques. Les moyens sont l'allégement des charges sociales. La loi Aubry de 1998 fixe la durée du travail hebdomadaire à 35 heures en l'an 2000 (en 2002 pour les entreprises de moins de 20 salariés). Afin d'inciter les entreprises à agir au plus vite, une aide dégressive est prévue (9000 F par salarié en 1998 puis diminution de 1000 F par an).

 

2 ‑ Les insuffisances de l'analyse libérale

 

Les problèmes de l'emploi ont des causes multiples et les modifications du droit du travail ne peuvent seules les solutionner. Pour les libéraux, la cause essentielle du chômage tient à la rigidité du marché du travail d'où la nécessité d'introduire dans son fonctionnement de la flexibilité. Mais le chômage a d'autres causes et la flexibilité du marché du travail engendre des conséquences négatives.

 

2.1. La flexibilité réponse partielle

 

 Les keynésiens expliquent le chômage par une insuffisance de la demande anticipée par les chefs d'entreprise. Si leurs anticipations s'avèrent pessimistes ils n'investiront pas, n'embaucheront pas et même peut‑être licencieront. Il faut donc privilégier la demande en assurant une croissance des revenus, en particulier salariaux. Pour certains, les problèmes de l'emploi viendraient du progrès technique. Schumpeter a montré que les innovations apparaissaient sous forme de grappes et entraîneraient un processus de destruction‑création. Dans un premier temps, la destruction est plus intense que la création, dans un deuxième temps le phénomène s'inverse. À court terme, la machine détruit des emplois, mais à long terme elle en crée.  Autre explication, le niveau de qualification des chômeurs ne correspond pas au niveau exigé par le poste, des offres d'emplois en provenance des entreprises peuvent rester insatisfaites. a Enfin, la population active est constituée de la population en âge de travailler et désirant travailler, des titulaires d'un emploi et des chômeurs. En France la population active connaît un accroissement naturel de 150 000 personnes par an. Pour stabiliser et à fortiori faire baisser le taux de chômage, les entreprises doivent créer au minimum 150 000 emplois chaque année. À cet accroissement naturel il convient d'ajouter l'effet de l'évolution des taux d'activité. Si aux âges extrêmes les taux d'activité diminuent (prolongement de la scolarité, baisse de l'âge de départ en retraite), ils progressent pour les femmes.

 

2.2. La flexibilité, conséquences économiques et sociales

 

Les modifications du droit du travail présentent des conséquences négatives.

 Avec le développement des contrats de travail atypiques tels que les CDD, CTT, Emplois jeunes, CES... on assiste à une montée de la précarité, ce qui peut entraîner des phénomènes de marginalisation et a des incidences sur le mode de consommation des ménages concernés. Selon une étude du Plan, sept millions de salariés sont, en France, concernés.

 Dans les pays anglo‑saxons sont apparus les « working‑poors » (travailleurs pauvres). Le développement des emplois à temps partiel fait que certains salariés, vivent en dessous du seuil de pauvreté. Ce phénomène existe aussi en France et est la conséquence directe de la déréglementation du marché du travail.

 

Conclusion

 

Suite à la crise des années soixante‑dix une vision libérale de l'économie est réapparue après trente ans de keynésianisme. Le marché affirme sa suprématie en cette fin de siècle. Après les pays anglo‑saxons, cette vision a gagné la France au cours des années quatre‑vingt. Ce retour du libéralisme a pour corollaire l'adaptation du droit du travail pour aller vers plus de flexibilité. Cette réponse libérale à la crise n'est pas sans conséquences économiques et sociales avec la montée de la précarité. Se trouve alors posé le problème de la cohésion sociale car, sans un régulateur comme l'État, le système économique risque de devenir une machine à exclure. Nous courons alors le danger de nous diriger vers une société duale qui peut engendrer des réactions violentes.






Corrigé exo 2

26/05/2007 19:49








LA TRAITE NEGRIERE

27/05/2007 19:29



 

Images sur la traite atlantique

 






Début | Page précédente | 1 2 3 4 5 6 7 8 | Page suivante | Fin
[ Annuaire | VIP-Site | Charte | Admin | Contact trankiland ]

© VIP Blog - Signaler un abus