Transmettre chiffre bouton quantité dans une autre page

Résolu/Fermé
patricia@84 Messages postés 106 Date d'inscription vendredi 27 novembre 2015 Statut Membre Dernière intervention 24 septembre 2023 - 27 nov. 2015 à 12:13
patricia@84 Messages postés 106 Date d'inscription vendredi 27 novembre 2015 Statut Membre Dernière intervention 24 septembre 2023 - 27 nov. 2015 à 18:12
Bonjour,

Je suis en train de refaire mon site Internet et je voudrais ajouter un bouton de quantité + - sur ma page produits, mais mon problème est que je ne connais rien au javascript pour le moment, utilisant principalement le php...

j'ai trouvé , sur votre site, un script de boutons de quantité sur lequel j'ai ajouté un "if" qui empêche de pouvoir mettre de quantité négative :


<script type="text/javascript">
function add( nom ) {
document.getElementById( nom ).value ++;
}
function substract( nom ) {
if ( document.getElementById( nom ).value > 0 )
document.getElementById( nom ).value --;
}
 
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
 
return true;
}
</script>
 
<form>
<input type="text" value="1" id="quantite" size="2" maxlength="4" onkeypress="return isNumberKey(event);">
<a onClick="add('quantite');" >plus</a>
<a onClick="substract('quantite');"> moins</a>
</form>

mais je ne sais pas comment faire passer la quantité dans mon panier... ni comment limiter la quantité pour qu'elle ne soit pas supérieure au stock disponible dans ma BDD (variable "$stock" déjà récupérée dans ma page produits).

Jusqu'à présent, je ne laissais pas le choix de la quantité aux clients, mais la leur imposais via la variable "$qte" que je récupérais de l'une des tables de ma BDD car, selon les produits, l'unité de vente était différente. Mais ce n'est plus le cas.
Pour envoyer mes données au panier, je faisais ceci :

<a href="panier.php?action=ajout&r=<?php echo $ref; ?>&l=<?php echo $libelle; ?>&q=<?php echo $qte; ?>&p=<?php echo $prix; ?>" onclick="window.open(this.href, '', 'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=800, height=400'); return false;"><img src="images/product-details/caddieshop.png"></a>

Merci de votre aide... car je suis incapable de résoudre mon problème.

A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
27 nov. 2015 à 15:14
Salut,

Pour limiter la quantité maximum, il te suffit d'ajouter une condition dans la fonction add() comme tu as pu le faire pour limiter la quantité minimum.
Si ta variable php $stock est déjà récupérée sur cette page, une solution possible serait :
function add( nom ) {
    if (document.getElementById(nom).value < <?php echo intval($stock); ?>) {
        document.getElementById( nom ).value ++; 
    }
}


On aurait également pu utiliser un input de type number pour gérer le champ quantité, le seul problème est qu'il n'est pas présenté de manière identique sur tous les navigateurs, notamment sur IE : https://www.alsacreations.com/tuto/lire/1409-formulaire-html5-type-number.html

Enfin pour envoyer la quantité à ton panier, tu peux remplacer ton lien par un formulaire. Par exemple :
<form action="panier.php" method="get">
    <input type="hidden" name="action" value="ajout" />
    <input type="hidden" name="r" value="<?php echo htmlspecialchars($ref); ?>" />
    <input type="hidden" name="l" value="<?php echo htmlspecialchars($libelle); ?>" />
    <input type="hidden" name="p" value="<?php echo htmlspecialchars($prix); ?>" />

    <input type="text" value="1" id="quantite" name="qte" size="2" maxlength="4" onkeypress="return isNumberKey(event);"> 
    <a onClick="add('quantite');" >plus</a> 
    <a onClick="substract('quantite');"> moins</a>

    <button type="submit"><img src="images/product-details/caddieshop.png"></button>
</form>


La méthode POST serait plus appropriée pour ce formulaire afin d'éviter d'avoir des URLs remplis de paramètre, mais la méthode GET te permettra de vérifier plus facilement les informations pendant le développement.
En soumettant le formulaire, tu devrais retrouver l'URL de ton lien d'ajout au panier.

Note : Attention à ne pas oublier l'attribut name sur tes balises input (exemple name="qte"), c'est ce nom qui sera utilisé pour récupérer le paramètre en PHP via $_GET['qte'] ou $_POST['qte'].

Bonne journée
0
patricia@84 Messages postés 106 Date d'inscription vendredi 27 novembre 2015 Statut Membre Dernière intervention 24 septembre 2023 9
27 nov. 2015 à 18:12
Bonsoir,

Merci pour cette réponse rapide.

C'est vrai que j'aurais pu penser à mettre une condition sur le "add"...

Avant d'envoyer ma demande d'aide, j'avais essayé de passer par un formulaire (envoyé en "post", le "get" est trop facile à modifier dans l'url) similaire à celui que vous m'avez adressé et la quantité restait toujours à zéro... c'est aussi ce qui s'est passé lorsque j'ai, bêtement, fait un copier-coller de votre formulaire... vous comme moi, avons mis, dans l'input d'envoi de la quantité, le name="qte" alors que j'avais utilisé un simple "q" dans mon lien...

Donc, problème réglé... encore merci !
0