Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passage de valeur à l'aide de bouton

    26 avril 2017 à 19:19:34

    Bonjour, 

    Je suis en première année de développement et j'ai à travailler actuellement sur un site d'e-commerce. 
    Je bloque sur le problème du bouton "+" qui correspondrait à l'ajout d'un produit dans le panier. Je ne vois pas comment je peux réaliser un passage de valeur (l'id du produit) à l'aide du bouton précédemment évoqué. Voici actuellement mon code : 

    <?php
    
    	$bdd = //Initialisation de la BDD 
    	$requete = "SELECT * FROM `PPE4_ARTICLE` WHERE ArticleRef='ART01';";
    	$resultat = $bdd->query($requete);
    	
    	$panier=array();
    	$_SESSION['panier']=$panier;
    	
    	echo "<form method='POST' action=#>";
    	
    	while($ligne = $resultat->fetch())
    	{
    		echo '<img src="'.$ligne[5].'">';
    		echo "</br>";
    		echo $ligne['ArticleRef'];
    		echo "</br>";
    		echo $ligne['ArticleDesignation'];
    		echo "</br>";
    		echo $ligne['ArticlePrixTTC'];
    		echo "</br>";
    		echo '<input type="submit" name="produit[]" value ="+">';
    	}
    	
    	echo "</form>";
    	$tabproduit=(isset($_POST['produit']))?$_POST['produit']:null;
    	
    	echo $tabproduit[0]; //retourne ici la value du input
    ?> 

    Merci pour votre lecture, 

    En attente de vos réponses.

    • Partager sur Facebook
    • Partager sur Twitter
      27 avril 2017 à 16:19:10

      Bonjour à toi,

      Je ne me suis jamais penché sur ce type de question, mais à mon sens il y a trois grandes possibilités.

      1. Faire pour chaque ligne un formulaire complet et autonome, ce qui va te permettre de faire passer ton information via l'attribut "action" de chaque formulaire, au sein de l'URL, attribut qui sera déclenché grâce au bouton "+" qui actuellement est un "submit" si j'ai bien tout suivi. Ainsi, dans l'esprit, pour chaque ligne proposant un produit, tu aurais un truc du genre <form action="bondecommande.php?ArticleRef=123456">Bla bla bla<input type="submit" name="onsenfou" value ="+"></form>

      Ainsi, à chaque clic d'un bouton +, tu vas pouvoir récupérer dans la variable $_GET["ArticleRef"] la référence de l'article qui a été cliqué, que tu vas pouvoir ranger dans un tableau, par exemple dans une variable de $_SESSION afin de pouvoir ensuite les mémoriser et éventuellement les lister quelque part dans ta page bondecommande.php (pour calculer un total, etc.)

      2. Faire appel aux possibilités de JAVASCRIPT, associées à AJAX, potentiellement simplifiées par jQuery. Dans cette hypothèse, il y a plusieurs ingrédients nécessaires. Plus besoin de formulaires, mais simplement de boutons (+) qui chacun vont déclencher un évènement onClick="mafonctionjs('123456') dans laquelle 123456 est la référence du produit à ajouter. Tu t'en doutes certainement, cela signifie que tout clic sur un bouton va faire appel à la fonction mafonctionjs() qui sera en fin de page, et qui va avoir trois objectifs. Le premier sera de récupérer (via le paramètre 123456) la référence de l'article cliqué par l'utilisateur. Le second va être de déclencher une action AJAX vers un script PHP qui sera en capacité de mémoriser / traiter la référence demandée. Le troisième sera de mettre à jour un emplacement dans la page du bon de commande qui va indiquer à l'utilisateur si son ajout a bien été pris en compte (une zone "panier" ou chaque clic va provoquer l'ajout d'une ligne, avec éventuellement un prix, un sous-total, etc.)

      3. Un formulaire "simple et unique" pour toutes les références, associé à un soupçon de JS sans AJAX. Dans cette hypothèse, tu fais un seul formulaire pour l'ensemble du bon de commande. Ton objectif va être de créer une case INPUT par référence, afin de recueillir uniquement une quantité chiffrée. Par défaut toutes les cases seront à 0, et le soupçon de JS à ajouter servira à ajouter un bouton + et - pour simplifier l'ajout d'article. Quand tu valides le formulaire, tu récupères les références et tous les INPUT qui ont leur quantité différente de 0. Tu réalises alors en une seule fois tous les traitements, mais ça peut vite être galère dans le sens où pour modifier un choix qui a été réalisé une fois le formulaire validé, c'est super chiant...

      Amuse toi bien ;)

      • Partager sur Facebook
      • Partager sur Twitter
      Nicolas - Développeur PHP qui bricole pas mal, utilisant Bootstrap, Materialize, MySQL et quelques astuces piochées par ci par là. Codeigniter a changé ma vie de codeur :D
        27 avril 2017 à 17:24:26

        Salut, il faut un input hidden

        $bdd = //Initialisation de la BDD
        $requete = "SELECT * FROM `PPE4_ARTICLE` WHERE ArticleRef='ART01';";
        $resultat = $bdd->query($requete);
         
        $panier=array();
        $_SESSION['panier']=$panier;
         
        
         
        while($ligne = $resultat->fetch())
        {
        	echo '<img src="'.$ligne[5].'">';
        	echo "</br>";
        	echo $ligne['ArticleRef'];
        	echo "</br>";
        	echo $ligne['ArticleDesignation'];
        	echo "</br>";
        	echo $ligne['ArticlePrixTTC'];
        	echo "</br>";
        	echo "<form method='POST'>";
        	echo '<input type="hidden" name="id_produit" value ="'.$lines['id'].'">';
        	echo '<input type="submit" name="produit" value ="+">';
        	echo "</form>";
        }
         
        
        if(isset($_POST['id_produit'])){
        	$_SESSION['panier'][] = $_POST['id_produit'];
        	$nb = count($_SESSION['panier']);
        	for($i = 0; $i < $nb; $i++){
        		echo "ID du produit : "$_SESSION['panier'][$i]."<br />";
        	}
        }



        -
        Edité par Romuald44 27 avril 2017 à 17:26:20

        • Partager sur Facebook
        • Partager sur Twitter

        Passage de valeur à l'aide de bouton

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown