Exécuter page php en java sans l'ouverture de la page

Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics


sigma2008
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 442
Inscription: 18 Juin 2008

Exécuter page php en java sans l'ouverture de la page

Message le Ven Avr 30, 2010 0:41

Bonjour, j'utilise ce site : -http://jcrozier.developpez.com/articles/web/panier/ pour créer un panier
J'ai une page panier.php et une autre inclus dans panier (fonctions-panier.php)
j'ai une page index où j'ai placé un code d'appel à la page panier :
Code: Tout sélectionner
<a href="panier.php?action=ajout&amp;l=2&amp;q=3&amp;p=4"onclick="window.open(this.href, '',
'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=600, height=350'); return false;">ajouter</a>


Le problème est que ce code ouvre la page panier et moi je veux exécuter la page (panier.php?action=ajout&amp;l=2&amp;q=3&amp;p=4) sans quelle soit affichée !!
comment faire ?
merci

passion
WRInaute accro
WRInaute accro
 
Messages: 3125
Inscription: 6 Jan 2006

Re: Exécuter page php en java sans l'ouverture de la page

Message le Ven Avr 30, 2010 8:59

bah c'est normal que l'appel de ton "onClick" ouvre une page puisque tu as "window.open".
En parlant de java, tu fais certainement allusion à du javascript. Alors justement pourquoi ne pas faire appel à de l'ajax?
Genre :
Code: Tout sélectionner
<a href="#" onClick="maFonctionAjax($arg1,$arg2,$arg3);">ajout panier</a>

De cette façon, l'action du clic appellera ta fonction sur ton panier avec les éléments "$arg1" que tu auras passé!
Le traitement se fera en interne via de l'ajax.

Suis-je clair? :lol:


sigma2008
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 442
Inscription: 18 Juin 2008

Re: Exécuter page php en java sans l'ouverture de la page

Message le Ven Avr 30, 2010 11:59

Bonjour,
Merci de votre réponse :D
moi j'utilise les variable action=ajout&amp;l=2&amp;q=3&amp;p=4 et les éxécuter sur la page panier.php
dans le code que tu ma donné où doit-je insérer ses variables et le nom de la page panier.php ?
Merci d'avance

passion
WRInaute accro
WRInaute accro
 
Messages: 3125
Inscription: 6 Jan 2006

Re: Exécuter page php en java sans l'ouverture de la page

Message le Ven Avr 30, 2010 13:09

ben écoute c'est un chouilla plus long quand tu fais de l'ajax car justement tu as des traitements internes... mais bon, je suis bon prince alors je vais essayer de te mâcher le travail ;)

1- côté "client" => ajout du script pour l'execution
Code: Tout sélectionner
<a href="#" onClick="ajoutPanier(<?php echo $l; ?>,<?php echo $q; ?>,<?php echo $p; ?>);">ajout panier</a>

* les variables $l,$q et $p sont tes infos que tu récupères. (je fais référence à ton url de départ : action=ajout&amp;l=2&amp;q=3&amp;p=4) "action" on s'en fout maintenant

