Afficher bouton commander

joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014 - 28 avril 2010 à 13:33
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014 - 29 avril 2010 à 13:40
bonjour,
je travaille sur un panier et je ne veux afficher le bouton commander qu'une fois le client a cliqué sur un bouton valider permettant de recalculer le montant d'achat en fonction de la quantité demandée.j'ai essayer d'utiliser javascript mais je ne c pas pourkoi ça ne marche pas,pourtant j'ai testé le code dans une page HTML et il fonctionne.
voici le code:
<?php

include_once 'panier.class.php';




/*************************************************************************************************
** déclarations variables **
*************************************************************************************************/
$contenu = "";
$page = null;


/*************************************************************************************************
** affectations variables **
*************************************************************************************************/
$page->maj = isset($_POST["maj_x"]) ? $_POST["maj_x"] : "";
$page->base ((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] "on") ? "https" : "http")."://".$_SERVER["HTTP_HOST"];
$page->dirname = dirname($_SERVER["SCRIPT_NAME"]);
$page->query = isset($_SERVER["QUERY_STRING"]) ? "?".$_SERVER["QUERY_STRING"]."" : "";
$page->protocol (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] "on") ? "https" : "http";
$page->action = $page->protocol."://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"].$page->query;
$page->panier = isset($_SESSION['panier']) ? unserialize($_SESSION['panier']) : "";

/*************************************************************************************************
** programme principal **
*************************************************************************************************/
print '
<html>
<head>
<title>Consultation Panier</title>
<script language="JavaScript" type="text/JavaScript">

function afficher()
{
var a = document.getElementById("maj").style.display="none";
var b = document.getElementById("com").style.display="";
}
function initial()
{
var c = document.getElementById("com").style.display="none";
}
</script>
</head>

<form name="form1" method="post" action="'.$page->action.'" enctype="application/x-www-form-urlencoded">';

if ($page->maj) maj($page);

$contenu .= Affichages($page);

print $contenu.'
</form>

</html>';
$_SESSION["panier"] = serialize($page->panier);


