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

  1. #1
    Nouveau Candidat au 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
    Points : 1
    Points
    1
    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 émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    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.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  3. #3
    Nouveau Candidat au 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
    Points : 1
    Points
    1
    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 émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    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.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  5. #5
    Nouveau Candidat au 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
    Points : 1
    Points
    1
    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
    Nouveau Candidat au 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
    Points : 1
    Points
    1
    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

  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
    Points : 12 572
    Points
    12 572
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  8. #8
    Nouveau Candidat au 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
    Points : 1
    Points
    1
    Par défaut
    Je te remercie pour le tuto, il est clair et j'm les petites explications.
    Seulement, je n'arrive pas à afficher mon panier que je teste en GET, logiquement cela devrait :

    http://beta.eode.fr/panier/panier.ph...rod1&q=2&p=349

    Merci pour ton aide

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

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

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Ton site requiert une identification, donc on ne peut rien voir.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

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 davidinfo 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