Désactiver bouton

Résolu
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014 - 10 mai 2010 à 22:51
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 - 11 mai 2010 à 14:16
bonsoir,j'ai un code sur le quelle je travail depuis un moment et chaque fois je m'aperçoit une erreur,mon problème réside dans le fait que je veux bloquer les boutons qui incrémentent et décrémentent la quantité demandée d'un article lorsque je clique sur valider,tout se passe bien si j'ai un seul article dans le panier mais si jamais j'ajoute de plus les boutons s'affichent.le code est le suivant:

<?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 **
*************************************************************************************************/
if ($page->maj) {

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

$showHide = 0; // 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 ="javascript:
document.getElementById('maj').style.display='none';
document.getElementById('com').style.display='block'
document.getElementById('plus').style.display='none'
document.getElementById('minus').style.display='none'
document.getElementById('suupp').disabled='true';";
} else {

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



echo '
<html>
<head>
<title>Consultation Panier</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<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);

echo $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>


Designation,
P.U. (HT),
Quantite,
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 bgcolor="#DAD9D7">
<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;
}
}
?>

5 réponses

Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
11 mai 2010 à 13:43
Je n'ai pas tout ecrit mais je vais te re-expliquer le principe :

Ton idee c'est de test si tu est en mise a jour d'une page et donc si c'est le cas tu adapte ta fonction javascript pour qu'elle s'occupe de cacher tes boutons.

Seulement tu leur a tous donne le meme id a tes bouton c'est ca le souci car quand tu fait un document.getElementById le javasacript ne va pas savoir les differencier et va selement recursivement parcourir l'abre DOM, trouver ton PREMIER bouton ayant l'id demander et dire ah ok le voila.
C'est pour sa que sa marche avec un seul produit vu que tu n'a qu'un seul bouton qui s'appelle "plus" et un seul "minus".

Pour corriger le tir ce que je te mettait au dessus va permettre de differencier tes bouttons en leur donnant un id unique, je vais te detailler ca avec que le bouton plus vu que c'est la meme chose pour le minus :

Voici le lien que tu genere :
[# ]


Comme on peu le voir ton img a pour id "plus" pour chacun de tes articles.
Si tu rajoutes ta variable $numserie a leur id tu vas pouvoir les identifier de maniere sure dans ta page, il faudrai donc generer :

[# ]


maintenant toutes tes images ayant un id comme suit : "plus_tonNumeroDeSerie" tu va pouvoir les cacher toutes en generant le javascript suivant a la place de l'actuel en changeant les lignes que j'ai corriges :

$code ='javascript:'
foreach ($page->panier->article as $numserie => $val) {
...
$code .='
document.getElementById("plus_'.$numserie.'").style.display="none";
document.getElementById("minus_'.$numserie.'").style.display="none";
...
}

Voila :)
3
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
11 mai 2010 à 10:55
Ah j'ai eu du mal comprendre ce que tu voulais dire mais il est pourtant si evident que c'est normal que sa marche avec 1 article et pas x article ! :D

Tu n'as pas remarque une chose importante ici :

$code ="javascript:
document.getElementById('maj').style.display='none';
document.getElementById('com').style.display='block'
document.getElementById('plus').style.display='none'
document.getElementById('minus').style.display='none'
document.getElementById('suupp').disabled='true';";
}

Alors ? :) Non toujours pas ?
D'accord alors en fait ce qui ce passe c'est que ton javascript ne desactive que une seule balise plus et minus car tu utilise getElementById, un id etait unique sa en desactive qu'un seul et c'est le premier trouve ! Meme si tout tes autres boutons on l'id minus sa suffit pas du tout !

Alors voici une solution :

Ca serait de generer l'id de tes boutons comme sa :
'panier->article as $numserie => $val) {
...
$code .='
document.getElementById("plus_'.$numserie.'").style.display="none";
document.getElementById("minus_'.$numserie.'").style.display="none";
...
}

Mais je te conseilles d'essayer d'en trouver une meilleure plutot orientee php ^^
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
11 mai 2010 à 13:26
merci pour ton aide mais pourra tu m'expliquer d'avantage le code car je l'ai essayé mais ça n'a pas marché.merci
0
joujma5 Messages postés 152 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 5 décembre 2014
11 mai 2010 à 13:50
merci bien pour votre aide
0

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

Posez votre question
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
11 mai 2010 à 14:16
De rien :)
0
Rejoignez-nous