/*************************************************************************************************
** fonctions **
*************************************************************************************************/
// affichage principal
function Affichages(&$page) {
if ($page->panier == "" || (is_object($page->panier) && $page->panier->getNombreArticle() <= 0)) return '
<center>Votre panier est vide
</center>';

$out = '
<center>


Réf (Num Série),
P.U. (HT),
Quantité,
Total HT,
Total TTC,
Supprimer,
';

foreach ($page->panier->article as $numserie => $val) {
$des1=str_replace(' ','',$numserie);
$des=str_replace('-','',$des1);
$out .= '
----

'.$des.',
'.$page->panier->getPrixArticle($numserie).' DT,
<table cellpadding="0" cellspacing="0" border="0">
----, panier->getQteArticle($numserie).'\" readonly size=\"4\" /></td>
panier->getTotalFinalTTC().'></td>

</tr>
<tr>
<td colspan="6"><center><hr width="20%"/></center></td>
</tr>
</table>
</center>';$_SESSION["tot"] = $page->panier->getTotalFinalTTC();

return $out;
}

function maj(&$page) {
foreach ($_POST as $cle => $valeur) {
if (preg_match("/suppr_(.*)/", $cle, $res)) $page->panier->supprimerArticle($res[1]);
if (preg_match("/qte_(.*)/", $cle, $res)) $page->panier->miseAJourQteArticle($res[1], $valeur);
}

if ($page->panier->getNombreArticle() <= 0) {
$page->panier->destroy();
$page->panier = null;
}
}
?>

8 réponses

devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
28 avril 2010 à 14:06
est ce que apres avoir cliquer sur le bouton ton script submit directement les donnés si oui essaye de faire un return false
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
28 avril 2010 à 14:35
le bouton valider permet d'actualiser la page tt en mettant à jour le total d'achat en fonction de la quantité,mon problème est qu'une fois ce bouton soit cliqué,je le cache et j'affiche un bouton commander permettant d'envoyer les données vers une page commande.j'ai utilisé return false mais ça n'a rien changé.
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
28 avril 2010 à 15:16
le probleme viens que si tu recharge la page javascript ne saura plus si tu a cliquer sur le bouton valider alors j'espere que la solution que je vais te proposer va te convenir
la premiere etape est de faire ton
if ($page->maj) {
maj($page);
}
avant le debut de la balise <html>
comme c'est php qui gere l'affichage ca deviens facile sert toi d'une variable qui vas dire que t'a deja fais le calcul et on doit faire un affichage du boutton commander et cacher celui de valider la variable en exemple est
$showHide donc ton if ($page->maj) maj($page);

va devenir
if ($page->maj) {
maj($page);
$showHide=true;
}
ensuite tu fait
if ($showHide) {
//c'est a dire que on doit permutter l'affichage
//comme c'est quelque ligne de code on peut les placer dans une variable
$code ="
document.getElementById('maj').style.display='none';
document.getElementById('com').style.display='block';";
} else {
$code ="
document.getElementById('maj').style.display='block';
document.getElementById('com').style.display='none';";
}


<script>
function check() {

$code;
}

...
et la tu fait $contenu
</html>

si cette soluce repond a ton besoin je peut remettre le code d'une maniere propre
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 avril 2010 à 11:53
désolé j'ai pas bien assimiler ta solution pourra tu me l'expliquer d'avantage.merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
29 avril 2010 à 12:20
ok c'est partie je suis ton script est tu est celui qui m'a charger pour la premiere fois dans son navigateur

ok pour le premier point :

qu'est-ce que je doit faire?

a priorie je doi t'afficher un formulaire dans lequel tu vas saisir tes données

ok pour le deuxieme point

maintenant moi je dispose de deux boutton "valider" et "commander" sauf que je ne doit pas t'afficher commander que lorsque t'a deja cliquer sur valider

ok pour le troisieme point

alors t'a terminer de saisir tu clique sur valider le navigateur me recharge une deuxieme fois

c'est la que tous vas se jouer
deja avec
if ($page->maj) {

}
je sais maintenant que le bouton valider a été cliquer

donc ce qui reste a faire c'est cacher "valider" et afficher "commander"
ce qui donne
$code ="
document.getElementById('maj').style.display='none';
document.getElementById('com').style.display='block';";


j'espere que c'est clair mais pour t'aider plus je reposte ton code avec les modifications

<?php
/*************************************************************************************************
** programme principal **
*************************************************************************************************/
if ($page->maj) {

maj($page);
$showHide = true; //on doit maintenant afficher commander
} else {

$showHide = false; // on doit afficher valider
}

// si on doit afficher commander on cree une variable $code qui va contenir le code du javascript
// permettant d'afficher le bouton "commande" et de cacher le bouton "valider"
// sinon on crée une variable $code qui permet de faire le contraire
if ($showHide) {

$code ="
document.getElementById('maj').style.display='none';
document.getElementById('com').style.display='block';";

} else {
$code ="
document.getElementById('maj').style.display='block';
document.getElementById('com').style.display='none';";
}



print '
<html>
<head>
<title>Consultation Panier</title>
<script language="JavaScript" type="text/JavaScript">

function check() {

'.$code.';
}
</script>
</head>

<form name="form1" method="post" action="'.$page->action.'" enctype="application/x-www-form-urlencoded">';



$contenu .= Affichages($page);

print $contenu.'
</form>

</html>';
$_SESSION["panier"] = serialize($page->panier);


/*************************************************************************************************
** fonctions **
*************************************************************************************************/
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 avril 2010 à 13:06
je l'ai testé tt comme comme tu me l'a indiqué mais ça n'a pas marché ,désolé si je te dérange.
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
29 avril 2010 à 13:33
debog avec sa pour voir dans lequel on rentre le if ou le else et dit moi ce que ca donne
if ($showHide) {
echo "if";
$code ="
document.getElementById('maj').style.display='none';
document.getElementById('com').style.display='block';";

} else {
echo "else";
$code ="
document.getElementById('maj').style.display='block';
document.getElementById('com').style.display='none';";
}
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
29 avril 2010 à 13:40
il n'affiche que le "if" même si je clique sur le bouton "valider"
0
Rejoignez-nous