IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Laravel PHP Discussion :

Insérer des data dans une BDD


Sujet :

Laravel PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 114
    Points : 59
    Points
    59
    Par défaut Insérer des data dans une BDD
    Question qui semble assez bateau comme ça mais je ne trouve pas ma réponse sur le net car la plupart des sujet sont trop vieux ou ne me convienne pas par rapport a ce que je veux faire !

    J'ai fait un site d'achat avec moyen de paiement (stripe) et système de mail pour information, mais j'aimerais garder dans ma bdd les commandes des clients. j'ai bien un controller qui gère les paniers et la vue qui va avec mais j'aimerais envoyé ces donnée ds ma bdd mais je ne vois pas comment m'y prendre... Je me demande s'il faut utiliser un seeds ou écrire une methode POST quelques part avec la route qui va avec.... Bref je suis encore novice en Laravel ... et là je suis un peu perdu

    Le controller de mon panier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    <?php
     
    namespace App\Http\Controllers;
     
    use Illuminate\Http\Request;
    use App\Produit;
     
     
    class PanierController extends Controller
    {
        public function index(){
            $userId = auth()->user()->id;
            $panier = \Cart::getContent();
     
            return view('panier.index', compact('panier'));
        }
     
        public function add($id = null){
            if ( $id != null){
                $produit = Produit::findOrFail($id);
                $userId = auth()->user()->id; 
                \Cart::session($userId)->add(array(
                    'id' => $produit->id, 
                    'name' => $produit->nom,
                    'price' => $produit->prix,
                    'quantity' => 1,
                    'attributes' => array(),
                    'associatedModel' => $produit->avatar,
                ));
     
                // dd(\Cart::session($userId)->getContent() );
                return redirect()->route('panier.index');
            }
        }
     
        public function remove($id = null){
            if ( $id != null){
                $userId = auth()->user()->id;
                \Cart::session($userId)->remove($id);
                return redirect()->route('panier.index');
                }
        }
     
        public function destroy($id = null){
            $userId = auth()->user()->id;
            \Cart::session($userId)->clear();
            return redirect()->route('home');
        }
     
        public function updateMoins($id = null){
            if ( $id != null){
                $userId = auth()->user()->id;
                \Cart::session($userId)->update($id,[
                    'quantity' => -1
                ]);
     
                return redirect()->route('panier.index');
            }
     
        }
     
        public function updatePlus($id = null){
            if ( $id != null){
                $userId = auth()->user()->id;
                \Cart::session($userId)->update($id,[
                    'quantity' => 1
                ]);
     
                return redirect()->route('panier.index');
            }
     
        }
    }
    Je ne sais pas trop s'il faut autre chose pour pouvoir me répondre mais n'hésitez pas a me demandé !! Merci

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    juin 2005
    Messages
    5 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 5 379
    Points : 11 990
    Points
    11 990
    Par défaut
    Vous devez d'abord disposez d'un table pour enregistrer vos informations.
    Ensuite au moment du paiement vous devez enregistrer l'ensemble du panier.
    Il y a rien de sorcier c'est un simple save() en Eloquent/Laravel.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 114
    Points : 59
    Points
    59
    Par défaut
    Merci Maitre Pylos !! J'ai un peu avancé depuis et j'était parti effectivement sur cette voie !! Mais c'est toujours pas gagné...

    J'ai donc complété ma fonction store dans mon controller de Stripe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <?php
     
    namespace App\Http\Controllers;
     
    use Illuminate\Http\Request;
    use App\User;
    use Stripe\{ Stripe, Customer, Charge };
    use App\Mail\OrderConfirmationEmail;
    use App\Commande;
     
    class StripeController extends Controller
    {
        public function store(Request $request)
        {
            try {
                Stripe::setApiKey(config('stripe.secret_key'));
                $customer = Customer::create([
                    'email' => $request->stripeEmail,
                    'source' => $request->stripeToken
                ]);
                $charge = Charge::create([
                    'customer' => $customer->id,
                    'amount' => Round(\Cart::session(auth()->user()->id)->getTotal()*100,0),
                    'currency' => 'eur'
                ]);
                $error = '';
            }
            catch (Exception $e) {
                $customer = $charge = '';
                $error = $e->getMessage();
            }
            $message['orderId'] = 'dxf422';
            $message['amount'] = $charge['amount']/100;
            $message['subject'] = "Confirmation de commande";
            $message['content'] = "merci pour votre commande chez Myth Cloth Store";
            $to = auth()->user()->email;
     
            \Mail::to($to)->send(new OrderConfirmationEmail($message));
     
            return view('panier.confirmation', compact('charge', 'customer','error'));
     
            $commande = new Commande;
                $commande->user_id = \Cart::session(auth()->user()->id);
                $commande->article = \Cart::session(auth()->user()->name);
                $commande->prix = \Cart::session(auth()->user()->price);
                $commande->save();
     
        }
     
    }
    Je me sert donc de mon Model Commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
     
    namespace App;
     
    use Illuminate\Database\Eloquent\Model;
     
    class Commande extends Model
    {
        protected $fillable = [
            'user_id', 'article', 'prix'
        ];
    }
    Coté BDD j'ai bien une table

    Nom : bddcom.PNG
Affichages : 66
Taille : 6,9 Ko


    Mais aucun resultat !! J'ai pas de message d'erreur ceci dit

    Edit : J'ai fais un test en "dur"

    Nom : endur.PNG
Affichages : 61
Taille : 10,8 Ko

    Mais je ne recois rien non plus

    D'ou viendrait le souci alors ?


    EDIT2 : J'ai réussis à me débeuguer !! il s'agissait d'un return avant ces ligne de code... donc forcément...

    Mais sinon je ne vois pas quoi mettre pour récupéré les donné du panier... Pour le prix pas trop compliqué mais pour ce qui est de l'article ou de l'id de l'utilisateur cest plus compliqué !!

    Nom : quoi.PNG
Affichages : 59
Taille : 12,6 Ko

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    juin 2005
    Messages
    5 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 5 379
    Points : 11 990
    Points
    11 990
    Par défaut
    Pouvez-vous faire un dump de getContent() ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/07/2018, 12h04
  2. Insérer des valeurs dans une bdd
    Par Donovane dans le forum NodeJS
    Réponses: 0
    Dernier message: 23/05/2016, 22h55
  3. Insérer des valeurs dans une BDD de manière périodique
    Par camillestx dans le forum Autres SGBD
    Réponses: 0
    Dernier message: 16/02/2015, 15h53
  4. Insérer des Jpeg dans une BDD
    Par KRis dans le forum Bases de données
    Réponses: 8
    Dernier message: 19/03/2009, 19h16
  5. Insérer des images dans une BDD Access
    Par polothentik dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/05/2008, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo