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

Langage PHP Discussion :

Insertion dans la base de données


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut Insertion dans la base de données
    Bonjour à tous,

    Je souhaite intégrer des données dans ma BDD,

    C'est données sont actuellement stockées dans des variables de sessions (panier virtuel)

    J'ai essayé avec cette requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // requête d'insertion dans la BDD
    $requete ="INSERT INTO LigneCommande (LC_IdProduit,LC_Quantite,LC_PrixUnitaireHT,) VALUES ($_SESSION['panier']['libelleProduit'],$_SESSION['panier']['qteProduit'],$_SESSION['panier']['prixProduit'])";
    $resultat = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
    et j'ai une erreur :
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/123/sdc/6/9/scoot.master/commande.php on line 17
    Peux t'on insérer directement les valeurs de cette façon ?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,
    Tu as une virgule de trop.
    LigneCommande (LC_IdProduit,LC_Quantite,LC_PrixUnitaireHT,)
    Tu dois mettre les valeurs dans des simples quotes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete ="INSERT INTO LigneCommande (LC_IdProduit,LC_Quantite,LC_PrixUnitaireHT) VALUES ('".$_SESSION['panier']['libelleProduit']."','".$_SESSION['panier']['qteProduit']."','".$_SESSION['panier']['prixProduit']."')";

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Salut,
    Tu as une virgule de trop.

    Tu dois mettre les valeurs dans des simples quotes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete ="INSERT INTO LigneCommande (LC_IdProduit,LC_Quantite,LC_PrixUnitaireHT) VALUES ('".$_SESSION['panier']['libelleProduit']."','".$_SESSION['panier']['qteProduit']."','".$_SESSION['panier']['prixProduit']."')";
    Voilà, j’ai corrigé mes erreurs mais j’ai maintenant cette erreur :

    Erreur INSERT INTO LigneCommande (LC_IdProduit,LC_Quantite,LC_PrixUnitaireHT) VALUES ('Array','Array','Array') Duplicate entry '0' for key 1
    Merci

  4. #4
    jnore
    Invité(e)
    Par défaut
    Visiblement tu essaie de dupliquer sur un champ qui possède une clé primaire

  5. #5
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Très certainement LC_IdProduit....
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par RideKick Voir le message
    Très certainement LC_IdProduit....
    Voici les champs de ma table LigneCommande :
    LC_Id
    LC_IdCommande
    LC_IdProduit
    LC_Quantite
    LC_PrixUnitaireHT
    LC_MontantTVA
    Où LC_Id est ma clé primaire. Lc_IdProduit n'en est pas une.

  7. #7
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    LC_id est en autoincrement ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par RideKick Voir le message
    LC_id est en autoincrement ?
    Non plus,

  9. #9
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    bah le probleme vient de la , tu ne donne aucune valeur donc par defaut il va prendre 0.....mais ça va pas marcher a tout les coups.

    Donc :

    - soit tu mets en autoincremente
    - soit dans ta requete tu specifie un ID
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    J'ai avancé sur le sujet en mettant AutoIncrement pour la clé primaire.

    Ma requete INSERT INTO fonctionne avec la boucle que j'ai fait. Il m'enregistre dans ma BDD autant de ligne qu'il y a d'article dans mon panier.

    Mais là ou j'ai mis des variables de sessions il m'enregistre 0 dans ma BDD. Je ne comprends pas.

    Pour mon dernier champ, je voudrais qu'il m'enregistre 19.6 (= TVA) et dans ma BDD il me met '0.99'. Je ne comprends toujours pas.

    Voici mon code :
    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
     
    <?php
    session_start();
     
     include("connect.inc"); 
     
    $cxn = mysql_connect($host, $user, $passwd) 
                or die ("Couldn't connect to server.");    #15
     
    	$db_selected = mysql_select_db($dbname, $cxn);
    	if (!$db_selected) {
       		die ('Impossible de selectionner la base de donnees : ' . mysql_error());
    }
     
     
    // requete d'insertion dans la BDD
     
    $requete ="INSERT INTO LigneCommande (LC_Id,Lc_IdCommande,LC_IdProduit,LC_Quantite,LC_PrixUnitaireHT,Lc_MontantTVA) VALUES ('','1','".htmlspecialchars($_SESSION['panier']['Reference'][$i])."','".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."','".number_format(htmlspecialchars($_SESSION['panier']['prixProduit'][$i]),2)." €','19,6')";
     
     
    $nbArticles=count($_SESSION['panier']['libelleProduit']);
      if ($nbArticles <= 0)
       exit ("Votre panier est vide");
      else
      {
       for ($i=0 ;$i < $nbArticles ; $i++)
       {
         $rq_insert = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
    	 echo "Votre commande a bien été enregistrée";
       }
      }
    Merci pour votre aide.

  11. #11
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    tu as essayé en mettant '19.6' au lieu de '19,6' ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par RideKick Voir le message
    tu as essayé en mettant '19.6' au lieu de '19,6' ?
    Idem dans les deux cas !

  13. #13
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    19.6 sans les ' (sinon c'est une string) normalement ...
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par RideKick Voir le message
    19.6 sans les ' (sinon c'est une string) normalement ...
    Non c'est idem,

    Voir les enregistrements en PJ
    Images attachées Images attachées  

  15. #15
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    etrange ..... au passage c'est meme remarque pour le prix unitaire , il faut enlever les '
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  16. #16
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Attention à la définition des types DECIMAL ! DECIMAL(N,D) où N est le nombre total de chiffres et D le nombre de décimales.
    Donc DECIMAL(2,2) place tous les chiffres après la virgule...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  17. #17
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Bien vu Cel, toi t'es du matin ça se voit
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  18. #18
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par RideKick Voir le message
    Bien vu Cel, toi t'es du matin ça se voit
    Nan je me suis juste fait avoir ya pas longtemps
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    J'ai essayé de faire comme ceci, mais ça ne marche pas non plus.

    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
     
    <?php
    session_start();
     
    include("connect.inc"); 
     
    $cxn = mysql_connect($host, $user, $passwd) 
                or die ("Couldn't connect to server.");    #15
     
    	$db_selected = mysql_select_db($dbname, $cxn);
    	if (!$db_selected) {
       		die ('Impossible de selectionner la base de donnees : ' . mysql_error());
    }
     
     
    // requete d'insertion dans la BDD de la commande
     
    $ref=$_SESSION['panier']['Reference'];
    $qte=$_SESSION['panier']['qteProduit'];
    $prix=$_SESSION['panier']['prixProduit'];
     
     
    $requete ="INSERT INTO LigneCommande (LC_Id,Lc_IdCommande,LC_IdProduit,LC_Quantite,LC_PrixUnitaireHT,Lc_MontantTVA) VALUES ('',1,'".$ref."[$i]','".$qte."[$i]','"prix."[$i]',19)";
     
     
    $nbArticles=count($_SESSION['panier']['libelleProduit']);
      if ($nbArticles <= 0)
       exit ("Votre panier est vide");
      else
      {
       for ($i=0 ;$i < $nbArticles ; $i++)
       {
         $rq_insert = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
    	 echo "Votre commande a bien été enregistrée";
       }
      }
    EDIT :

    Mes variables de sessions panier sont avec 2 attributs (ex : $_SESSION['panier']['libelleProduit'].....)

    Si je ne m'étais que des variables à 1 seul attribut par exemple :
    $_SESSION['panier_libelleProduit']


    Est-ce que cela pourrait aider à résoudre mon problème ?

    EDIT 2 :

    DECIMAL(N,D) où N est le nombre total de chiffres et D le nombre de décimales.
    Trés juste, pour DECIMAL, j'ai remplacé (2,2) par (4,2) et ça fonctionnne.

  20. #20
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Je te rappel que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ref=$_SESSION['panier']['Reference'];
    est un tableau donc si tu ne passe pas par les valeurs indicées tu ne pourras rien mettre en base.
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Parcours d'un fichier et insertion dans une base de données !
    Par condor_01 dans le forum Général Java
    Réponses: 2
    Dernier message: 24/04/2008, 10h24
  2. [paradox7] Problème d'insertion dans la base de données
    Par mouna201 dans le forum Bases de données
    Réponses: 4
    Dernier message: 01/02/2006, 10h47
  3. problème d'insertion dans une base de données
    Par belmansour tidjani dans le forum JDBC
    Réponses: 7
    Dernier message: 18/01/2006, 23h13
  4. [Hibernate] problème d'insertion dans la base de données
    Par Willy7901 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 18/08/2005, 14h19
  5. Probleme d'insertion dans la base de données
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 11/06/2004, 17h21

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