[RESOLU] Récupérer données d'un produit dans ma commande(panier)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Récupérer données d'un produit dans ma commande(panier)

Re: Récupérer données d'un produit dans ma commande(panier)

par nono72i » 01 févr. 2021, 16:17

while($row = $result->fetch_assoc())
 {
  $output .= '
   <tr>
    <td>'.$row["id_produit"].'</td>
    <td>'.$row["nomProduit"].'</td>
    <td>'.$row["nom"].'</td>
    <td>'.$row["prixProduit"].'</td>                     
    <td>
      <form action="index.php" method="GET">
          <input type="hidden" name="id_produit" value="'.$row["id_produit"].'">
          <input type="hidden" name="nomProduit" value="'.$row["nomProduit"].'">
          <input type="hidden" name="prixProduit" value="'.$row["prixProduit"].'">    
          <input type="submit" name="ajouter" value="+">
      </form>
    </td>
   </tr>
   
  ';
  
 }

Re: Récupérer données d'un produit dans ma commande(panier)

par nono72i » 28 janv. 2021, 15:30

Je vous en supplie aidez-moi

Re: Récupérer données d'un produit dans ma commande(panier)

par nono72i » 27 janv. 2021, 12:01

D'accord je vois mais dans mon tableau je garde ce que j'ai mis ? et à la place des chiffres quelles variables mettre c'est ça que je ne saisis pas !

Et pour ce qui est du fait que le client puisse modifier le prix, à vrai dire ce n'est pas un soucis puisque l'application servirait au vendeur et non pas au client.

Merci pour ta réponse en tout cas.

Re: Récupérer données d'un produit dans ma commande(panier)

par or 1 » 27 janv. 2021, 11:43

plutôt qu'un seul formulaire pour toutes les lignes, un lien vers l'url donnée autour de chaque "+" est bien plus simple.
et avec du css, il est possible de faire que le + ressemble à un bouton.
<a href="http://localhost/semaine4.2/index.php?i ... uter">+</a>

après transmettre le prix d'un produit en méthode get ou post, c'est permettre au visiteur d'ajouter le produit au prix de son choix. ce qui est plus sûr, c'est de ne passer que id_produit=9 et dans le script qui ajoute le produit au panier, récupérer de la base de données les données du produit.

Récupérer données d'un produit dans ma commande(panier)

par nono72i » 27 janv. 2021, 10:41

Bonjour, comme le dit le titre, je voudrais récupérer dans mon panier les produits que l'utilisateur veut y ajouter.
J'ai une recherche de produits en AJAX me permettant d'afficher les produits.
Pour le panier ne sachant pas comment en faire un j'ai cherché un autre poste sur ce forum et quelqu'un a partagé un panier qui a l'air très simple.
Mon soucis est que maintenant j'aimerais le lier à ma recherche de produits et au bouton '+' servant à ajouter à la commande.
Pour l'instant je n'y arrive pas.
Voici le panier en question :

<?php 
// Création de la commande si n'existe pas dans la session de l'utilisateur
if (! isset($_SESSION['commande']))  $_SESSION['commande'] = array();

// Voici les données externes utilisées par le commande
$id_produit   = isset($_GET['id_produit'])   ? $_GET['id_produit']   : null;
$nom_produit  = isset($_GET['nomProduit'])  ? $_GET['nomProduit']  : null;
$prix_produit = isset($_GET['prixProduit']) ? $_GET['prixProduit'] : '?';
$qte_produit  = isset($_GET['qte_produit'])  ? $_GET['qte_produit']  : 1;

// Voici les traitements de la commande
if ($id_produit == null) echo 'Veuillez sélectionner un produit pour le mettre dans le commande!'; // Message si pas d'acticle sélectionné
else
if (isset($_GET['ajouter'])){ // Ajouter un nouvel produit
  $_SESSION['commande'][$id_produit]['nom']  = $nom_produit;
  $_SESSION['commande'][$id_produit]['prix'] = $prix_produit;
  $_SESSION['commande'][$id_produit]['qte']  = $qte_produit;
} 
else if (isset($_GET['modifier']))  $_SESSION['commande'][$id_produit]['qte'] = $qte_produit; // Modifier la quantité achetée
else if (isset($_GET['supprimer']))  unset($_SESSION['commande'][$id_produit]); // Supprimer un produit de la commande

// Voici l'affichage de la commande
echo '<h2>Contenu de votre commande</h2><ul>';
if (isset($_SESSION['commande']) && count($_SESSION['commande'])>0){
  $total_commande = 0;
  foreach($_SESSION['commande'] as $id_produit=>$produit_acheté){
    // On affiche chaque ligne de la commande : nom, prix et quantité modifiable + 2 boutons : modifier la qté et supprimer l'produit
    if (isset($produit_acheté['nom']) && isset($produit_acheté['prix']) && isset($produit_acheté['qte'])){
      echo '<li><form>', $produit_acheté['nom'], ' (', number_format($produit_acheté['prix'], 2, ',', ' '), ' €) ',
       '<input type="hidden" name="id_produit" value="', $id_produit , '" />
        <br />Qté: <input type="text" name="qte_produit" value="', $produit_acheté['qte'] , '" />
        <input type="submit" name="modifier" value="Nouvelle Qté" />
        <input type="submit" name="supprimer" value="Supprimer" />
      </form>
      </li>';
      
      // Calcule le prix total de la commande 
      $total_commande += $produit_acheté['prix'] * $produit_acheté['qte'];
    }
  }
  echo '<hr><h3>Total: ', number_format($total_commande, 2, ',', ' '), ' €'; // Affiche le total de la commande
}
else { echo 'Votre commande est vide'; } // Message si le commande est vide
echo "</ul>";



?>
et voici mon formulaire où je souhaite ajouter les produits à ma commande :

<form method='GET' action='index.php?id_produit='>
<?php
while($row = $result->fetch_assoc())
 {
  $output .= '
   <tr>
    <td>'.$row["id_produit"].'</td>
    <td>'.$row["nomProduit"].'</td>
    <td>'.$row["nom"].'</td>
    <td>'.$row["prixProduit"].'</td>                     
    <td><input type="submit" name="ajouter['.$row['id_produit'].']" value="+"></td>
    
   </tr>
   
  ';
  
 }
Dans l'action du form j'ai essayé diverses choses mais sans réussite.
Merci à ceux qui prendront le temps de m'aider !


EDIT : quand je fais un test et que j'inscris dans l'URL la ligne suivante, le panier est totalement fonctionnel :

http://localhost/semaine4.2/index.php?i ... =1&ajouter

Bonne journée.