Carello php

Ciao a tutti!

Sono fresco di questo forum, ma di php non sono proprio uni sprovveduto. ::)

Sto facendo un sito con un'area riservata.

Sono arrivato alla parte che mi crea più problemi cioè quella dell carello.  :-\

In Pratica non conosco esattamente la procedura per creare la funzione che "salva" la scelta.

Le sessioni le so usare infatti il catalogo è gestito con le sessioni ecc. ma non riesce ad entrarmi in testa il funzionamento del carello. Qualcuno mi può dare un'idicazione? :uglystupid:

Siccome non è per lavoro ma a scopo didattico non mi interessano le risposte che mi dicono prendi cose già fatte da qui....  O0

Gringrazio tutti già da adesso!

inviato 10 anni fa
Marco Dario
X 0 X

Se conosci le sessioni allora non dovresti avere problemi. Supponendo che i prodotti siano identificati da un ID numerico ti basta creare una variabile di sessione di tipo array nella quale inserire o cancellare i diversi prodotti selezionati.

Supponendo di chiamare questa variabile $_SESSION['carrello'], per aggiungere un prodotto:

$_SESSION['carrello'][$ID_prodotto] = $quantita;

per cancellarlo:

unset($_SESSION['carrello'][$ID_prodotto]);

per svuotare completamente il carrello:

$_SESSION['carrello'] = array();

Se hai bisogno di memorizzare più informazioni per ciascun prodotto puoi usare un array di array:

$_SESSION['carrello'][$ID_prodotto] = array('quantita' => $quantita , 'prezzo' => $prezzo , 'colore' => $colore);

per eliminarlo si procede come prima.

Usando gli array avrai a disposizione tutte le potentissime funzioni di PHP per manipolare il carrello, fare delle ricerche, ecc..

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni

Grazie per la risposta!  O0

Sono abbastanza all'inizio con le sessioni però credo di aver capito. in pratica dentro alla sessione faccio un'array delle varie scelte ke l'utente fà. poi nella pagina ke visualizza il carello non faccio altro ke stampare la sessione con l'array. Giusto?  ::)

risposto 10 anni fa
Marco Dario
X 0 X

Esatto, ovviamente la procedura deve tener presente di come hai organizzato l'array che rappresenta il carrello. In generale comunque si tratta di ciclare con un semplice foreach l'intero array e stampare i dati contenuti.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Supponendo di chiamare questa variabile $_SESSION['carrello'], per aggiungere un prodotto:

$_SESSION['carrello'][$ID_prodotto] = $quantita;

Se hai bisogno di memorizzare più informazioni per ciascun prodotto puoi usare un array di array:

$_SESSION['carrello'][$ID_prodotto] = array('quantita' => $quantita , 'prezzo' => $prezzo , 'colore' => $colore);

per eliminarlo si procede come prima.

Usando gli array avrai a disposizione tutte le potentissime funzioni di PHP per manipolare il carrello, fare delle ricerche, ecc..

 :bye:

Secondo te è meglio utilizzare l'array per mettere la descrizione del oggetto che inserisci nel carello o è meglio inserire solo L'ID dell'oggetto e poi dal carello fare una query ciclica per trovare i dettagli dell'oggeto dal database?

risposto 10 anni fa
Marco Dario
X 0 X

Ci sono i pro ed i contro di entrambi gli approcci. Da un lato avere tutto in sessione velocizza l'accesso alle informazioni (si riducono le query). Però si rischia di occupare parecchio spazio sul disco se le sessioni sono numerose.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ok a me interessa ke sia veloce allora metto tutto dentro all'array  8)

risposto 10 anni fa
Marco Dario
X 0 X

Eccomi di nuovo.  :)

pensavo di farcela ma sabato pomeriggio mi sono messo a vagare con il mouse davanti al monitor con Dreamwaver  :-\

Praticamente come faccio ad aggiungere all'array la scelta che l'utente fà.

Mi spiego meglio:

La query mi stampa gli articoli e poi ci metto cosa? insieme alla stringa ke stampa la query? $_SESSION["carello"][]?

risposto 10 anni fa
Marco Dario
X 0 X

tu a che punto sei arrivato del carrello?

Hai già fatto effettuare una scelta all'utente del prodotto che vuole inserire nel carrello?

Se sì, come l'hai effettuata la scelta?quali parametri hai passato?

CMQ prova a postare un po di codice, la parte interessata..

ciao

risposto 10 anni fa
Lore
Lore
1
X 0 X

Si infatti posterò un pò di codice scusate.  :-\

Comunque sono al punto diciamo così, dove l'utente ha davanti la tabella con tutti gli articoli. deve cliccare sul carello.

A quel punto... cose ci devo mettere sul collegamento ke aggiunge al carello?

risposto 10 anni fa
Marco Dario
X 0 X

un bel ID del prodotto che ha selezionato:

