Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2011, 13h35   #1
 
Inscription : février 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 17
Points : -1
Points : -1
Par défaut Variables de session irrécupérables ! Pourquoi ?

bonjour,

J'apprends à créer une boutique, mais ce n'est pas chose évidente !
Heureusement que mes ami Google et forums sont là !
J'avance bien grâce à cette précieuse aide !

Me voici maintenant avec un petit (?) problème.
J'ai une page html "boutique00.php", qui gère 4 listes liées dynamiques.
Mes choix successifs fonctionnent.
C'est donc tout normalement que je détermine mon choix sur la 4e liste.
Et là, c'est "ajaxcategorie04.php" qui est lancé.
Ce programme remplit bien la 2e partie du formulaire (panier).
"ajaxcategorie04.php". Il me crée bien un lien type submit.
Jusque là tout va bien !
J'avance !

Après avoir appuyer sur le bouton "ajouter" (de la page "boutique00.php",
comment faire pour envoyer $qte, $pvhtva... (qui sont calculés dans "ajaxcategorie04.php",
dans des variables de session, pour que je puisse les exploiter par la suite dans la page html "ajouter.php"
qui, elle, permettra de manipuler le panier par la suite (modifier, supprimer ou confirmer la commande).
J'essaie les variables de session, mais cela ne fonctionne pas !

D'avance, je vous remercie pour le temps que vous passerez à m'aider.
Bonne journée.


Voici la partie javascript (qui lance "ajaxcategorie04.php"entre les balises head et /head) de "boutique00.php" :
Code :
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
 
<script type="text/javascript">
<!--
// categorie03
function gocategorie03() {
	getXhr();
	// On définit ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function() {
		// On ne fait quelquechose que si l'on a tout reçu et que le serveur est OK
		if (xhr.readyState == 4 && xhr.status == 200) {
			leselect = xhr.responseText;
			// On se sert de innerHTML pour rajouter les options à la liste
			document.getElementById('detail').innerHTML = leselect;
			document.getElementById("loader03").style.display = "none";
		} else {
			document.getElementById("loader03").style.display = "inline";
		}
	}	
	// Ici on va voir comment faire du post
    xhr.open("POST","php/ajaxcategorie04.php",true);
	// Ne ps oublier ç pour le post
  	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	// Ne ps oublier de poster les arguments
	// ici l'id de cat01
	sel = document.getElementById('categorie03');
	idcategorie03 = sel.options[sel.selectedIndex].value;
	xhr.send("ix="+idcategorie03);
	// Ouverture du tableau devis
	var selectValue = getSelectValue('categorie03');
	if (selectValue == "" || selectValue == "none") {
		hidden = 5;
	} else {
		hidden = 6;
	}
	document.getElementById("tr04").style.display = "";
	document.getElementById("tr05").style.display = "";
	document.getElementById("tr06").style.display = "";
	document.getElementById("tr07").style.display = "";
	document.getElementById("tr08").style.display = "";
	document.getElementById("tr09").style.display = "";
	document.getElementById("tr10").style.display = "";
}
 
-->
</script>

Voici la partie html qui gère le formulaire, c'est "boutique00.php" :
Code :
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
 
    <form  name="enpanier" action="panier00.php" method="post" target="_self">
    <table border="0" align="left" cellspacing="0" id="tableoptions" style="vertical-align:middle;">
    	<tr>
        <td width="150"></td>
        <td width="280"></td>
        <td width="20"></td>
        <td width="0"></td>
        </tr>
 
        <tr>
        <td colspan="4" style="padding:7px;" bgcolor="#0E72B5" class="blanc bold">Prix en ligne instantané</td>
        </tr>
 
        <tr>
        <td colspan="4" style="padding:7px;">
        Afin d'établir un devis,<br>veuillez choisir parmi toutes les options suivantes :</td>
        </tr>
 
        <tr id="tr00">
        <td width="136" style="padding:7px;">Document</td>
        <td width="280" id="td00">
        	<select name="categorie00" id="categorie00" style="width:280px;" onChange="gocategorie00();" >
            <option value="none">-- Choisissez, svp ! --</option>
            <?php
				require_once("php/connexionMysql.inc.php");
				$query = mysql_query("SELECT * FROM shop_categorie00 ORDER BY id");
				while ($back = mysql_fetch_assoc($query)) {
					echo "<option value='".$back['id']."' ><span style='width: 280px;' >".$back['libelle']."</span></option>";	
				}
			?>
            </select>
        </td>
        <td width="20">
            <span id="loader00" class="hidden" style="width:20px;"><img src="images/boutique/loader16.gif" alt="loading" width="16" height="16" border="0" align="absmiddle" /></span>
        </td>
        <td width="0">&nbsp;</td>
        </tr>
 
        <tr id="tr01" style="display:none;">
        <td width="136" style="padding:7px;">Descriptif</td>
        <td width="280" id="td01">
<!--    <select name="categorie01" id="categorie01" style="width:280px;"></select>  -->     
		</td>
        <td width="20">
            <span id="loader01" class="hidden" style="width:20px;"><img src="images/boutique/loader16.gif" alt="loading" width="16" height="16" border="0" align="absmiddle" /></span>
        </td>
        <td width="0">&nbsp;</td>
        </tr>
 
        <tr id="tr02" style="display:none;">
        <td width="136" style="padding:7px;">Format</td>
        <td width="280" id="td02">
<!--    <select name="categorie02" id="categorie02" style="width:280px;"></select>  -->     
        </td>
        <td width="20">
            <span id="loader02" class="hidden" style="width:20px;"><img src="images/boutique/loader16.gif" alt="loading" width="16" height="16" border="0" align="absmiddle" /></span>
        </td>
        <td width="0">&nbsp;</td>
        </tr>
 
        <tr id="tr03" style="display:none;">
        <td width="136" style="padding:7px;">Papier</td>
        <td width="280" id="td03">
<!--    <select name="categorie03" id="categorie03" style="width:280px;"></select>  -->  
        </td>
        <td width="20">
            <span id="loader03" class="hidden" style="width:20px;"><img src="images/boutique/loader16.gif" alt="loading" width="16" height="16" border="0" align="absmiddle" /></span>
        </td>
        <td width="0">&nbsp;</td>
        </tr>
    </table>
    <?php
	$qte=1;
    ?>
    <div id="detail" class="c12">
        <table>
        </table>
    </div>
 
    </form>

Voici le fichier "ajaxcategorie04.php" :
Code :
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
 
<?php
	session_start();
	require_once("fonctions-panier.inc.php");
 
	require_once("connexionMysql.inc.php");
	echo "<table name='table' id='table' border='0' align='left' cellspacing='0' style='vertical-align:middle;'>";
	if (isset($_REQUEST['ix'])) {
		$query = mysql_query("SELECT * FROM shop_articles".
			" WHERE id=".$_REQUEST['ix']);
		while ($back = mysql_fetch_assoc($query)) {
			$remisehtva = $back['prix_ht'] * $back['remise_pourcentage'] / 100 + $back['remise_valeur'] ;
			$pvhtva = $back['prix_ht'] - $remisehtva ;
			$pvtvac = $pvhtva * (100 + $back['taux_tva']) / 100;
			echo "<tr id='tr04'><td width='136' style='padding-left:7px; padding-right:7px;'></td>
				<td width='280' id='td04'><div class='commentaire'>".$back['commentaire']."</div></td>
				<td width='20'></td><td width='0'></td></tr>";
			echo "<tr id='tr05'><td width='136' style='padding-left:7px; padding-right:7px;'></td>
				<td width='280' id='td05' class='delai' align='right'>Délai : ".$back['delai']."</td>
				<td width='20'></td><td width='0'></td></tr>";
			echo "<tr id='tr06'><td width='136' style='padding-left:7px; padding-right:7px;'></td>
				<td width='280' id='td06'>&nbsp;</td>
				<td width='20'></td><td width='0'></td></tr>";
			echo "<tr id='tr07'><td width='136' style='padding-left:7px; padding-right:7px;'></td>
				<td width='280' id='td07' class='c20 bold' align='right'>Prix HTVA : <span class='bleu'>".number_format($pvhtva,2,',',' ')." € </span></td>
				<td width='20'></td><td width='0'></td></tr>";
			echo "<tr id='tr08'><td width='136' style='padding-left:7px; padding-right:7px;'></td>
				<td width='280' id='td08' class='c15' align='right'>".number_format($pvtvac,2,',',' ')." € TVAC</td>
				<td width='20'></td><td width='0'></td></tr>";
			echo "<tr id='tr09'><td width='136' style='padding-left:7px; padding-right:7px;'></td>
				<td width='280' id='td09' class='c05' align='right'>&nbsp;</td>
				<td width='20'></td><td width='0'></td></tr>";
			echo "<tr id='tr10' height='48'><td width='136' style='padding-left:7px; padding-right:7px;'></td>
        		<td width='280' id='td10' align='right' class='c15 bold bouton_ajouter' ><a href='ajouter.php' onClick=enpanier.submit() style='padding-right:25px'>Ajouter</a></td>
				<td width='20'></td><td width='0'></td></tr>";
		}
		$refLigne=$_REQUEST['ix'];
		$qteLigne=0;
		$libLigne= $back['designation'];
		$pvnLigne= $pvhtva;
		ajouterArticle($refLigne, $libLigne, $qteLigne, $pvnLigne);
	}
	echo "</table>";
?>
Voici "ajouter.php" (dans une version simpliste)
Code :
1
2
3
4
5
6
7
8
9
10
 
<?php
	session_start();
 
	echo "voici les valeurs 0<br>";
	echo $_SESSION['panier']['refProduit'][0]."<br>";
	echo "voici les valeurs 1<br>";
	echo $_SESSION['panier']['refProduit'][1]."<br>";
 
?>
Voici enfin un extrait de "fonctions-panier.inc.php" :
Code :
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
 
<?php
 
/**
 * Verifie si le panier existe, le créé sinon
 * @return booleen
 */
function creationPanier(){
   if (!isset($_SESSION['panier'])){
      $_SESSION['panier']=array();
      $_SESSION['panier']['refProduit'] = array();
      $_SESSION['panier']['libProduit'] = array();
      $_SESSION['panier']['qteProduit'] = array();
      $_SESSION['panier']['pvnProduit'] = array();
      $_SESSION['panier']['verrou'] = false;
   }
   return true;
}
 
 
/**
 * Ajoute un article dans le panier
 * @param string $libProduit
 * @param int $qteProduit
 * @param float $pvnProduit
 * @return void
 */
function ajouterArticle($refProduit,$libProduit,$qteProduit,$pvnProduit){
 
   //Si le panier existe
   if (creationPanier() && !isVerrouille())
   {
      //Si le produit existe déjà on ajoute seulement la quantité
      $positionProduit = array_search($refProduit,  $_SESSION['panier']['refProduit']);
 
      if ($positionProduit !== false)
      {
         $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
      }
      else
      {
         //Sinon on ajoute le produit
         array_push( $_SESSION['panier']['refProduit'],$refProduit);
         array_push( $_SESSION['panier']['libProduit'],$libProduit);
         array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
         array_push( $_SESSION['panier']['pvnProduit'],$pvnProduit);
      }
   }
   else
   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
?>
jytest est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h59.


 
 
 
 
Partenaires

Hébergement Web