2- côté ajax maintenant.
Si tu peux pour ne pas surcharger le poids de ta page et faciliter ultérieurement des modifications sur ton script, mets le code ajax dans un fichier js séparement appelé genre : "panier.js" et dans celui-ci tu vas mettre:
Code: Tout sélectionner
//fonction pour préparer les appels ajax
function getXhr(){
   var xhr = null;
   if(window.XMLHttpRequest) // Firefox et autres
      xhr = new XMLHttpRequest();
   else if(window.ActiveXObject){ // Internet Explorer
      try {
         xhr = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
   }
   else { // XMLHttpRequest non supporté par le navigateur
      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      xhr = false;
   }
   return xhr;
}

//Maintenant appel à ta fonction de traitement...
function ajoutPanier(el1,el2,el3){
   var xhr = getXhr();
   // On défini ce qu'on va faire quand on aura la réponse
   xhr.onreadystatechange = function(){
      // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
      if(xhr.readyState == 4 && xhr.status == 200){
         // Ici on va voir comment faire du post
         xhr.open("POST","ajout-panier.php",true);
         // ne pas oublier ça pour le post
         xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         // ne pas oublier de poster les arguments
         // ici, tes 3 valeur de départ à savoir : el1,el2,el3
         xhr.send("l="+el1+"&amp;q="+el2+"&amp;p="+el3);
      }
   }
}


Maintenant il te reste plus qu'à faire ton fichier "ajout-panier.php" ou tu vas récupérer tes arguments en POST et faire les traitements php qu'il convient : INSERT INTO sql ect...
Code: Tout sélectionner
$l = $_POST['l'];
$q = $_POST['q'];
$p = $_POST['p'];


Je t'ai vraiment mâcher le travail ;
Maintenant à ta charge de faire les bons traitement pour sécuriser tes données mais là, tu as l'essentiel !

NOTA : tu feras attention, pour que cela fonctionne la façon dont je l'ai fait, les fichiers "panier.js" et "ajout-panier.php" doivent être dans le même répertoire.

Bonne continuation!


sigma2008
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 442
Inscription: 18 Juin 2008

Re: Exécuter page php en java sans l'ouverture de la page

Message le Ven Avr 30, 2010 13:46

supprimé
Dernière édition par sigma2008 le Ven Avr 30, 2010 14:41, édité 1 fois.


sigma2008
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 442
Inscription: 18 Juin 2008

Re: Exécuter page php en java sans l'ouverture de la page

Message le Ven Avr 30, 2010 14:06

Voici ce que je viens de faire :
sur ma page index :
Code: Tout sélectionner
<title>title</title>
<script type="text/javascript" src="panier.js"></script>
</head>
<body>
<? php
$l=2;
$q=3;
$p=4;
?>
<a href="#" onClick="ajoutPanier(<?php echo $l; ?>,<?php echo $q; ?>,<?php echo $p; ?>);">ajout panier</a>

Sur la page panier.js j'ai mis le code que vous m'avez donné et j'ai changé ajout-panier.php par panier.php
le contenu de panier.php est :
Code: Tout sélectionner
<?php
session_start();
include_once("fonctions-panier.php");

$erreur = false;
$l = $_POST['l'];
$q = $_POST['q'];
$p = $_POST['p'];
$action = (isset($_POST['action'])? $_POST['action']:  (isset($_GET['action'])? $_GET['action']:null )) ;
if($action !== null)
{
   if(!in_array($action,array('ajout', 'suppression', 'refresh')))
   $erreur=true;

   //récuperation des variables en POST ou GET
   $l = (isset($_POST['l'])? $_POST['l']:  (isset($_GET['l'])? $_GET['l']:null )) ;
   $p = (isset($_POST['p'])? $_POST['p']:  (isset($_GET['p'])? $_GET['p']:null )) ;
   $q = (isset($_POST['q'])? $_POST['q']:  (isset($_GET['q'])? $_GET['q']:null )) ;

   //Suppression des espaces verticaux
   $l = preg_replace('#\v#', '',$l);
   //On verifie que $p soit un float
   $p = floatval($p);

   //On traite $q qui peut etre un entier simple ou un tableau d'entier
   
   if (is_array($q)){
      $QteArticle = array();
      $i=0;
      foreach ($q as $contenu){
         $QteArticle[$i++] = intval($contenu);
      }
   }
   else
   $q = intval($q);
   
}

if (!$erreur){
   switch($action){
      Case "ajout":
         ajouterArticle($l,$q,$p);
         break;

      Case "suppression":
         supprimerArticle($l);
         break;

      Case "refresh" :
         for ($i = 0 ; $i < count($QteArticle) ; $i++)
         {
            modifierQTeArticle($_SESSION['panier']['libelleProduit'][$i],round($QteArticle[$i]));
         }
         break;

      Default:
         break;
   }
}

echo '<?xml version="1.0" encoding="utf-8"?>';?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Votre panier</title>
</head>
<body>

<form method="post" action="panier.php">
<table style="width: 400px">
   <tr>
      <td colspan="4">Votre panier</td>
   </tr>
   <tr>
      <td>Libellé</td>
      <td>Quantité</td>
      <td>Prix Unitaire</td>
      <td>Action</td>
   </tr>


   <?php
   if (creationPanier())
   {
      $nbArticles=count($_SESSION['panier']['libelleProduit']);
      if ($nbArticles <= 0)
      echo "<tr><td>Votre panier est vide </ td></tr>";
      else
      {
         for ($i=0 ;$i < $nbArticles ; $i++)
         {
            echo "<tr>";
            echo "<td>".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</ td>";
            echo "<td><input type=\"text\" size=\"4\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\"/></td>";
            echo "<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."</td>";
            echo "<td><a href=\"".htmlspecialchars("panier.php?action=suppression&l=".rawurlencode($_SESSION['panier']['libelleProduit'][$i]))."\">XX</a></td>";
            echo "</tr>";
         }

         echo "<tr><td colspan=\"2\"> </td>";
         echo "<td colspan=\"2\">";
         echo "Total : ".MontantGlobal();
         echo "</td></tr>";

         echo "<tr><td colspan=\"4\">";
         echo "<input type=\"submit\" value=\"Rafraichir\"/>";
         echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";

         echo "</td></tr>";
      }
   }
   ?>
</table>
</form>
</body>
</html>


Quand je clique sur "ajouter au panier" rien ne se passe ????
merci beaucoup de votre aide :oops: :oops: :oops: :oops: :oops:

passion
WRInaute accro
WRInaute accro
 
Messages: 3125
Inscription: 6 Jan 2006

Re: Exécuter page php en java sans l'ouverture de la page

Message le Ven Avr 30, 2010 14:26

c'est normal que cela ne fonctionne pas puisque ta fonction de départ côté client passe 3 arguments à savoir : $l,$s et $p alors que dans ton traitement php via panier.php, tu pars du principe que la varaible "$_POST['action']" doit être renseignée pour que la condition puisse fonctionner !

c'est pas bon !

Dans ces cas, tu dois modifier les script d'appel :
Code: Tout sélectionner
<title>title</title>
<script type="text/javascript" src="panier.js"></script>
</head>
<body>
<? php
$l=2;
$q=3;
$p=4;
$action='ajout'; //(par ex)
?>
<a href="#" onClick="ajoutPanier(<?php echo $l; ?>,<?php echo $q; ?>,<?php echo $p; ?>,<?php echo $action; ?>);">ajout panier</a>


Côté "panier.js"
Code: Tout sélectionner
function ajoutPanier(el1,el2,el3,el4){
   var xhr = getXhr();
   // On défini ce qu'on va faire quand on aura la réponse
   xhr.onreadystatechange = function(){
      // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
      if(xhr.readyState == 4 && xhr.status == 200){
         // Ici on va voir comment faire du post
         xhr.open("POST","ajout-panier.php",true);
         // ne pas oublier ça pour le post
         xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         // ne pas oublier de poster les arguments
         // ici, tes 4 valeurs de départ à savoir : el1,el2,el3 et la nouvelle el4
         xhr.send("l="+el1+"&amp;q="+el2+"&amp;p="+el3+"&amp;action="+el4);
      }
   }
}


Faire attention au chemin de ton include_once("fonctions-panier.php"); qu'il soit juste !

Voilà ;)


