Specifieke waarde uit multidimensionele array verwijderen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Snelle Jaap

Snelle Jaap

07/03/2018 14:21:48
Quote Anchor link
Ik heb een winkelmandje met een een kruisje om een product te verwijderen, dit werkt alleen nog niet. Hoe kan ik dit voor elkaar krijgen?

Mijn cart.php pagina (hier wordt naar gepost via een ajax script):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?PHP
if(isset($_POST['product'])){
  $thisProduct = array(
    'product' => $_POST['product'],
    'price' => $_POST['price'],
    'picture' => $_POST['picture'],
    'quantity' => $_POST['quantity'],
  );

  if (isset($_SESSION['cart'])) {
    $_SESSION['cart'][] = $thisProduct;
  }
else {
    //Session is not set, setting session now
    $_SESSION['cart'] = array();
    $_SESSION['cart'][] = $thisProduct;
  }
}

$numberofproducts = count($_SESSION['cart']);

?>

<!-- Shop Cart -->
<ul class="topnav navLeft topnav--cart">
  <li class="drop">
    <a href="#" class="kl-cart-button" title="View your shopping cart">
      <p><i class="glyphicon glyphicon-shopping-cart icon-white flipX-icon xs-icon" data-count="<? echo $numberofproducts; ?>"></i>Winkelwagen</p>
      <span class="hidden-xs hidden-sm hidden-md hidden-lg">Mijn winkelwagen</span>
    </a>
    <div class="pPanel">
      <div class="inner cart-container">
        <div class="widget_shopping_cart_content">
          <ul class="cart_list product_list_widget ">
          <?php
          foreach($_SESSION['cart'] as $cartproduct){
            $productlist .= '
            <li>
              <a href="#" class="remove" title="Remove this item">×</a>
              <a href="#" class="product-title">
                <img src="'
.$cartproduct['picture'].'" alt="'.$cartproduct['product'].'" title="'.$cartproduct['product'].'" />'.$cartproduct['product'].'
              </a>
              <span class="quantity">'
.$cartproduct['quantity'].' × <span class="amount">'.$cartproduct['price'].'</span></span>
            </li>'
;
          }

          echo $productlist;
          // echo '<pre>';
          // print_r($_SESSION['cart']);
          // echo '</pre>';

          ?>

          </ul>
          <!-- end product list -->
          <p class="total">
            <strong>Subtotal:</strong><span class="amount">$99.90</span>
          </p>
          <p class="buttons">
            <a href="cart.html" class="button wc-forward">View Cart</a>
            <a href="checkout.html" class="button checkout wc-forward">Checkout</a>
          </p>
        </div>
      </div>
    </div>
  </li>
</ul>


Mijn array ziet er zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array
(
    [0] => Array
        (
            [product] => Douche 1
            [price] => 1200
            [picture] => cms/images/douche.jpg
            [quantity] =>
        )

    [1] => Array
        (
            [product] => Douche 1
            [price] => 1200
            [picture] => cms/images/douche.jpg
            [quantity] =>  => 18
        )
)

Hij moet dus on click de juiste key verwijderen, 0 of 1 met alle data die daarin zit.

Wat is de beste manier om dit aan te pakken?

Via ajax moet dit gebeuren, ik zal voor het gemak mijn ajax er nog even bij zetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Attach a submit handler to the form
tpj( ".cart" ).submit(function( event ) {
  // Stop form from submitting normally
  event.preventDefault();
  // Get some values from elements on the page:
  var $form = tpj( this ),
    $product = $form.find( "input[name='product']" ).val(),
    $price = $form.find( "input[name='price']" ).val(),
    $picture = $form.find( "input[name='picture']" ).val(),
    $quantity = $form.find( "input[name='quantity']" ).val(),
    url = $form.attr( "action" );
  // Send the data using post
  var posting = tpj.post( url, { product: $product, price: $price, picture: $picture, quantity: $quantity} );
  // Put the results in a div
  posting.done(function( data ) {
    var content = tpj( data );
    tpj( "#result" ).empty().append( content );
  });
});
 
PHP hulp

PHP hulp

22/09/2020 13:05:13
 
- Ariën -
Beheerder

- Ariën -

07/03/2018 14:25:27
Quote Anchor link
Is het niet gemakkelijker om het artikelnummer als key te gebruiken?
Dan kan je in je deleteknop deze dan verwerken (bijv. een data-attribuut)
 
Snelle Jaap

Snelle Jaap

07/03/2018 14:49:05
Quote Anchor link
- Ariën - op 07/03/2018 14:25:27:
Is het niet gemakkelijker om het artikelnummer als key te gebruiken?
Dan kan je in je deleteknop deze dan verwerken (bijv. een data-attribuut)


Slim. Ik ga dat proberen. Maar voordat ik dat doe moet ik eerst voor elkaar zien te krijgen om bestaande values niet dubbel toe te voegen maar alleen de quantity van het dubbel toegevoegde product bij elkaar op te tellen.
 
Thomas van den Heuvel

Thomas van den Heuvel

07/03/2018 17:03:05
Quote Anchor link
Snelle Jaap op 07/03/2018 14:49:05:
Slim. Ik ga dat proberen. Maar voordat ik dat doe moet ik eerst voor elkaar zien te krijgen om bestaande values niet dubbel toe te voegen maar alleen de quantity van het dubbel toegevoegde product bij elkaar op te tellen.

> array_key_exists()
 
Snelle Jaap

Snelle Jaap

08/03/2018 09:42:46
Quote Anchor link
** quoteknip**

Thanks, ik heb het gefixed!
Gewijzigd op 08/03/2018 09:47:06 door - Ariën -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.