Bonsoir, pour un TP je dois réaliser une boutique en ligne avec PHP sans base de donnée.
J´ai crée pour l´instant un système de SESSION pour crée un compte temporaire, mais je ne sais pas comment m´y prendre pour faire un système de panier avec des produits, récuperer les articles que l´user à choisi et les afficher sur une page avec les SESSIONS et ensuite afficher le prix total.

Je n´utiliserais pas de cookie, j´attend pas de liens du web mais une explication pour avancer dans ce projet.

7 réponses


JeremieMeunier
Réponse acceptée

Bonsoir, je pense que tu devrais en gros créer un tableau $array []; avec tous les produits séléctionner dans tes $_SESSION ainsi que le prix dans une autre $_SESSION.

<?php
        // depuis PHP 5.4
        $array_product = [
            "product1"  => "Produits#1",
            "product2"  => "Produits#2"
        ];

        $array_prix = [
            "prix1"  => "Prix#1",
            "prix2"  => "Prix#2"
        ];

        $_SESSION['prix'] == $array_prix;
        $_SESSION['produit'] == $array_product;
?>

Après tu parcours le tableau avec foreach() et affiche les valeurs puis tu calcule le tout !

<?php
        $products = $_SESSION['produit'];
        $prixs = $_SESSION['prix'];

        foreach ($products as &$produit) {
            echo '<tr>';
            echo '<td>'.$produit.'</td>';
        }
        foreach ($prixs as &$prix) {
            echo '<td>'.$prix.'</td>';
            echo '</tr>';
        }
?>

Après, le système n'est sûrement pas parfait mias voilà je pense que c'est une bonne base ! Foreach, Array.

Bonjour.
Alors, sans chercher bien loin ... tu as ceci qui pourrait t'aider : Tutoriel Vidéo PHP » Créer un panier en PHP.

Dans ce tutoriel vidéo je vous propose d'apprendre à créer un système de panier en PHP. Vous apprendrez comment utiliser les sessions pour sauvegarder la liste des produits ajoutés au panier.

@JeremieMeunier, je ne comprends pas l'intérêt de séparer les choses. Comment va-t-il faire pour associer le prix avec le produit ? Le mieux, selon moi :

<?php
$cart = array(
    "123" =>  array(
        "description" => "bla bla",
        "prix" => 12
    ),
    "456" =>  array(
        "description" => "truc truc",
        "prix" => 289
    ));

 $_SESSION['cart']  =  $cart; // À noter que c'est "=" et non "==" !
?>

123 et 456 sont les références des produits.

Après la grande question est comment dois-tu alimenter ce tableau, sachant que tu n'as le droit à une base de données (que dit ton TP ?) ?

A+

Les liens contiendrais les valeurs

<a href="ajout_panier.php?code_produit=123&description=blablabla&prix=12">Ajouter au panier</a>

Après c'est pas la meilleur solution car les lettres spécial (é, à, è,...) seront transformer et aussi car tu si ta description est longue (ou juste le nom) ça peut faire beaucoup de texte en paramètres !

@oez effectivement c'est mieux !

@JeremieMeunier, il y a un gros soucis de sécurité à passer directement les éléments en GET (never trust user). Si toute l'application repose uniquement sur ce système, ce n'est tout simplement pas fiable.

Donc du POST et créant un formulaire !

<form method="post" action="ajout_panier.php">
    <!-- Input de type HIDDEN ? -->
    <button>Ajouter au panier</button>
</form>

"sans base de donnée" c'est impossible ... Un tableau EST une "base de donnée" (rudimentaire, mais ça reste une BDD). Ton TP stipule quoi exactement ? (définition rapide de BDD : "un ensemble de données structurées et organisées", ce qui peut être le cas d'un simple tableau)

Bref, fait un fichier de config | un tableau multidimensionnel | un YAML | un Json, peu importe, je suppose que le TP ne l'interdit pas pour stocker tes articles/prix/description/autres infos ? Reste simplement à stocker en SESSION | En dure (fichier JSON/YAML/CONF/ autres) l'id du produit acheté/la quantité de produit acheté associé à l'utilisateur.

Sur le papier, je ne vois rien d'insurmontable ?