sigma2008
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 442
Inscription: 18 Juin 2008

Re: Exécuter page php en java sans l'ouverture de la page

Message le Sam Mai 01, 2010 14:45

Bonjour, un grand grand merci.
Ca ne fonctionne pas, je ne sais pas où est le problème, c'est mon projet de fin d'étude. voici tous mes pages qui se trouvent dans le même dossier sous wamp:
la page index.php :
Code: Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Rose panier</title>
<script type="text/javascript" src="panier.js"></script>
</head>
<body>
<? php
$l=2;
$q=3;
$p=4;
$action='ajout';
?>
<a href="#" onClick="ajoutPanier(<?php echo $l; ?>,<?php echo $q; ?>,<?php echo $p; ?>,<?php echo $action; ?>);">ajout panier</a>
</body>
</html>


La page panier.js :
Code: Tout sélectionner
//fonction pour préparer les appels ajax
function getXhr(){
   var xhr = null;
   if(window.XMLHttpRequest) // Firefox et autres
      xhr = new XMLHttpRequest();
   else if(window.ActiveXObject){ // Internet Explorer
      try {
         xhr = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
   }
   else { // XMLHttpRequest non supporté par le navigateur
      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      xhr = false;
   }
   return xhr;
}

//Maintenant appel à ta fonction de traitement...
function ajoutPanier(el1,el2,el3,el4){
   var xhr = getXhr();
   // On défini ce qu'on va faire quand on aura la réponse
   xhr.onreadystatechange = function(){
      // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
      if(xhr.readyState == 4 && xhr.status == 200){
         // Ici on va voir comment faire du post
         xhr.open("POST","panier.php",true);
         // ne pas oublier ça pour le post
         xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         // ne pas oublier de poster les arguments
         // ici, tes 4 valeurs de départ à savoir : el1,el2,el3 et la nouvelle el4
         xhr.send("l="+el1+"&amp;q="+el2+"&amp;p="+el3+"&action="+el4);
      }
   }
}


panier.php :
Code: Tout sélectionner
<?php
session_start();
include_once("fonctions-panier.php");

$erreur = false;

$action = (isset($_POST['action'])? $_POST['action']:  (isset($_GET['action'])? $_GET['action']:null )) ;
if($action !== null)
{
   if(!in_array($action,array('ajout', 'suppression', 'refresh')))
   $erreur=true;

   //récuperation des variables en POST ou GET
   $l = (isset($_POST['l'])? $_POST['l']:  (isset($_GET['l'])? $_GET['l']:null )) ;
   $p = (isset($_POST['p'])? $_POST['p']:  (isset($_GET['p'])? $_GET['p']:null )) ;
   $q = (isset($_POST['q'])? $_POST['q']:  (isset($_GET['q'])? $_GET['q']:null )) ;

   //Suppression des espaces verticaux
   $l = preg_replace('#\v#', '',$l);
   //On verifie que $p soit un float
   $p = floatval($p);

   //On traite $q qui peut etre un entier simple ou un tableau d'entier
   
   if (is_array($q)){
      $QteArticle = array();
      $i=0;
      foreach ($q as $contenu){
         $QteArticle[$i++] = intval($contenu);
      }
   }
   else
   $q = intval($q);
   
}

if (!$erreur){
   switch($action){
      Case "ajout":
         ajouterArticle($l,$q,$p);
         break;

      Case "suppression":
         supprimerArticle($l);
         break;

      Case "refresh" :
         for ($i = 0 ; $i < count($QteArticle) ; $i++)
         {
            modifierQTeArticle($_SESSION['panier']['libelleProduit'][$i],round($QteArticle[$i]));
         }
         break;

      Default:
         break;
   }
}

echo '<?xml version="1.0" encoding="utf-8"?>';?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Votre panier</title>
</head>
<body>

<form method="post" action="panier.php">
<table style="width: 400px">
   <tr>
      <td colspan="4">Votre panier</td>
   </tr>
   <tr>
      <td>Libellé</td>
      <td>Quantité</td>
      <td>Prix Unitaire</td>
      <td>Action</td>
   </tr>


   <?php
   if (creationPanier())
   {
      $nbArticles=count($_SESSION['panier']['libelleProduit']);
      if ($nbArticles <= 0)
      echo "<tr><td>Votre panier est vide </ td></tr>";
      else
      {
         for ($i=0 ;$i < $nbArticles ; $i++)
         {
            echo "<tr>";
            echo "<td>".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</ td>";
            echo "<td><input type=\"text\" size=\"4\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\"/></td>";
            echo "<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."</td>";
            echo "<td><a href=\"".htmlspecialchars("panier.php?action=suppression&l=".rawurlencode($_SESSION['panier']['libelleProduit'][$i]))."\">XX</a></td>";
            echo "</tr>";
         }

         echo "<tr><td colspan=\"2\"> </td>";
         echo "<td colspan=\"2\">";
         echo "Total : ".MontantGlobal();
         echo "</td></tr>";

         echo "<tr><td colspan=\"4\">";
         echo "<input type=\"submit\" value=\"Rafraichir\"/>";
         echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";

         echo "</td></tr>";
      }
   }
   ?>
</table>
</form>
</body>
</html>


fonction-panier.php :
Code: Tout sélectionner
<?php
/**
* Verifie si le panier existe, le créé sinon
* @return booleen
*/
function creationPanier(){
   if (!isset($_SESSION['panier'])){
      $_SESSION['panier']=array();
      $_SESSION['panier']['libelleProduit'] = array();
      $_SESSION['panier']['qteProduit'] = array();
      $_SESSION['panier']['prixProduit'] = array();
      $_SESSION['panier']['verrou'] = false;
   }
   return true;
}


/**
* Ajoute un article dans le panier
* @param string $libelleProduit
* @param int $qteProduit
* @param float $prixProduit
* @return void
*/
function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){

   //Si le panier existe
   if (creationPanier() && !isVerrouille())
   {
      //Si le produit existe déjà on ajoute seulement la quantité
      $positionProduit = array_search($libelleProduit,  $_SESSION['panier']['libelleProduit']);

      if ($positionProduit !== false)
      {
         $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
      }
      else
      {
         //Sinon on ajoute le produit
         array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
         array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
         array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
      }
   }
   else
   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}



