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 :

envoyer un id selon le choix


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut envoyer un id selon le choix
    Bonjour,

    j'utilise un panier en récupérant l'id d'un article,sa marche super bien pour un article mais quand je veux utiliser par exemple un vêtement cela pose problème,si je prend par:
    ex un vêtement avec la taille XXl et que je reprend le même vêtement mais avec la taille S j'arrive a les afficher mais impossible de changer la quantité car dans la session panier se trouve le mêmes id ,
    donc je vois pas comment je pourrais éviter que la quantité ne change pour les deux articles,
    je pensais envoyer l'id selon le choix de la taille mais je vois pas comment je pourrais faire car j'utilise du js pour sélectionner la taille qui envoi dans le value

    auriez vous des idées la dessus car la je pêche

    merci de l'aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sans savoir comment est organisé ton panier et ton catalogue de produit c'est difficile de te répondre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    je vous met les tables qui correspond

    Code sql : 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
    table articles
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `id_articles` int(11) NOT NULL,
      `nom` varchar(250) NOT NULL,
      `prix` decimal(11,0) NOT NULL,
      `stock` int(11) NOT NULL,
      `lien` varchar(250) NOT NULL,
      `description` text NOT NULL,
      `machine` varchar(200) NOT NULL,
      `image` text NOT NULL,
      PRIMARY KEY (`id`)
     
    -- Structure de la table `types`
     
      `id_types` int(11) NOT NULL AUTO_INCREMENT,
      `designation` varchar(55) NOT NULL,
      `arriere` int(11) NOT NULL,
      `zoom` int(11) NOT NULL,
      `heure` datetime NOT NULL,
      PRIMARY KEY (`id_types`)
    table taille
     `idtaille` int(11) NOT NULL AUTO_INCREMENT,
      `id_taille_art` int(11) NOT NULL,
      `taille1` varchar(255) NOT NULL,
      `taille2` varchar(11) NOT NULL,
      `taille3` varchar(11) NOT NULL,
      `taille4` varchar(11) NOT NULL,
      `taille5` varchar(11) NOT NULL,
      `taille6` varchar(255) NOT NULL,
      PRIMARY KEY (`idtaille`)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    //AJOUTER ARTICLE//
    public function ajouterArticle($product_id){
    	if(isset($_SESSION['panier'][$product_id])&&isset($_SESSION['taille'])){
    		$_SESSION['panier'][$product_id]=1;
    	}elseif(isset($_SESSION['panier'][$product_id])){
    		$_SESSION['panier'][$product_id]++;
    	}else{
    		$_SESSION['panier'][$product_id]=1;
    	}
    }
    je ne met pas tout le code du panier car trop long,j'ai mis le système pour ajouter l'id en panier je rajoute aussi la partie qui met en 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
    <?php
    $panier=new panier($DB);
     
    if(isset($_POST['id'])){
    $id=(int)$_POST['id'];
    $_SESSION['taille']= (isset($_POST['tailles'])) ? $_POST['tailles'] : '';
     
    $product=$DB->query('SELECT id,prix FROM articles INNER JOIN types ON id_articles = id_types
    	WHERE id=:id',array('id'=>$id));
    if(empty($product)){
    	echo"<p>cette article n'existe pas</p>";
    }
    $panier->ajouterarticle($product[0]->id);?>
     
    <div id ="art">
    <p>l'article a bien ete ajoute a votre panier,voulez vous retourner sur le site : <br> <a href="#" onclick="window.opener.location.href='../tests/site.php';self.close();">site </a><br/>ou voulez vous aller voir votre panier : <br/> <a href="#" onclick="window.opener.location.href='../panier/panier_tempo.php';self.close();">panier</a></p> 
    </div>
    <?php
    }else{
    	echo"<p>Vous n'avez pas selectionnee l'article a ajouter au panier</p>";
    }
    si il manque quelque chose je peux le donner,je rajoute aussi l'envoi

    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
    <span class="nav">
    <ul>
    	<li><a href="javascript:taille('XS')" id="XS"class="bouton1">XS</a></li>
    	<li><a href="javascript:taille('S')" id="S"class="bouton2">S</a></li>
    	<li><a href="javascript:taille('M')" id="M"class="bouton3">M</a></li>
    	<li><a href="javascript:taille('L')" id="L"class="bouton4">L</a></li>
    	<li><a href="javascript:taille('XL')" id="XL"class="bouton5">XL</a></li>
    	<li><a href="javascript:taille('XXL')" id="XXL"class="bouton6">XXL</a></li>
    </ul>
    </span>
     
    <form action="../panier/addpanier.php" method="post" target="addpanier" onsubmit="window.open('', 'addpanier', 'width=500, height=200, left=500,top=200, scrollbars=no'); this.submit();">
     <input type = "hidden" name = "taille" id = "tailles" value = "" />	
     <input type="hidden" name="id" value="<?php echo $prod->id; ?>" />
    <input type ="image"<img src="../image/ajouter.png"</a></form>
    <?php
    }?>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu gère une quantité de stock par taille ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    le vêtement comporte la taille donc xs a xxl avec pour chaque le stock associer

  6. #6
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonsoir,

    ta quantité de stock est fonction de l'article et la taille.

    Je pense que le stock ne doit pas être stocké dans la table articles mais dans une autre qui fait la relation entre l'article et la taille.

    Natso

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    donc si je comprend ta logique,je devrais faire une autre table avec un id en primary,id de l'article et le stock de chaque article et retiré le champ de la table article

  8. #8
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonsoir,

    effectivement j'enlèverais l'id_articles de la table articles et de la table tailles.

    Puis j'ajouterais une table: article/taille/stock

    donc dans cette table que tu nommes comme tu veux, stock peut être:
    id : clé primaire
    id_article : clé étrangère
    id_taille: clé étrangère
    stock

    Donc fonction d'un article et d'une taille, tu as ton stock. id en clé primaire n'est pas forcément obligatoire. Tu peux avoir id_article+id_taille en clé primaire.
    Natso

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    ton idée est bonne mais j'ai une table qui fait la relation entre les articles et le types regarde mon 1er post est tu verra une table types donc si j’enlève l'id_aticles je fais comment la relation entre c'est trois table,je suis toujours preneur pour en apprendre plus

  10. #10
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonsoir,

    Et bien tu fais une nouvelle table. Donc si je revois un peu le mcd actuel, le prix est à sortir également de la table articles. Je suppose que le prix est fonction de l'article et de la taille

    Donc:

    une table articles->id_article, nom, description, image, etc..)
    une table types-> id_type, type
    une table tailles -> id_taille, taille
    une table tailles/articles/quantité/prix -> id, id_article, id_taille, quantité, prix
    une table types/articles -> id, id_article, id_type

    C'est quoi machine ?

    Natso

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    machine me sert pour une requête et pour mon fil d’Ariane pour info je n'ai pas que des vêtement mais d'autres articles en plus,ton idée ma l'air intéressent mais je vois pas comment tu fais pour les jointures entre chaque table

  12. #12
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonsoir,

    Je ne vois pas ce que tu ne vois pas.

    Si je prends le cas de la table:

    tailles/articles/quantité/prix -> id, id_article, id_taille, quantité, prix

    Tu la nommes comme tu veux:
    id est la clé primaire mais tu peux utiliser id_article+id_taille, id_article est clé étrangère, id_taille est clé étrangère, quantité est la quantité, et prix est le prix

    Natso

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    tu as marquer une table articles types avec id,id articles et id types c'est cette table ou je vois pas la relation entre toute les tables

  14. #14
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Parce que tu avais noté ça:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    -- Structure de la table `types`
     
      `id_types` int(11) NOT NULL AUTO_INCREMENT,
      `designation` varchar(55) NOT NULL,
      `arriere` int(11) NOT NULL,
      `zoom` int(11) NOT NULL,
      `heure` datetime NOT NULL,
      PRIMARY KEY (`id_types`)

    Je ne sais pas ce que c'est mais je suppose que un article a un type...

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    j'ai mis cette table pour eviter de surchargé la table article elle me sert pour les images et une designation en plus de la date mais je peux l'enlever pour remettre sa dans la table article

  16. #16
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Si ce sont des infos propres à un article, il faut les mettre dans la table article.

    Tu ne risques pas de surcharger la table.

    Pour info dans certaines tables tu peux avoir des dizaines de champs.

    Natso

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    j'ai changer mes tables en fessant comme sa:

    Code sql : 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
    75
    76
    77
    78
    79
    80
    CREATE TABLE IF NOT EXISTS `articles` (
      `id_articles` int(11) NOT NULL,
      `nom` varchar(250) NOT NULL,
      `lien` varchar(250) NOT NULL,
      `description` text NOT NULL,
      `designation` varchar(55) NOT NULL,
      `machine` varchar(200) NOT NULL,
      `image` text NOT NULL,
      `image_arriere` int(11) NOT NULL,
      `agrandissement` int(11) NOT NULL,
      `heure` datetime NOT NULL,
      PRIMARY KEY (`id_articles`),
      UNIQUE KEY `id_articles` (`id_articles`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    --
    -- Contenu de la table `articles`
    --
     
    INSERT INTO `articles` (`id_articles`, `nom`, `lien`, `description`, `designation`, `machine`, `image`, `image_arriere`, `agrandissement`, `heure`) VALUES
    (189, 'final fantasy 13', '../jeu_neuf/final_fantasy_13.php', '', 'jeu neuf', 'jeu ps3 neuf', '620452.jpg', 648156, 657201, '2013-12-06 13:43:00'),
    (190, 'batman arkham city', '../jeu_occasion/batman.php', 'pénétrez au cœur d''''un conflit mêlant les plus grand criminel de l''histoire de batman', 'jeu occasion', 'jeu xbox 360 occasion', '566837.jpg', 0, 0, '2013-12-06 13:45:00'),
    (193, 'assassin''s creed revelation', '../jeu_occasion/assassin''s_creed_revelation.php', 'Le maitre assassin Ezio Auditore marche sur les traces de son légendaire ancêtre Altaîr, et plonge au plus profond d''une quêtes remplie de révélations sur la lignée des assassins  ', 'jeu occasion', 'jeu ps3 occasion', '711386.jpg', 0, 0, '2013-12-06 13:46:00'),
    (194, 'batman arkham city', '../jeu_occasion/batman.php', '', 'jeu occasion', 'jeu xbox 360 occasion', '956267.jpg', 0, 0, '2013-12-06 13:50:00'),
    (195, 'assassin', '../vetement/assassin.php', 't-shirt assassin''creed 3', 'vetement neuf', 'vetement ', '180477.jpg', 0, 0, '2013-12-06 13:52:00');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `identification`
    --
     
    CREATE TABLE IF NOT EXISTS `identification` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `id_article` int(11) NOT NULL,
      `id_taille` int(11) NOT NULL,
      `quantite` int(11) NOT NULL,
      `prix` double(11,0) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=206 ;
     
    --
    -- Contenu de la table `identification`
    --
     
    INSERT INTO `identification` (`id`, `id_article`, `id_taille`, `quantite`, `prix`) VALUES
    (196, 195, 7, 10, 19),
    (197, 195, 8, 2, 19),
    (198, 195, 9, 0, 19),
    (199, 195, 10, 6, 19),
    (200, 195, 11, 12, 19),
    (201, 195, 12, 12, 19),
    (202, 189, 0, 12, 19),
    (203, 190, 0, 3, 19),
    (204, 193, 0, 3, 19),
    (205, 194, 0, 3, 19);
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `taille`
    --
     
    CREATE TABLE IF NOT EXISTS `taille` (
      `id_tailles` int(11) NOT NULL AUTO_INCREMENT,
      `taille` varchar(55) NOT NULL,
      PRIMARY KEY (`id_tailles`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;
     
    --
    -- Contenu de la table `taille`
    --
     
    INSERT INTO `taille` (`id_tailles`, `taille`) VALUES
    (7, 'XS'),
    (8, 'S'),
    (9, 'L'),
    (10, 'M'),
    (11, 'XL'),
    (12, 'XXL');

    j'ai fait aussi la requête avec jointure mais elle me fais des trucs bizarres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       $query=$db->prepare('SELECT * FROM identification LEFT JOIN taille ON id_tailles = id_taille
    LEFT JOIN articles ON id_articles = id_article
    	WHERE id=:id');
    si j'utilise l'id 202 dans phpmyadmin elle me sort tout,est ce que je me serait planter dans la requête merci

  18. #18
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Et avec inner join plutôt que left join

    Dans ton select, tu veux bien récupérer tous les champs de la table identification ?

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    je dois recupere toute les donnees sauf la date ,pour inner join je testerais demain et merci pour ton aide

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    avec INNER sa ne change rien,la requête me selectionne toute les données,je pense que c'est la requête elle mêmes qui est mal faites,
    quand je clique sur un 1er lien, je fais une requête pour lister les images avec le lien, l'id de l'article déjà la sa foire car il va me lister toute les images ,
    je clique sur l'image que je veux et la je refais une requête pour lister les images ,le prix,le stock etc mais si c'est pour un vêtement j'ai besoin de la taille aussi pour l'ajout dans le panier je récupère l'id de l'article que je met en panier

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/08/2006, 23h24
  2. affichage selon le choix d'une liste déroulante
    Par cell dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2006, 10h16
  3. [FORMULAIRE] affichage selon le choix dans une liste déroulante.
    Par gailup dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/06/2006, 14h58
  4. Réponses: 2
    Dernier message: 14/09/2005, 12h08
  5. Réponses: 2
    Dernier message: 23/06/2004, 13h56

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