Rispondi 
Sessioni
Modalitą discussione Modalitą lineare
22-03-2007, 18:37
Messaggio: #1 (permalink)
sanfra
Niubbo
*
Registrato: Mar 2007
Messaggi: 3
Reputazione:

Sessioni


Salve, ho un piccolo problema:
allora io non riesco a far funzionare un carrello di un ecommerce;
vi faccio un esempio di come lo sto impostando:
la pagina dei prodotti ha l'immagine, il prezzo, il titolo e un campo "hidden" che serve a inserire l'id del prodotto;
l'altra pagina e' cosi':

session start();
$sid=session_id();
$pid=$_POST[id];
if($sid==""){
throw new exception("Errore nelle sessioni");
}
if(isset($_session['cart']) && isset($_session['cart'][$id])){
$cart=&$_SESSion['cart'][$id];
$cart['quantita']++;
}
else{
$cart['quantita']=1;

}
Io non so se e' corretto,visto che non funziona penso proprio di no,mi sapreste dare un suggerimento?
Grazie[/color]

trova tutti i messaggi dell'autore Quota questo messaggio nella risposta
22-03-2007, 18:49
Messaggio: #2 (permalink)
Helmakil
Forumista Giovane
***
Registrato: Dec 2006
Messaggi: 134
Reputazione:

RE: Sessioni


Innanzitutto, benvenuto, se ti va puoi presentarti...
L'impostazione dello script ? molto strana... Comunque il problema non ? nelle sessioni, secondo me, ma nell'impostazione stessa. Non capisco perch? creare una chiave per "quantit?" quando puoi molto tranquillamente posizionare tutto nel valore di id... non so se mi sono spiegato...
L'errore sta nel puntatore cart, che inizializzi nell'if ma poi utilizzi anche nell'else... ovviamente non pu? funzionare! Inoltre non ha molto senso inizializzarlo per un operazione cos? piccola... Comunque, ecco un codice corretto, non testato ma corretto (anche se, ovviamente, ti consiglio di utilizzare un database, per una gestione ottimale).

Codice PHP:
session_name('tuosito'); #Attribuisci un nome alla sessione
session start();
error_reporting(E_ALL); #Con questo ti saresti accorto subito dell'errore :D
$sid=session_id();
$id=$_POST['id'];
if(
$sid==""){
throw new 
exception("Errore nelle sessioni");
}

if(isset(
$_SESSION['cart']) && isset($_SESSION['cart'][$id]))
//Se inizializzi il puntatore qui, non sar? disponibile nell'else, ecco l'errore!
#$cart=&$_SESSION['cart'][$id];
????$_SESSION['cart'][$id]++;
else
????
$_SESSION['cart'][$id] = 1


Cos? dovrebbe funzionare 18


Ultima modifica di Helmakil : 22-03-2007 alle ore 18:50.

trova tutti i messaggi dell'autore Quota questo messaggio nella risposta
22-03-2007, 18:55
Messaggio: #3 (permalink)
sanfra
Niubbo
*
Registrato: Mar 2007
Messaggi: 3
Reputazione:

RE: Sessioni


Scusami se non mi sono presentato, ma ero preso dalla soluzione,per me introvabile.
Ciao!

allora,io creavo un puntatore, perche' dopo mi serviva per mettere i dati del database (titolo,prezzo ect.) nelle sessioni:$_session['titolo'],$_session['prezzo'] ect.
cmq grazie .
Posso farti anche un altra domanda inerente sempre al carrello?

un'altra cosa che mi succede e' che quando inserisco i prodotti nel carrello non riesco ad incrementarli.mi da sempre e solo un prodotto.
come devo fare?
Grazie

trova tutti i messaggi dell'autore Quota questo messaggio nella risposta
22-03-2007, 19:49
Messaggio: #4 (permalink)
Helmakil
Forumista Giovane
***
Registrato: Dec 2006
Messaggi: 134
Reputazione:

RE: Sessioni


uhm... ma ti appoggi ad un database, no? Allora non ha senso salvare tutte le informazioni anche in session 18
Ti do un consiglio: creati delle funzioni php specifiche, e salva tutti i dati sul database. Dall'utente fai passare solo l'id

Codice PHP:
session_name('tuosito');
session_start();
$sid session_id();
$id $_POST['id'];
if (!
isNumeric($id))
    die(
"l'id deve essere numerico"); 

verificando che sia numerico.
Passando oltre, verifichi che l'id esista, e la disponibilit?

Codice PHP:
$es_query mysql_query("SELECT * FROM `prodotti` WHERE `id` = '"$id ."' LIMIT 1") or die(mysql_error()); #Esistenza
if (!mysql_num_rows($es_query))
    die(
"E' stato selezionato un prodotto non valido");
$disp_query mysql_query("SELECT * FROM `prodotti` WHERE `id` = '"$id ."' AND `disp` >= 1 LIMIT 1")
if (!
mysql_num_rows($disp_query))
    die(
"Il prodotto ? esaurito"); 

dopodich? inserisci o effettui un update con la funzione sql update, appunto, a seconda di una query che eseguirai per il controllo di colli gi? esistenti 18


trova tutti i messaggi dell'autore Quota questo messaggio nella risposta
23-03-2007, 20:47
Messaggio: #5 (permalink)
sanfra
Niubbo
*
Registrato: Mar 2007
Messaggi: 3
Reputazione:

RE: Sessioni


Grazie Ancora di tutto avevo ancora una piccola confusione sulle Sessioni visto che provengo dalla programmazione lato client(C++ Builder 6.0, Visual Basic 6.0),e adesso grazie a te sono riuscito a capirle e ad impostare un progetto sulle sessioni.Si la soluzione del database l'avevo gia' implementato,avevo fatto le relazioni dovute e anche alcune prove sul funzinamento ed era tutto ok.
Anche perche' sto usando le classi per progettare questo e-commerce!
Alla prossima spero mi sarai ancora di aiuto come questa volta.

trova tutti i messaggi dell'autore Quota questo messaggio nella risposta
Rispondi 

Discussioni simili
Discussione: Autore Risposte: Letto: Ultimo messaggio
Sad Sessioni e cookie...arabo per me!!! ari 3 209 11-09-2007 15:58
Ultimo messaggio: ari
  Sessioni php fdalesio 3 274 23-04-2007 18:44
Ultimo messaggio: probid

Sessioni
Guarda versione stampabile
Invia la discussione a un amico
Sottoscrivi la discussione
Aggiungi discussione alle favorite

Regole di Scrittura
Tu non puoi inserire nuovi messaggi.
Tu non puoi rispondere ai messaggi.
Tu non puoi inviare messaggi.
Tu non puoi modificare i tuoi messaggi.
Il codice HTML č Disattivato.
Il codice MyCode č Attivato.
Gli Smilies sono Attivato.
Il codice [IMG] Attivato.
Vai al Forum:

Data e Ora attuale: 08-09-2008, 09:33

Contattaci - Punto Web