/**
* Modifie la quantité d'un article
* @param $libelleProduit
* @param $qteProduit
* @return void
*/
function modifierQTeArticle($libelleProduit,$qteProduit){
   //Si le panier éxiste
   if (creationPanier() && !isVerrouille())
   {
      //Si la quantité est positive on modifie sinon on supprime l'article
      if ($qteProduit > 0)
      {
         //Recharche du produit dans le panier
         $positionProduit = array_search($libelleProduit,  $_SESSION['panier']['libelleProduit']);

         if ($positionProduit !== false)
         {
            $_SESSION['panier']['qteProduit'][$positionProduit] = $qteProduit ;
         }
      }
      else
      supprimerArticle($libelleProduit);
   }
   else
   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}

/**
* Supprime un article du panier
* @param $libelleProduit
* @return unknown_type
*/
function supprimerArticle($libelleProduit){
   //Si le panier existe
   if (creationPanier() && !isVerrouille())
   {
      //Nous allons passer par un panier temporaire
      $tmp=array();
      $tmp['libelleProduit'] = array();
      $tmp['qteProduit'] = array();
      $tmp['prixProduit'] = array();
      $tmp['verrou'] = $_SESSION['panier']['verrou'];

      for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
      {
         if ($_SESSION['panier']['libelleProduit'][$i] !== $libelleProduit)
         {
            array_push( $tmp['libelleProduit'],$_SESSION['panier']['libelleProduit'][$i]);
            array_push( $tmp['qteProduit'],$_SESSION['panier']['qteProduit'][$i]);
            array_push( $tmp['prixProduit'],$_SESSION['panier']['prixProduit'][$i]);
         }

      }
      //On remplace le panier en session par notre panier temporaire à jour
      $_SESSION['panier'] =  $tmp;
      //On efface notre panier temporaire
      unset($tmp);
   }
   else
   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}


