session Carrello

allora inizio la session carrelo

if (!isset($_SESSION['carrello'])) {
$carrello = array();
$carrello=$_SESSION['carrello'];
}

dopo di che clikkando sul prodotto da aggiungere fa il controllo se esiste aggiungi altrimenti inserisco il prodotto nel carrello.

if($_POST['aggiungi']) {
if (array_key_exists($_POST['id_prod'],$_SESSION['carrello']))
{
$_SESSION['carrello'][$_POST['id_prod']]['confezioni'] += $_POST['confezioni'];
$_SESSION['carrello'][$_POST['id_prod']]['bottiglie'] += $_POST['bottiglie'];
}
else
{
$_SESSION['carrello'][$_POST['id_prod']] = array('id_prod'=>$_POST['id_prod'],'confezioni'=>$_POST['confezioni'],'bottiglie'=>$_POST['bottiglie'], 'num_botti_scont'=>$_POST['num_botti_scont'], 'listino_nas'=>$_POST['listino_nas'], 'omaggio'=>$_POST['omaggio']);
}}

E fino a quì tutto ok cioè fa il controllo sull' id_prodotto ($_POST['id_prod'])

Ma se voglio fare ilcontrollo sia sull' id_prodotto e sul listino_nas come devo fare?

ho provato in una marea di modi

if (array_key_exists($_POST['id_prod']['listino_nas'],$_SESSION['carrello']))
{
if (array_key_exists($_POST['id_prod'][$_POST['listino_nas']],$_SESSION['carrello']))
{

e in tanti altri modi ma niente da fare.

In pratica quando clikko sul pulsante relativo al prodotto deve controllare se il prodotto selezionato con id_prodotto e  listino_nas non è gia presente

Cosa suggerite?

 :bye:

inviato 7 anni fa
leoneweb
X 0 X

Praticamente stai lavorando con array multidimensionali...

Se non ti funziona io non saprei come darti un aiuto se non definisci chiaramente prima come sono impostate le matrici...o meglio le variabili in gioco inviate tramite array post...

risposto 7 anni fa
Mario Santagiuliana
modificato 7 anni fa
X 0 X

Sono andato a vedermi gli array multidimensionali ma non ne sono convinto......

 :bye:

risposto 7 anni fa
leoneweb
X 0 X
Sono andato a vedermi gli array multidimensionali ma non ne sono convinto......

No, io ti stavo chiedendo come sono organizzate le tue variabili/array...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

io inserisco nell'array le variabli in questo modo

$_SESSION['carrello'][$_POST['id_prod']] = array('id_prod'=>$_POST['id_prod'],'confezioni'=>$_POST['confezioni'],'bottiglie'=>$_POST['bottiglie'], 'num_botti_scont'=>$_POST['num_botti_scont'], 'listino_nas'=>$_POST['listino_nas'], 'omaggio'=>$_POST['omaggio']);

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

Mi sembra che la logica di utilizzo di array_key_exists è scorretta negli if che vuoi fare e che non funzionano.

Mi sembra tu voglia vedere se nell'array fornito esiste o meno un valore, in realtà array_key_exists serve per vedere se esiste una chiave, nella fattispecie dell'array $_SESSION['carrello'][un_numero_id_prod] ti dovrebbe servire per vedere se è presente la chiave "id_prod" o "confezioni" o "bottiglie" ecc, non il valore che queste assumono.

Ti rimando alla documentazione ufficiale:

http://www.php.net/array_key_exists

P.S. può essere che mi stia sbagliando e non ho capito una mazza di quello che vuoi fare...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

forse devo prima risolvere il problema di immissone prodotti nel carrello e poi la parte key-exists

Allora per ora facevo

$_SESSION['carrello'][$_POST['id_prod']] = array('id_prod'=>$_POST['id_prod'],'confezioni'=>$_POST['confezioni'],'bottiglie'=>$_POST['bottiglie'], 'num_botti_scont'=>$_POST['num_botti_scont'], 'listino_nas'=>$_POST['listino_nas'], 'omaggio'=>$_POST['omaggio']);

e fino a qui andrebbe tutto bene se voglio l'avorare con un solo indice [$_POST['id_prod']]

adesso se volessi aggiungere un'altro indice $_POST['listino_nas']    come dovrei fare?

avevo pensato:

$_SESSION['carrello'][$_POST['id_prod']['listino_nas']] = array('id_prod'=>$_POST['id_prod'],'confezioni'=>$_POST['confezioni'],'bottiglie'=>$_POST['bottiglie'], 'num_botti_scont'=>$_POST['num_botti_scont'], 'listino_nas'=>$_POST['listino_nas'], 'omaggio'=>$_POST['omaggio']);

ma non è così

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

Non così:

$_SESSION['carrello'][$_POST['id_prod']['listino_nas']]

Ma così forse:

$_SESSION['carrello'][$_POST['id_prod']][$_POST['listino_nas']]
risposto 7 anni fa
Mario Santagiuliana
X 0 X
$_SESSION['carrello'][$_POST['id_prod']][$_POST['listino_nas']] = array('id_prod'=>$_POST['id_prod'],'confezioni'=>$_POST['confezioni'],'bottiglie'=>$_POST['bottiglie'], 'num_botti_scont'=>$_POST['num_botti_scont'], 'listino_nas'=>$_POST['listino_nas'], 'omaggio'=>$_POST['omaggio']);

Però in questo modo non mi aggiunge niente nel carrello

se faccio foreach ($_SESSION[carrello'] as key)

                         $aa=key['id_prod'];

                         echo $aa;

non ottengo niente

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

se faccio foreach ($_SESSION[carrello'] as key)

                         $aa=key['id_prod'];

                         echo $aa;

non ottengo niente

Per forza, è un array multidimensionale, devi definire anche "listino_nas":

se faccio foreach ($_SESSION[carrello'] as key) 
                         $aa=key['id_prod']['listino_nas']; //<--- devi indicare i numeri esatti ovviamente.
                         echo $aa;
risposto 7 anni fa
Mario Santagiuliana
X 0 X

quindi...........?

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

Quindi ho scritto male il codice ma dovresti fare una cosa simile:

foreach ($_SESSION['carrello'] as key){
           $aa=key['id_prod']['listino_nas'];
           echo $aa;
}
risposto 7 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda