Exécuter page php en java sans l'ouverture de la page
11 messages
• Page 1 sur 1
Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics
-

sigma2008 - WRInaute occasionnel

- Messages: 442
- Inscription: 18 Juin 2008
Exécuter page php en java sans l'ouverture de la page
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 :
Le problème est que ce code ouvre la page panier et moi je veux exécuter la page (panier.php?action=ajout&l=2&q=3&p=4) sans quelle soit affichée !!
comment faire ?
merci
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&l=2&q=3&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&l=2&q=3&p=4) sans quelle soit affichée !!
comment faire ?
merci
- passion
- WRInaute accro

- Messages: 3125
- Inscription: 6 Jan 2006
Re: Exécuter page php en java sans l'ouverture de la page
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 :
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?
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?
-

sigma2008 - WRInaute occasionnel

- Messages: 442
- Inscription: 18 Juin 2008
Re: Exécuter page php en java sans l'ouverture de la page
Bonjour,
Merci de votre réponse
moi j'utilise les variable action=ajout&l=2&q=3&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
Merci de votre réponse
moi j'utilise les variable action=ajout&l=2&q=3&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

- Messages: 3125
- Inscription: 6 Jan 2006
Re: Exécuter page php en java sans l'ouverture de la page
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
* 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&l=2&q=3&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:
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...
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!
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&l=2&q=3&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+"&q="+el2+"&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

- Messages: 442
- Inscription: 18 Juin 2008
Re: Exécuter page php en java sans l'ouverture de la page
Voici ce que je viens de faire :
sur ma page index :
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 :
Quand je clique sur "ajouter au panier" rien ne se passe ????
merci beaucoup de votre aide

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
- passion
- WRInaute accro

- Messages: 3125
- Inscription: 6 Jan 2006
Re: Exécuter page php en java sans l'ouverture de la page
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 :
Côté "panier.js"
Faire attention au chemin de ton include_once("fonctions-panier.php"); qu'il soit juste !
Voilà
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+"&q="+el2+"&p="+el3+"&action="+el4);
}
}
}
Faire attention au chemin de ton include_once("fonctions-panier.php"); qu'il soit juste !
Voilà
-

sigma2008 - WRInaute occasionnel

- Messages: 442
- Inscription: 18 Juin 2008
Re: Exécuter page php en java sans l'ouverture de la page
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 :
La page panier.js :
panier.php :
fonction-panier.php :
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+"&q="+el2+"&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

- Messages: 442
- Inscription: 18 Juin 2008
Re: Exécuter page php en java sans l'ouverture de la page
Merci beaucoup beaucoup
ca marche pas chez moi et c'est mon projet de fin d'étude
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:
panier.php :
panier.js
fonction-panier.php (elle est inclus sur panier.php)
ca marche pas chez moi et c'est mon projet de fin d'étude
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+"&q="+el2+"&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

- Messages: 4378
- Inscription: 14 Mai 2003
Re: Exécuter page php en java sans l'ouverture de la page
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
Et pour le titre du topic, java != javascript
-

sigma2008 - WRInaute occasionnel

- Messages: 442
- Inscription: 18 Juin 2008
Re: Exécuter page php en java sans l'ouverture de la page
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 ???? !!!!! ;(
Pouvez vous m'aider je crois qu'il y a une petite faute le problème où est elle ???? !!!!! ;(
11 messages
• Page 1 sur 1
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 :
- executer un script C++ sous PHP !
- Comment exécuter index.php
- executer fichier php en ligne de commande
- Executer une commande linux depuis PHP
- Ajax : Executer un code php via des boutons input
- Résolu : Executer un script php à la réception d'un mail
- Comment executer du code php dans un template html de phpbb3
- Résolution écran php et java
- plusieurs sites ! php ou java ?
- svp aide code (php ou java..)
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