/**
* Montant total du panier
* @return int
*/
function MontantGlobal(){
   $total=0;
   for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
   {
      $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i];
   }
   return $total;
}


/**
* Fonction de suppression du panier
* @return void
*/
function supprimePanier(){
   unset($_SESSION['panier']);
}

/**
* Permet de savoir si le panier est verrouillé
* @return booleen
*/
function isVerrouille(){
   if (isset($_SESSION['panier']) && $_SESSION['panier']['verrou'])
   return true;
   else
   return false;
}

/**
* Compte le nombre d'articles différents dans le panier
* @return int
*/
function compterArticles()
{
   if (isset($_SESSION['panier']))
   return count($_SESSION['panier']['libelleProduit']);
   else
   return 0;

}

?>


sigma2008
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 442
Inscription: 18 Juin 2008

Re: Exécuter page php en java sans l'ouverture de la page

Message le Sam Mai 01, 2010 14:55

Merci beaucoup beaucoup
ca marche pas chez moi et c'est mon projet de fin d'étude :oops:
Voici tous mes pages (il y a que la partie Ajax qui ne fonctionne pas, quand je clique sur ajouter au panier y a rien qui bouge )

index.php:
Code: Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Rose panier</title>
<script type="text/javascript" src="panier.js"></script>
</head>
<body>
<? php
$l=2;
$q=3;
$p=4;
$action='ajout';
?>
<a href="#" onClick="ajoutPanier(<?php echo $l; ?>,<?php echo $q; ?>,<?php echo $p; ?>,<?php echo $action; ?>);">ajout panier</a>
</body>
</html>


panier.php :

Code: Tout sélectionner
<?php
session_start();
include_once("fonctions-panier.php");

$erreur = false;

$action = (isset($_POST['action'])? $_POST['action']:  (isset($_GET['action'])? $_GET['action']:null )) ;
if($action !== null)
{
   if(!in_array($action,array('ajout', 'suppression', 'refresh')))
   $erreur=true;

   //récuperation des variables en POST ou GET
   $l = (isset($_POST['l'])? $_POST['l']:  (isset($_GET['l'])? $_GET['l']:null )) ;
   $p = (isset($_POST['p'])? $_POST['p']:  (isset($_GET['p'])? $_GET['p']:null )) ;
   $q = (isset($_POST['q'])? $_POST['q']:  (isset($_GET['q'])? $_GET['q']:null )) ;

   //Suppression des espaces verticaux
   $l = preg_replace('#\v#', '',$l);
   //On verifie que $p soit un float
   $p = floatval($p);

   //On traite $q qui peut etre un entier simple ou un tableau d'entier
   
   if (is_array($q)){
      $QteArticle = array();
      $i=0;
      foreach ($q as $contenu){
         $QteArticle[$i++] = intval($contenu);
      }
   }
   else
   $q = intval($q);
   
}

if (!$erreur){
   switch($action){
      Case "ajout":
         ajouterArticle($l,$q,$p);
         break;

      Case "suppression":
         supprimerArticle($l);
         break;

      Case "refresh" :
         for ($i = 0 ; $i < count($QteArticle) ; $i++)
         {
            modifierQTeArticle($_SESSION['panier']['libelleProduit'][$i],round($QteArticle[$i]));
         }
         break;

      Default:
         break;
   }
}

echo '<?xml version="1.0" encoding="utf-8"?>';?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Votre panier</title>
</head>
<body>

<form method="post" action="panier.php">
<table style="width: 400px">
   <tr>
      <td colspan="4">Votre panier</td>
   </tr>
   <tr>
      <td>Libellé</td>
      <td>Quantité</td>
      <td>Prix Unitaire</td>
      <td>Action</td>
   </tr>


   <?php
   if (creationPanier())
   {
      $nbArticles=count($_SESSION['panier']['libelleProduit']);
      if ($nbArticles <= 0)
      echo "<tr><td>Votre panier est vide </ td></tr>";
      else
      {
         for ($i=0 ;$i < $nbArticles ; $i++)
         {
            echo "<tr>";
            echo "<td>".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</ td>";
            echo "<td><input type=\"text\" size=\"4\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\"/></td>";
            echo "<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."</td>";
            echo "<td><a href=\"".htmlspecialchars("panier.php?action=suppression&l=".rawurlencode($_SESSION['panier']['libelleProduit'][$i]))."\">XX</a></td>";
            echo "</tr>";
         }

         echo "<tr><td colspan=\"2\"> </td>";
         echo "<td colspan=\"2\">";
         echo "Total : ".MontantGlobal();
         echo "</td></tr>";

         echo "<tr><td colspan=\"4\">";
         echo "<input type=\"submit\" value=\"Rafraichir\"/>";
         echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";

         echo "</td></tr>";
      }
   }
   ?>
</table>
</form>
</body>
</html>


panier.js
Code: Tout sélectionner
//fonction pour préparer les appels ajax
function getXhr(){
   var xhr = null;
   if(window.XMLHttpRequest) // Firefox et autres
      xhr = new XMLHttpRequest();
   else if(window.ActiveXObject){ // Internet Explorer
      try {
         xhr = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
   }
   else { // XMLHttpRequest non supporté par le navigateur
      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      xhr = false;
   }
   return xhr;
}

//Maintenant appel à ta fonction de traitement...
function ajoutPanier(el1,el2,el3,el4){
   var xhr = getXhr();
   // On défini ce qu'on va faire quand on aura la réponse
   xhr.onreadystatechange = function(){
      // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
      if(xhr.readyState == 4 && xhr.status == 200){
         // Ici on va voir comment faire du post
         xhr.open("POST","panier.php",true);
         // ne pas oublier ça pour le post
         xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         // ne pas oublier de poster les arguments
         // ici, tes 4 valeurs de départ à savoir : el1,el2,el3 et la nouvelle el4
         xhr.send("l="+el1+"&amp;q="+el2+"&amp;p="+el3+"&action="+el4);
      }
   }
}


fonction-panier.php (elle est inclus sur panier.php)
Code: Tout sélectionner
<?php
/**
* Verifie si le panier existe, le créé sinon
* @return booleen
*/
function creationPanier(){
   if (!isset($_SESSION['panier'])){
      $_SESSION['panier']=array();
      $_SESSION['panier']['libelleProduit'] = array();
      $_SESSION['panier']['qteProduit'] = array();
      $_SESSION['panier']['prixProduit'] = array();
      $_SESSION['panier']['verrou'] = false;
   }
   return true;
}


/**
* Ajoute un article dans le panier
* @param string $libelleProduit
* @param int $qteProduit
* @param float $prixProduit
* @return void
*/
function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){

   //Si le panier existe
   if (creationPanier() && !isVerrouille())
   {
      //Si le produit existe déjà on ajoute seulement la quantité
      $positionProduit = array_search($libelleProduit,  $_SESSION['panier']['libelleProduit']);

      if ($positionProduit !== false)
      {
         $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
      }
      else
      {
         //Sinon on ajoute le produit
         array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
         array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
         array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
      }
   }
   else
   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}