http://www.miosito.it/aggiungi.php?id=123

che rimanda allo script che aggiunge il prodotto 123 al carrello.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

e su aggiungi.php

faccio REQUEST["id"] = $_SESSION["carello"];  cosi lo aggiungo alla sessione del carello?

risposto 10 anni fa
Marco Dario
X 0 X

No grande cazzata....  :uglystupid: scusa

risposto 10 anni fa
Marco Dario
X 0 X

In un mio post precedente ti ho già fatto degli esempi, ma tutto dipende da come hai strutturato l'array che costituisce il carrello. Ad esempio potresti usare

$_SESSION['carrello'][] = $_GET['id'];

per memorizzare solo l'ID del prodotto selezionato, oppure

$_SESSION['carrello'][$_GET['id']] = $quantita;

per memorizzare anche il numero di prodotto acquistati.

:bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Rieccomi!

Allora Gianni ti volevo ringraziare per i tuoi consigli! Sono riuscito ad ottenere quello che volevo!!! Grazie! ;)

Ora pero ti devo di nuovo disturbare....  ::)

Questo è il codice della pagina del "carello"

if (isset($_POST["actionflag"]) && $_POST["actionflag"]=="submit")

   {

   if (query1 ($articoli, "cod_art", $_POST["cod_art"]))

      {

      if(isset($_SESSION['ordine']) && array_key_exists($_POST['cod_art'], $_SESSION['ordine']))

         {

             foreach($_SESSION['ordine'] as $_POST['cod_art'] => $qi);

             $somma = $qi + $_POST['qord'];

             $_SESSION['ordine'][$_POST['cod_art']] = $somma;

         }

         else

         {

             $_SESSION['ordine'][$_POST['cod_art']] = $_POST['qord'];

         }

   }

   else

   {

   $msg .= "Codice articolo non esistente.</br>";

   }

}

A questo script giungono via post $_POST['cod_art']  $_POST['qord'] che non sono altro che il codice articolo più la quantità. e fin qui tutto ok. O0

I problemi iniziano qui...

      if(isset($_SESSION['ordine']) && array_key_exists($_POST['cod_art'], $_SESSION['ordine']))

         {

             foreach($_SESSION['ordine'] as $_POST['cod_art'] => $qi);

             $somma = $qi + $_POST['qord'];

             $_SESSION['ordine'][$_POST['cod_art']] = $somma;

         }

         else

         {

             $_SESSION['ordine'][$_POST['cod_art']] = $_POST['qord'];

         }

Praticamnte questa parte di codice va a vedere se esiste già questa chiave nell'array e se esiste somma il suo valore con quello passato dal post $_POST['qord'] e lo riscrive nell'array.

In teoria dovrebbe funzionare ma non è cosi.  Foreach si blocca sulla prima chiave inserita e solo lì funziona mentre nelle altre chiavi và a prendere il valore della prima e lo somma ovviamente non và bene... faccio un esempio

cod_art 1   quantità = 5

cod_art 2   quantità = 1

cod_art 3   quantità = 1

se io vado ad aggiungere un articolo su cod_art 2 la somma per lui è 6.... :idiot: 1+1 = 6????  :2funny:

Secondo te come posso risolvere il problema???

Poi sempre secondo te è giusto il procedimento che stò facendo per la gestione dell carello? o ci sono altri metodi più efficaci?

Ti ringrazio già da Subito  :)

Marco.  :bye:

risposto 10 anni fa
Marco Dario
X 0 X

Sostituisci le righe:

if(isset($_SESSION['ordine']) && array_key_exists($_POST['cod_art'], $_SESSION['ordine']))

{

    foreach($_SESSION['ordine'] as $_POST['cod_art'] => $qi);

    $somma = $qi + $_POST['qord'];

    $_SESSION['ordine'][$_POST['cod_art']] = $somma;

}

else

{

    $_SESSION['ordine'][$_POST['cod_art']] = $_POST['qord'];

}

con

if(isset($_SESSION['ordine'][$_POST['cod_art']]))

{

    $_SESSION['ordine'][$_POST['cod_art']] += $_POST['qord'];

}

else

{

    $_SESSION['ordine'][$_POST['cod_art']] = $_POST['qord'];

}

L'approccio mi sembra corretto

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie mile Gianni!!! Sei il mio Guru!!!!  Ma come fai???? :'(

risposto 10 anni fa
Marco Dario
X 0 X

studio e pratica fanno la perfezione :) dopo tutto non serve studiarsi php e poi non saperlo applicare alla situazione in cui serve ;D , io cerco di usarlo per tutto , così nel caso in futuro mi ritrovi davanti ad un problema che ho risolto prima , so già che fare :2funny:

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

infatti.. per quante cose leggi (libri recensioni ecc..) la pratica è la cosa migliore...  O0

risposto 10 anni fa
Marco Dario
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda