begin process at 2012 02 15 23:34:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

pb panier et include


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb panier et include

mercredi 4 février 2009 à 17:45:41 | pb panier et include

yebs

Bonjour,

j'ai un soucis qui m'embête bien dans la réalisation d'un site internet.
Un peu d'explications :
tout le site est géré par un système d'include(). J'ai donc un index, et toutes les autres pages sont appelées au sein d'un <div> en fonction du clic sur les rubriques d'un menu... jusque là pas de problème.

Ensuite, sur 1 des pages insérées par l'include(), j'ai des articles répertoriés dans une base de données, que j'affiche, et je propose d'ajouter chaque article dans un panier. pour le panier, je me suis référé à cette page : http://jcrozier.developpez.com/articles/web/panier/
(ma connexion à la base, le session_start et l'appel aux fichiers externes se font 1 seule fois au niveau de l'index.php)
De plus, l'affichage du nombre d'articles dans mon panier est présent sur l'index, donc visible sur toutes les pages du site pour l'internaute.

En local, AUCUN problème, j'ajoute, je vide mon panier, je navigue entre mes pages... les données de session de mon panier sont conservées sans aucun problème n'importe où je me trouve.
Par contre, dès que je transfère tout ça sur un serveur je rencontre des problèmes :
1 - je ne peux ajouter qu'un seul article dans mon panier (si je clique sur un autre, il vient remplacer celui existant et non l'ajouter)
2 - quand j'ai donc mon seul article dans le panier et que je me rends sur un autre page du site (donc je reste sur l'index, mais j'include une autre page), ma session de panier se perd, et j'obtient un panier vide...

Donc ma question :
A quoi cela peut être du ? Pourquoi cette différence entre local et en ligne ? Quelqu'un a-t-il des pistes pour me sortir de cette "galère" ?

Merci d'avance.

A bientôt sur phpcs
jeudi 5 février 2009 à 09:27:43 | Re : pb panier et include

faiblard

Bonjour,

Question idiote numéro 1 : Es tu sur d'avoir remonté tout t'es fichier sur le serveur?

As tu sur d'avoir ton session_start partout?
jeudi 5 février 2009 à 10:12:54 | Re : pb panier et include

yebs

bonjour,

a priori, OUI, j'ai remonté TOUS les fichiers sur le serveur. et j'ai mon session_start() non pas sur toutes les pages, mais uniquement sur la page index.php qui "porte" en quelque sorte toutes les autres par un système d'include().
D'ailleurs si je mets session_start() sur toutes les pages, ça me crée une erreur comme quoi une session est déjà ouverte, ce qui est logique...

Voila la réponse à la "question idiote numéro 1"...
Une deuxième ?

Merci
jeudi 5 février 2009 à 18:09:16 | Re : pb panier et include

kohntark

Membre Club
Salut,

Il faudrait voir un peu ton code (la gestion d'ajout, de suppression etc ...)

... et la question idiote n°2 est :
Ton hébergeur supporte t il les sessions ?


Cordialement,


Kohntark -

vendredi 6 février 2009 à 09:51:29 | Re : pb panier et include

yebs

salut,

je viens de vérifier que l'hébergeur supporte bien les sessions, et OUI, c'est bien le cas.
Le système de panier est identique à ce que l'on peut trouver sur http://jcrozier.developpez.com/articles/web/panier/ à savoir (pour la création et l'ajout) :
/////////////////////////////////////////////////////////////////////////////////
/* PAGE fonctions-panier.php */

function creationPanier(){
$ret=false;

if (isset( $_SESSION['panier']))
 $ret=true;
else
{

  $_SESSION['panier']=array();
  $_SESSION['panier']['libelleProduit']=array();
  $_SESSION['panier']['qteProduit']=array();
  $_SESSION['panier']['prixProduit']=array();
  $ret=true;
}
return$ret;
}

function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){

if (creationPanier())
{
$positionProduit=array_search($libelleProduit,$_SESSION['panier']['libelleProduit']);

  if ($positionProduit!==false)
  {
   $_SESSION['panier']['qteProduit'][$positionProduit]+=$qteProduit;
  }
  else
  {
   array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
   array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
   array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
  }

}

else
  echo"Unproblèmeestsurvenuveuillezcontacterl'administrateurdusite.";
}

///////////////////////////////////////////////////////////////////////////////////////
/* PAGE commande.php */
et ensuite, j'ajoute de cette manière :

if (isset($_POST['libelle']) && isset($_POST['qte']) && isset($_POST['prix']))
{
$libelleProduit=intval($_POST['libelle']);
$qteProduit=intval($_POST['qte']);
$prixProduit=floatval($_POST['prix']);

ajouterArticle($libelleProduit,$qteProduit,$prixProduit);
}
$req=mysql_query("SELECT * FROM commande");
while ($res=mysql_fetch_array($req))
{
$id=$res['id'];
$txt=$res['texte'];
$px=$res['prix'];

echo $txt." - ".$px."
<form action=\"\" method=\"post\">
<input name=\"libelle\" type=\"hidden\" value=\"".$id."\" />
<input name=\"qte\" type=\"hidden\" value=1 />
<input name=\"prix\" type=\"hidden\" value=\"".$px."\" />
<input type=\"submit\" value=\"Ajouter au panier\" /></form><br>";
}
////////////////////////////////////////////////////////////////////////////////////
Voila ! ce code fait donc parti de la page 'commande' qui est appelée dans un <div> au sein de la page
index.php géré par un système d'include().

//////////////////////////////////////////////////////////////////////////////////////
/* PAGE index.php */
et voici comment commence le fichier index.php :

<?php
session_start();
$filename = "param.php";
if (file_exists($filename)) include($filename);
$connect = mysql_connect($mysql,$login,$pass);
mysql_select_db($base, $connect);
require_once "link.inc.php";
include_once "fonctions-panier.php";
?>
//////////////////////////////////////////////////////////////////////////////////////////////
session_start en premier,
param.php est le fichier de connexion à la base de données
link.inc.php est le fichier permettant de gérer l'include()
fonctions-panier.php contient les fonctions du panier

Ces 1ères lignes de code sont inscrites UNIQUEMENT sur l'index.php.


Voila pour mon code...
Tout cela n'explique pas pourquoi tout ceci marche très bien en local avec easyphp 1.8 et pas en ligne !

Quelqu'un a-t-il déja géré un système de panier en plus d'un système d'include de page ?

Merci.

A bientôt

vendredi 6 février 2009 à 18:17:57 | Re : pb panier et include

kohntark

Membre Club
Salut,

... ben je ne vois pas trop non plus. Tu ne tournes pas avec une version de php < 4.2.0 par hasard ?
Pour déboguer je mettrai des print_r($_SESSION); un peu partout; après session_start dans index.php et sur toutes les pages include concernées, ça peut permettre d'identifier le pb.
Je remplacerai aussi tous les include (et include_once) par des require .... on ne sait jamais

Tu as bien l'affichage des erreurs activé ?
Il ressemble à quoi le link.inc.php ?