/**
* Modifie la quantité d'un article
* @param $libelleProduit
* @param $qteProduit
* @return void
*/
function modifierQTeArticle($libelleProduit,$qteProduit){
   //Si le panier éxiste
   if (creationPanier() && !isVerrouille())
   {
      //Si la quantité est positive on modifie sinon on supprime l'article
      if ($qteProduit > 0)
      {
         //Recharche du produit dans le panier
         $positionProduit = array_search($libelleProduit,  $_SESSION['panier']['libelleProduit']);

         if ($positionProduit !== false)
         {
            $_SESSION['panier']['qteProduit'][$positionProduit] = $qteProduit ;
         }
      }
      else
      supprimerArticle($libelleProduit);
   }
   else
   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}

/**
* Supprime un article du panier
* @param $libelleProduit
* @return unknown_type
*/
function supprimerArticle($libelleProduit){
   //Si le panier existe
   if (creationPanier() && !isVerrouille())
   {
      //Nous allons passer par un panier temporaire
      $tmp=array();
      $tmp['libelleProduit'] = array();
      $tmp['qteProduit'] = array();
      $tmp['prixProduit'] = array();
      $tmp['verrou'] = $_SESSION['panier']['verrou'];

      for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
      {
         if ($_SESSION['panier']['libelleProduit'][$i] !== $libelleProduit)
         {
            array_push( $tmp['libelleProduit'],$_SESSION['panier']['libelleProduit'][$i]);
            array_push( $tmp['qteProduit'],$_SESSION['panier']['qteProduit'][$i]);
            array_push( $tmp['prixProduit'],$_SESSION['panier']['prixProduit'][$i]);
         }

      }
      //On remplace le panier en session par notre panier temporaire à jour
      $_SESSION['panier'] =  $tmp;
      //On efface notre panier temporaire
      unset($tmp);
   }
   else
   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}


/**
* Montant total du panier
* @return int
*/
function MontantGlobal(){
   $total=0;
   for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
   {
      $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i];
   }
   return $total;
}


/**
* Fonction de suppression du panier
* @return void
*/
function supprimePanier(){
   unset($_SESSION['panier']);
}

/**
* Permet de savoir si le panier est verrouillé
* @return booleen
*/
function isVerrouille(){
   if (isset($_SESSION['panier']) && $_SESSION['panier']['verrou'])
   return true;
   else
   return false;
}

/**
* Compte le nombre d'articles différents dans le panier
* @return int
*/
function compterArticles()
{
   if (isset($_SESSION['panier']))
   return count($_SESSION['panier']['libelleProduit']);
   else
   return 0;

}

?>


spout
WRInaute accro
WRInaute accro
 
Messages: 4378
Inscription: 14 Mai 2003

Re: Exécuter page php en java sans l'ouverture de la page

Message le Sam Mai 01, 2010 15:54

Un peu hors sujet: pour faire un panier PHP/AJAX (unobstrusif) du même style il y a ce script tout fait: http://conceptlogic.com/jcart/

Et pour le titre du topic, java != javascript :wink:


sigma2008
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 442
Inscription: 18 Juin 2008

Re: Exécuter page php en java sans l'ouverture de la page

Message le Sam Mai 01, 2010 17:14

Merci beaucoup, mais je veux bien résoudre mon problème j'ai bien parlé avec mon encadreur et il a mis du temps pour qu'il accepte que j'utilise ce code.
Pouvez vous m'aider je crois qu'il y a une petite faute le problème où est elle ???? !!!!! ;(


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité