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 :

Problème avec les caddie


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut Problème avec les caddie
    Bonjour à tous,

    Y'aurait-il un bonne âme pour m'aider. Voilà je débute en PHP, je dois créer un panier.
    J'ai réussi à faire de l'incrémentation et de la décrémentation pour mes produits. Par contre là où je sèche, c'est comment je peux récupérer les tarifs de mes produits stockés dans une base MySQL et effectuer les calculs (montant ht, ttc par article puis montant total).

    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
    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
    81
    82
    83
    84
    85
    86
    87
    88
    <?php
    session_start();
     
    if (isset($_GET["prod"]))
    {
    switch ($_GET["sens"])
     
    {
    case "ajout" :
    $_SESSION[$_GET["prod"]] ++;
    break;
    case "sup" :
    $_SESSION[$_GET["prod"]] --;
     
    //-- si la quantité < 1, le produit est supprimé du panier -----
    if ($_SESSION[$_GET["prod"]] < 1)
    unset($_SESSION[$_GET["prod"]]);
    break;
    }
    }
    ?>
    <?php
    include_once 'class.php';
    //Lecture de la Base
    // requete sur la table Licences
    open();
    $Produit='"'.$_GET['prod'].'"';
    $requete2="SELECT Tarifs from Licences where ProduitFMP=$ProduitFMP";
    $result2=mysql_query($requete2);
     
    if($result2==0)
        {
        echo "Impossible d'effectuer la requête<br>$requete2";
        exit;
        }
    $Tarifs=mysql_fetch_row($result2);
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
    </head>
    <body>
    <table cellspacing="1" width="65%" align="center">
      <tr align="left">
        <th>Produit</th>
        <th>Type de licence</th>
        <th></th>
      </tr>
      <tr>
        <td>Prod 1</td>
        <td>Produit Complet</td>
        <td> <a href="test.php?prod=Prod 1&sens=ajout">Ajouter</a></td>
      </tr>
      <tr>
        <td>Prod 2</td>
        <td>Mise à jour</td>
        <td><a href="test.php?prod=Prod 2&sens=ajout">Ajouter</a></td>
      </tr>
      <tr>
        <td>Prod 3</td>
        <td>Education</td>
        <td><a href="test.php?prod=Prod 3&sens=ajout">Ajouter</a></td>
      </tr>
    </table>
    </body>
    </html>
    </html>
    <?php
     
    echo "<p align=\"center\"><b>contenu de votre panier</b></p>";
    foreach($_SESSION as $produit => $quantite)
    {
    echo "
    <table cellspacing=\"1\" width=\"65%\" align=\"center\">
    <tr align=\"left\">
    <td>$produit</td>
    <td></td>
    <td>$quantite</td>
    <td><a href=\"test.php?prod=$produit&sens=sup\">Enlever</a></td>
    </tr>
    </table>";
    }
    echo "<hr><br>";
    //---------------------------------------------------------------------------
    ?>
    Merci d'avance

  2. #2
    Membre éprouvé Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Par défaut
    Pourquoi tu ne stock pas cela directement dans ta session ?
    Tu peux utiliser un tableau à 2 dimensions.

    Par exemple:
    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
     
    function add_panier($ref,$qte,$prix,$max,$urg){
    	//Si on a deja l'article on ajoute la quantité.
    	if(isset($_SESSION['panier']['ref'][$ref])){
    		$_SESSION['panier']['qte'][$ref] = $_SESSION['panier']['qte'][$ref] + $qte;
    		if($_SESSION['panier']['qte'][$ref] > $max){//pour pas dépassé le nombre max d'article
    			$_SESSION['panier']['qte'][$ref]= $max;
    		}
    	}
    	else{
    		$_SESSION['panier']['ref'][$ref] = $ref;
    		$_SESSION['panier']['qte'][$ref] = $qte;
    		$_SESSION['panier']['prix'][$ref] = $prix;
    		$_SESSION['panier']['urgent'][$ref] = $urg;
    		if($_SESSION['panier']['qte'][$ref] > $max){//pour pas dépassé le nombre max d'article
    			$_SESSION['panier']['qte'][$ref]= $max;
    		}
    	}
    }
    Ici c'est une fonction que j'utilise pour ajouter un élément à mon panier ( bon il y a une gestion de maximum mais là n'est pas le sujet).
    Comme tu peux le voir j'utilise un tableau à deux dimensions, et je crée pour chaque refèrence d'article 4 champs qui sont ref/qte/prix/urgent.

    En gros mon tableau de sessions ressemble donc à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //article a12
    $_SESSION['panier']['ref']['a12']=a12
    $_SESSION['panier']['qte']['a12']=3
    $_SESSION['panier']['prix']['a12']=50.14
    $_SESSION['panier']['urgent']['a12']=oui
    //article b66
    $_SESSION['panier']['ref']['b66']=b66
    $_SESSION['panier']['qte']['b66']=2
    $_SESSION['panier']['prix']['b66']=10.99
    $_SESSION['panier']['urgent']['b66']=non
    Ensuite pour retrouver mes articles je me sert de ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    foreach($_SESSION['panier']['ref'] as $key => $value){
     echo($_SESSION['panier']['ref'][$key]);//affiche la reférence
    Si ca peut t'aider, sinon je te conseil les tutoriaux présent sur ce forum qui traitent des sessions.

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut
    Je te remercie beaucoup.

    Ton code est intéressant, je vais le tester, seulement j'aimerais récupérer les tarifs depuis ma base.

    En effet, ces tarifs seront amenés à subir des modifs régulièrement. Ce sera notre office manager qui s'en chargera, je la vois mal aller bidouiller dans le code, elle risque de nous faire une attaque cérébrale


  4. #4
    Membre éprouvé Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Par défaut
    Et bien trés simple, quand tu affiche l'article à tes clients, pour qu'ils saississent la quantité, et bien tu met des champs caché qui contienne la valeur du prix par exemple.

    Dans mon exemple, j'appel ma fonction add_panier() aprés reception d'un formulaire, et le prix du produit est un champ que je recupère.
    (En faite j'affiche le prix comme simple texte, et je mets un champ caché avec la même valeur pour faire comme si on m'envoyer le prix).

    Si tu veux un exemple hesite pas.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut
    Oh oui, je veux bien l'idéal ce serait que je puisse conserver ce que j'ai déjà développé.

    Je te remercie par avance.

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <?php
    session_start();
    include_once 'class.php';
    //Lecture de la Base
    // requete sur la table Licences
    open();
    	if (isset($_GET["prod"]))
    	{
    		$Produit = '"' . $_GET['prod'] . '"';
        	$requete2 = "SELECT * from Licences";
        	$result2=mysql_query($requete2);
        	if($result2==0)
            	{
            	echo "Impossible d'effectuer la requête<br>$requete2";
            	exit;
            	}
    			$prix=mysql_fetch_row("SELECT Tarifs from Licences ProduitFMP=$Produit");
     
    		switch ($_GET["sens"])
    		{
    			case "ajout" :
    			$_SESSION[$_GET["prod"]] ++;
    			break;
    			case "sup" :
    			$_SESSION[$_GET["prod"]] --;
     
     
     
    		//-- si la quantité < 1, le produit est supprimé du panier -----
    			if ($_SESSION[$_GET["prod"]] < 1)
    				unset($_SESSION[$_GET["prod"]]);
    				break;
    		}
    	}
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
    </head>
    <body>
    <table cellspacing="1" width="65%" align="center">
      <tr align="left">
        <th>Produit</th>
        <th>Type de licence</th>
        <th>Prix public</th>
        <th></th>
      </tr>
      <tr>
        <td>FileMker Pro 10</td>
        <td>Produit Complet</td>
        <td>349.00</td>
        <td> <a href="test.php?prod=Pro 10 Complet&sens=ajout">Ajouter</a></td>
      </tr>
      <tr>
        <td>FileMker Pro 10</td>
        <td>Mise à jour</td>
        <td>209.00</td>
        <td><a href="test.php?prod=Pro 10 Mise à jour&sens=ajout">Ajouter</a></td>
      </tr>
      <tr>
        <td>FileMker Pro 10</td>
        <td>Education</td>
        <td>229.00</td>
        <td><a href="test.php?prod=Pro 10 Education&sens=ajout">Ajouter</a></td>
      </tr>
    </table>
    </body>
    </html>
    <?php
     
    //-- ces lignes ne servent à rien, simplement un affichage de controle ------
    echo "<p align=\"center\"><b>contenu de votre panier</b></p>";
    foreach($_SESSION as $produit => $quantite)
    {
    echo "
    <table cellspacing=\"1\" width=\"65%\" align=\"center\">";
    	echo "<tr align=\"left\">";
    	echo "<td>$produit</td>";
    	echo "<td>$prix</td>";
    	echo "<td>$quantite</td>";
    	echo "<td><a href=\"test.php?prod=$produit&sens=sup\">Enlever</a></td>";
    	echo "</tr>";
    echo "</table>";
    }
    echo "<hr><br>";
    //---------------------------------------------------------------------------
    ?>

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut
    J'en peux plus la galère, kje n'arrive pas à récupérer mon prix.

    Une âme charitable.

    Merci d'avance

Discussions similaires

  1. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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