Au passage ton panier semble très peu sécurisé (mais je n'ai pas vu tout ton code ). Par exemple ça :
<form action=\"\" method=\"post\">
<input name=\"libelle\" type=\"hidden\" value=\"".$id."\" />
<input name=\"qte\" type=\"hidden\" value=1 />
<input name=\"prix\" type=\"hidden\" value=\"".$px."\" />
<input type=\"submit\" value=\"Ajouter au panier\" /></form>
C'est très dangereux si tu n'as pas de contrôle par la suite, rien n'empêche d'envoyer un prix à 1 centimes alors qu'il en vaut 10000 fois plus. En tout état de cause, même si c'est contrôlé par la suite, seuls les champs libelle et qte devraient être posté, c'est ensuite au script côté serveur de faire le calcul du prix à partir de la DB.


Cordialement,

Kohntark -

mardi 10 février 2009 à 15:56:30 | Re : pb panier et include

yebs

salut Kohntark !

un grand merci pour le conseil de sécurité vis à vis du panier ! je vais faire en sorte de sécuriser tout ça.

Sinon, pour mon problème de départ, j'arrête de chercher, ça m'a trop saoulé et j'ai surtout perdu trop de temps là-dessus.
La solution un peu crade => j'ai sorti la page commande de l'include et j'ai repris le CSS de l'index pour que l'internaute de base ne se rende compte de rien.
Ça ne me satisfait pas, mais bon... on va faire comme ça, ça sera plus simple !

Encore merci beaucoup d'avoir essayé avec moi de chercher une solution au problème.

A bientôt sur phpcs.
mardi 10 février 2009 à 16:07:44 | Re : pb panier et include

yebs

...petite précision :
j'avais déjà fait des <pre> var_dump($_SESSION) </pre> pour voir comment se comportait le panier, et c'est bien comme cela que j'avais vu qu'au lieu d'ajouter un article au panier, ça remplacé l'article qu'on avait déja mis dans le panier.

De plus, la version de PHP est supérieure à 4.2.0.

Et enfin, le link.inc.php ressemble à ça :
/*-----------------------------------------------------------------------------------*/
$numlien = @$_GET["numlien"];
switch ($numlien)
 {
    case 1 :
    $page = "index.php";
    break;
   
    case 2 :
    $page = "commande.php";
    break;

   default :
   $page = "index.php";
   break;
}
/*-----------------------------------------------------------------------------------*/
et l'index.php donne ça :
<div id="menu">
echo "<a href=\"index.php?numlien=1\">Accueil</a><br />";
echo "<a href=\"index.php?numlien=2\">Commande</a><br />";
</div>
...et plus loin
<div id="general">
<?php include $page; ?>
</div>
/*-----------------------------------------------------------------------------------*/

Voila pour les renseignements que tu demandais !
Si ça te donne des idées dans la résolution du problème, je suis toujours preneur !

Cordialement.

Yebs


Cette discussion est classée dans : site, pages, include, index, panier


Répondre à ce message

Sujets en rapport avec ce message

Contrôler et Protéger les pages d'un site et obliger le visiteur à venir depuis la page index du site [ par rem78 ] Bonjour, Je cherche un script en php qui permetterais de protéger les pages d'un site et qui obligerais le visiteur à rentrer sur le site depuis la p Problème Tableau [ par VivoBaggio ] Salut tout le monde. Voilà, je sais que cette question ne devrait pas se trouver dans cette partie du forum, mais je n'ai pas su la mettre autre part. "analyse" de site [ par Evangun ] Bonjour à tous,ce n'est pas du php mais je me demandais s'il y avait un logiciel qui par exemple pouvait parcourir un site (en local chez moi ce sera incorporé une page. (include) [ par damien174 ] bonjour, j'ai un soucis je veux faire mon site et dans mon site il y aura un menu pour aller sur divers page et forum, je problème c'est actuellement header [ par kyript ] Bonjour a tousvoila j'ai un index qui en fonction d'une variable d'url fait un include d'une page (test.php)Dans test.php j'ai un include d'un script Liens sur pages comme sur ce site.... [ par LaTatadu91 ] Salut, voila il y a quelque temps j'ai poser une question pr savoir comment faire pour afficher correctement les liens sur les pages générées apres ue Gestion des pages et des champs [ par KoRG19 ] Bonjour,Je suis sur le point de concevoir un site web pour l'entreprise ou je travail et je me demandais de quel façon gérer les pages et les champs d developpement d un site [ par adess00 ] Salut je suis en train de faire mon site et j ai plusieurs question1-comment fait on en php pour que si une condition est vrai , on lance une page (pa Gestion d'un site et de son contenu, je souhaite créer une pages dans une bd, et la faire affiché en ordre de position [ par euhreux ] un page dans l'arborescense de mon site au premier niveau, je fais affiché sous ce niveau les pages sous le précédent niveau, mais j'aimerais qu'elle


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 9,142 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales