jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024
-
18 déc. 2018 à 17:38
jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024
-
26 mars 2019 à 16:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
j ai beau cherche je ne comprends pas , désolé de vous avoir dérangé
jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024344
>
pparies
26 mars 2019 à 16:48
Comme je te l'ai indiqué... c'est simplement de l'utilisation / manipulation d'array associatif
Si tu ne sais pas ce que c'est ni comment ça marche... et bien... commence par te former la dessus.
C'est un minimum de connaitre les différents types de variables et comment les manipuler lorsque l'on apprend un langage.
Une fois que tu auras compris ça... tu verras comment fonctionne le code.
désolé, je suis pas un expert, et loins de la, et je m y remet doucement,
la seule chose que je remarque c est
$_SESSION['panier'][$id_produit] qui me parait pas juste mais bon
jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024344
>
pparies
22 mars 2019 à 12:56
Ben si...
C'est la clé qui permet de tester si le produit est déjà dans le panier ou non
Et donc de pouvoir mettre à jour les quantités ou le supprimer si besoin...
vous pouvez m expliquer comme ca, après j ai compris et j arreterais de vous embeter
jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024344
>
pparies
22 mars 2019 à 11:34
C'est de la manipulation d'array associatif ... le truc de base du php....
Regarde la fonction add
public function addProduct($id_produit,$libelle_produit,$qte=1,$prix_unitaire_produit=0){
if($qte > 0 ){
$_SESSION['panier'][$id_produit] = array('id_produit'=>$id_produit
,'produit'=>$libelle_produit
,'qte'=>$qte
,'prix_unitaire'=>$prix_unitaire_produit
);
jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024344
>
pparies
22 mars 2019 à 10:41
Heu...ben...oui... C'est bien ça...
Et c'est normal....
Ça n'a aucun rapport avec l'id de session...
<?php
/**
* FICHIER : cart.class.php
*
*/
class cart{
/**
* Constructeur de la class
*/
function __construct(){
// Démarrage des sessions si pas déjà démarrées
$this->initCart();
}
/**
*Initialisation du panier
*/
public function initCart(){
$_SESSION['panier'] = array();
}
/**
* Retourne le contenu du panier
*/
public function getList(){
return !empty($_SESSION['panier']) ? $_SESSION['panier'] : NULL;
}
/**
* Ajout d'un produit au panier
*/
public function addProduct($id_produit,$libelle_produit,$qte=1,$prix_unitaire_produit=0){
if($qte > 0 ){
$_SESSION['panier'][$id_produit] = array('id_produit'=>$id_produit
,'produit'=>$libelle_produit
,'qte'=>$qte
,'prix_unitaire'=>$prix_unitaire_produit
);
$this->updateTotalPriceProduct($id_produit);
}else{
return "ERREUR : Vous ne pouvez pas ajouter un produit sans quantité...";
}
}
private function updateTotalPriceProduct($id_produit){
if(isset($_SESSION['panier'][$id_produit])){
$_SESSION['panier'][$id_produit]['prix_Total'] = $_SESSION['panier'][$id_produit]['qte'] * $_SESSION['panier'][$id_produit]['prix_unitaire'];
}
}
/**
* Modifie la quantité d'une produit dans le panier
*/
public function updateQteProduct($id_produit,$qte=0){
if(isset($_SESSION['panier'][$id_produit])){
$_SESSION['panier'][$id_produit]['qte'] = $qte;
$this->updateTotalPriceProduct($id_produit);
}else{
return "ERREUR : produit non présent dans le panier";
}
}
/**
* Supprime une produit du panier
*/
public function removeProduct($id_produit){
if(isset($_SESSION['panier'][$id_produit])){
unset($_SESSION['panier'][$id_produit]);
}
}
/**
* Retourne le nombre de produits dans le panier
*/
public function getNbProductsInCart(){
$panier = !empty( $_SESSION['panier'] ) ? $_SESSION['panier'] : NULL;
$nb = 0;
$panier = !empty( $_SESSION['panier'] ) ? $_SESSION['panier'] : NULL;
if(!empty($panier)){
foreach($panier as $P){
$nb += $P['qte'];
}
}
return $nb;
}
public function getTotalPriceCart(){
$total = 0;
$panier = !empty( $_SESSION['panier'] ) ? $_SESSION['panier'] : NULL;
if(!empty($panier)){
foreach($panier as $P){
$total += $P['prix_Total'];
}
}
return $total;
}
}
<?php
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
require_once "cart.class.php";
$oPanier = new cart();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="css/styles.css" />
<!--<link rel="stylesheet" media="screen and (max-width: 1280px)" href="css/1280.css" /> Pour ceux qui ont une résolution inférieure à 1280px -->
<title>NoteBook d'occasion</title>
</head>
<body>
<!-- Entête -->
<?php include("includes/entete.php"); ?>
<!-- Menu principal -->
<?php include("includes/menu_principal.php"); ?>
<!-- Bloc page principal -->
<section>
<p><center><h1>Choisissez la taille de l'écran</h1></center></p>
<!-- Menu des catalogues -->
<?php include("includes/menu_o_notebook.php"); ?>
<!-- Liste des produits -->
<div id="produits">
<?php
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=informatique_occasion;charset=utf8', 'gontierc', 'Macfly59');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
// le produit
// On récupère tout le contenu de la table ordinateurs portables
$reponse = $bdd->query('SELECT * FROM ordinateurs_portables ORDER BY tarif_ht');
// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<div class="produit">
<div class="image">
<?php echo "<img src='".$donnees['img']."' />";?>
</div>
<div class="ref">
<p><strong><?php echo $donnees['ref']; ?></strong></p>
</div>
<div class="designation">
<p><?php echo $donnees['designation']; ?></p>
</div>
<div class="qte">
<p>Quantité : <?php echo $donnees['qte']; ?></p>
</div>
<div class="tarif">
<?php
$marge = 100;
$tva = 1.2;
$prixht = $donnees['tarif_ht'];
$ht_tva = $marge + $prixht;
$prix = $ht_tva * $tva;
?>
<p><?php echo $prix; ?> €</p>
</div>
<a href="addpanier.php?id=<?php echo $donnees['id']; ?>&ref=<?php echo $donnees['ref']; ?>&prix=<?php echo $prix; ?>"> Ajouter</a>
</div>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
?>
</div>
</section>
<!-- Pied de page -->
<footer>
<p><center>Copyright 2009-2019 - CG INFORMATIQUE 24 - L'Informatique Zen et Confortable</center></p>
</footer>
</body>
</html>
jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024344 21 mars 2019 à 19:07
il prends en ID de session l id de l'article
Quelle version de PHP utilises tu ?
As tu un session_start ailleurs dans ton code ? Si oui.. retire celui qui se trouve dans le contruct de la class cart
Si ton souci persiste... merci de nous coller ton code complet ainsi qu'un print_r des variables $_GET et $_SESSION
<?php
//Affichage des erreurs PHP ( A mettre au début de tes scripts PHP )
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
//on inclus la class qui permet de gérer le panier
// require_once "chemin/vers/le/fichier/cart.class.php";
require_once "cart.class.php";
//Récuperation de valeur URL
$id = $_GET['id'];
$ref = $_GET['ref'];
$prix = $_GET['prix'];
$oPanier->addProduct($id,$ref,1,$prix);
$contenu_panier = $oPanier->getList();
echo "<pre> Contenu du panier :<br>";
print_r($contenu_panier );
echo "</pre>";
?>
edit : ajout des balises de code
j ai pas mis le : $oPanier = new cart(); car quand je le met ca cree bien un panier mais je ne peux ajouter 2 articles dedans, il prends en ID de session l id de l'article
Bonjour, deja merci pour ce code qui m aide beaucoup.
J essaie de l appliquer a mon site avec plusieurs page de produit, et en faisant un ajout par une page de traitement en récuperant les info par un $_GET.
Mais, quand je fais $oPanier->addProduct($id,$ref,1,$prix); (ce sont les noms de mes variables), mon traitement a une erreur car oPanier n est pas défini :
Notice: Undefined variable: oPanier in /var/www/html/test/addpanier.php on line 21
Fatal error: Uncaught Error: Call to a member function addProduct() on null in /var/www/html/test/addpanier.php:21 Stack trace: #0 {main} thrown in /var/www/html/test/addpanier.php on line 21
Pourriez vous m aider s il vous plait, merci
jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024344
>
pparies
21 mars 2019 à 17:58
Bonjour,
Sans voir ton code... difficile de te répondre...
Mais .. dans ton fichier addpanier.php as tu bien fais le require de la class et instancié la variable oPanier ?
26 mars 2019 à 16:42
26 mars 2019 à 16:48
Si tu ne sais pas ce que c'est ni comment ça marche... et bien... commence par te former la dessus.
C'est un minimum de connaitre les différents types de variables et comment les manipuler lorsque l'on apprend un langage.
Une fois que tu auras compris ça... tu verras comment fonctionne le code.
22 mars 2019 à 12:02
la seule chose que je remarque c est
$_SESSION['panier'][$id_produit] qui me parait pas juste mais bon
22 mars 2019 à 12:56
C'est la clé qui permet de tester si le produit est déjà dans le panier ou non
Et donc de pouvoir mettre à jour les quantités ou le supprimer si besoin...
22 mars 2019 à 10:46
22 mars 2019 à 11:34
Regarde la fonction add
Modifié le 22 mars 2019 à 10:37
22 mars 2019 à 10:41
Et c'est normal....
Ça n'a aucun rapport avec l'id de session...
22 mars 2019 à 09:28
Modifié le 22 mars 2019 à 09:30
21 mars 2019 à 19:07
Quelle version de PHP utilises tu ?
As tu un session_start ailleurs dans ton code ? Si oui.. retire celui qui se trouve dans le contruct de la class cart
Si ton souci persiste... merci de nous coller ton code complet ainsi qu'un print_r des variables $_GET et $_SESSION
NB: Pour poster ton code correctement, merci de le faire en utilisant les balises de code.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Modifié le 21 mars 2019 à 19:04
edit : ajout des balises de code
j ai pas mis le : $oPanier = new cart(); car quand je le met ca cree bien un panier mais je ne peux ajouter 2 articles dedans, il prends en ID de session l id de l'article21 mars 2019 à 16:51
J essaie de l appliquer a mon site avec plusieurs page de produit, et en faisant un ajout par une page de traitement en récuperant les info par un $_GET.
Mais, quand je fais $oPanier->addProduct($id,$ref,1,$prix); (ce sont les noms de mes variables), mon traitement a une erreur car oPanier n est pas défini :
Notice: Undefined variable: oPanier in /var/www/html/test/addpanier.php on line 21
Fatal error: Uncaught Error: Call to a member function addProduct() on null in /var/www/html/test/addpanier.php:21 Stack trace: #0 {main} thrown in /var/www/html/test/addpanier.php on line 21
Pourriez vous m aider s il vous plait, merci
21 mars 2019 à 17:58
Sans voir ton code... difficile de te répondre...
Mais .. dans ton fichier addpanier.php as tu bien fais le require de la class et instancié la variable oPanier ?