Communauté Informatique NDFR.net

Communauté Informatique NDFR.net (http://www.ndfr.net/forums/index.php)
-   Programmation Web (HTML, PHP, ASP, Java, XML, etc.) (http://www.ndfr.net/forums/forumdisplay.php?f=65)
-   -   PHP et AJAX (http://www.ndfr.net/forums/showthread.php?t=8308)

maroctech 22-01-2008 00:40

PHP et AJAX
 
Bonjour.
Je vous envoi ce post afin de vous exposer mon problém. j'essaie depuis quelques jours de concevoir un systém de gestion pour cyber en utilisant PHP et les fonctionnalités d'AJAX. Actuellement je travail sur le calcul de la durée de connexion.j'ai réussi a créer une page (traitement.php) qui traite les informations prevenant de la page (duree.html)
Le code de la page traitement.php est le suivant :

<?
/* Récupération des valeurs des champs du formulaire */
if (get_magic_quotes_gpc())
{
$hentree = stripslashes($_POST['hentree']);
$hsortie = stripslashes($_POST['hsortie']);

}
else
{
$hentree = $_POST['hentree'];
$hsortie = $_POST['hsortie'];

}

function difheure($heuredeb,$heurefin)
{
$hd=explode(":",$heuredeb);
$hf=explode(":",$heurefin);
$hd[0]=(int)($hd[0]);$hd[1]=(int)($hd[1]);$hd[2]=(int)($hd[2]);
$hf[0]=(int)($hf[0]);$hf[1]=(int)($hf[1]);$hf[2]=(int)($hf[2]);
if($hf[2]<$hd[2]){$hf[1]=$hf[1]-1;$hf[2]=$hf[2]+60;}
if($hf[1]<$hd[1]){$hf[0]=$hf[0]-1;$hf[1]=$hf[1]+60;}
if($hf[0]<$hd[0]){$hf[0]=$hf[0]+24;}
return (($hf[0]-$hd[0]).":".($hf[1]-$hd[1]));
}
// Appel
$hdeb= $hentree;
$hfin= $hsortie;
echo difheure($hdeb,$hfin);


?>

le code de la page duree.html est le suivant :

<head>
</head>

<body>
<form>
<label>Heure d'entree
<input name="hentree" type="text" id="hentree" />
</label>
<p>
<label>Heure de sortie
<input name="hsortie" type="text" id="hsortie" />
</label>
</p>
<p>

<input type="submit" value="Calculer la durée"/>
</p>
</form>
</body>
</html>

Ca marche nickel . la page traitement.php me donne la durée en heures et minutes comme j'ai exigé.
Maintenant j'ai essayé d'introduire AJAX pour avoir la durée sur la page duree.html dés que je clique sur le bouton Calculer sans que le navigateur passe vers la page traitement.php
Autrement dit je veu ce procesus :

duree.html =====(Requete avec les variables - AJAX) ==> traitement.php
traitement.php ======(Resultat de calcul - AJAX) ===> duree.html


j'avais essayer pas mal de scripts et codes mais ca marche pas. quelqu'un pourrai me proposer une solution clair et un code a facile a comprendre parceque je vous signale que ce sonts mes premieres manipulations d'AJAX.Merci

Samva 22-01-2008 09:24

Pour faire simple et sans te pondre le code, les étapes sont (dans un javascript de duree.html) :
  • Créer l'objet XMLHttpRequest (tous les tutos donnent la procédure pour créer l'objet pour tous les navigateurs)
  • Poster les valeurs
    Code:

    xhr.open("POST", "traitement.php");
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
    xhr.send("hentree="+document.getElementById("hentree").value+"&hsortie="+document.getElementById("hsortie").value;

  • Surcharger la méthode appelée sur le onReadyStateChange, pour cela, le plus simple est de rajouter un <div id="reponse"> par exemple dans ton duree.html, et dans la méthode, lorsque le readyState est à 4, de faire un truc du genre
    Code:

    document.getElementById("reponse").innerHTML=xhr.responseText;

Voilà, je pense qu'avec ça tu as une bonne base, tu as plus qu'a combler les trous que j'ai laissé... ;)

Magi-X 23-01-2008 11:04

Je te conseil aussi une fois de regarder du coté de JQuery , qui te permet de faire des choses très complexes mais de manière très facile ;)

$c@r 25-01-2008 12:58

Personnellement je te conseil plutôt de te pencher du coté de la librairie prototype qui fournit une api cross-browser et simplifie largement l'utilisation de l'ajax. (utilisé par Jquery)

Samva 25-01-2008 16:02

Youhou coupaing Scar :D \o/

Ouai c'est complètement HS et ALORS ?? :p

Benjy 25-01-2008 18:48

Et hop je trollise : la YUI est ton amie ! :)

$c@r 26-01-2008 11:40

ha ouais, maintenant que je lis plus loin que le sujet, c'est HS :)

maroctech 27-01-2008 17:08

Merci
 
Les mecs, je vous remercie pour vos réponses, j'avais pas le temps pour répondre a vos réponses mais je vous remercie. j'essaierai de voir ce que vous avez poster et je vous tienderai informé.Merci


All times are GMT +2. The time now is 14:23.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.