Toon posts:

[PHP]/[JS] Bepaalde delen uit sessie verwijderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een probleem.
Bij mijn oude website als iemand een product toevoegde in winkelmandje zette hij alles in de database.
Waardoor de hele database eigenlijk vol staat met producten die of iemand niet meer wil, of vergeten is enz.
Nu wil ik dit aanpassen door het winkelmandje "eenmalig" te maken.
Dus tot je je browser sluit.

Voor het toevoegen gebruik ik op dit moment een iFrame, omdat ik niet weet hoe ik het in javascript kan doen

Toevoegen gaat zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if($_POST['command']=='add'){

$max=count($_SESSION['mandje']);
$max = $max +1;
for($i = $max; $i <= $max;) {
          
$product = $_POST["product"];
$_SESSION['mandje'][$i]['product'] = $product;

// quantity
$q = $_POST["quantity"];
$_SESSION['mandje'][$i]['qty'] = $q;
$_SESSION['qty'][$i]['qty'] = $q;

echo "<div class=\"toegevoegd\">toegevoegd</div>";

$get = @mysql_query ** hier staat de query **
while($put = @mysql_fetch_array($get)) {    
$waarde = $q * $put[product_prijs];
$_SESSION['totalprice'] += $waarde;
}


Leegmaken gaat zo:
PHP:
1
2
3
4
if($_POST['command']=='clear'){
unset($_SESSION['mandje']);
unset($_SESSION['totalprice']);
}


Dit werkte gewoon naar behoren


Producten uitlezen gaat zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(is_array($_SESSION['mandje'])){
$max=count($_SESSION['mandje']);
$max = $max + 1;
for($i=0;$i<$max;$i++){
$pid=$_SESSION['mandje'][$i]['product'];
$q=$_SESSION['mandje'][$i]['qty'];


$get = @mysql_query("SELECT ***** productid = '$pid'");
while($put = @mysql_fetch_array($get)) {
echo $put[product_naam];
echo "<a href=\"javascript:del($i)\">X</a>";
}
}
}


Het uitlezen van producten werkt prima, het probleem zit hem in het verwijderen van echt alleen dat product.


Als test heb ik 2 producten in mijn winkelmandje staan, print_r($_SESSION[mandje]); geeft het onderstaande weer:

PHP:
1
Array ( [1] => Array ( [product] => 4 [qty] => 1 ) [2] => Array ( [product] => 37 [qty] => 1 ) )


product => 4 is product nummer 4
qty => 1 is dat ik er maar eentje wil.

product => 37 is product nummer 37
qty => 1 is dat ik er maar eentje wil.


Nu probeerde ik bijvoorbeeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
function remove_product($pid){
$pid=intval($pid);
$max=count($_SESSION['mandje']);
$max = $max + 1;
for($i=0;$i<$max;$i++){
if($pid==$_SESSION['mandje'][$i]['product']){
unset($_SESSION['mandje'][$i]);
break;
}
}
$_SESSION['mandje']=array_values($_SESSION['mandje']);
}



Nu probeerde ik voor elk product het volgende er in te zetten:

code:
1
2
3
4
5
<form action="" method="post" enctype="multipart/form-data" name="shoppingcartdel">
<input type="hidden" name="command" />
<input type="hidden" name="pid" />
(<a href="javascript:del(<?php echo $i; ?>)">X</a>)
</form>


Stel ik heb 10 producten, krijg ik 10x een form, omdat ik geen betere manier wist.

Klik ik op het kruisje krijg ik te zien:

"Do you really mean to delete this item"

Javascript code:
code:
1
2
3
4
5
6
7
   function del(pid){
        if(confirm('Do you really mean to delete this item')){
            document.shoppingcartdel.pid.value=pid;
            document.shoppingcartdel.command.value='delete';
            document.shoppingcartdel.submit();
        }
    }

Dan verwacht ik dat hij wat gaat doen, maar niet dus.

Nu heb ik geprobeerd de php code onder de .js te zetten, er boven, op andere plaatsen maar allemaal werken niet.

Ook probeerde ik in de phpcode: function remove_product($pid){ echo "lala"; } te zetten, kijken of ik wat terug kreeg.. geen reactie. ook niet als ik in de sourcecode kijk.

Wat mij lijkt dat het probleem ligt vanaf de melding: Do you really mean to delete this item en function remove_product.


Wat ook apart is, normaal had ik "leeg winkelmandje" gewoon op de frontpage staan, en het werkte alleen daar.

Als ik bv naar /mandje ga, wat de inhoud van mijn winkelmandje laat zien, gebruik dezelfde code, werkt het opeens niet meer.
Terwijl ik javascript duidelijk aanroep als domein/map/file
Zou dat ook het probleem kunnen zijn met het verwijderen van de producten? dat als het niet op de /index.php pagina is dat het javascript gebeuren niet meer werkt?


Nog een kleine update:

als ik naar /mandje ga en ik kijk in de code staat er:

code:
1
 <script type="text/javascript" src="http://dev.************.nl/js/shoppingcart.js"></script>


Dat moet dan neem ik aan overal op de website werken

Misschien veel vragen, en ik ben niet de beste uitlegger ter wereld.
Dus ik hoop dat het te snappen is


Update: 02-03-2012 @ 19:19
Waarschijnlijk zit het ergens in de mod rewrite.

Ik maak gebruik van de volgende structuur:

/cat/type/product

Als ik iets wil toeven en ik zit in /cat dan werkt het,

zit ik in /cat/type dan werkt het niet meer, behalve als er geen producten in die groep zitten.. dan wel

[ Voor 4% gewijzigd door Verwijderd op 02-03-2012 19:26 ]