|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2000
Città: lodi-crema-milano.
Messaggi: 12333
|
[PHP] nn mi aggiorna i dati della sessione...
sto facendo il carrello con le session.
il sistema è composto da una pagina che si chiama "ordine.php" e da una che si chiama "aggiornamento.php". la pagina ordine.php visualizza gli articoli inseriti e ha un form dove si può variare la quantità. la pagina aggiornamento.php deve prendere il valore dal form della quantità, aggiornare il campo dell'array della session dove è memorizzata la quantità, e reindirizzare alla pagina ordine.php che, in teoria, trovandosi l'array della session modificato, dovrebbe visualizzare la nuova quantità...... è un casino eh? ![]() passando al codice, questi sono i pezzi della pagina ordine.php che riguardano quello che ho detto sopra (poi ovviamente c'è dell'altro codice per formattare i dati): session_start(); $sid = $_COOKIE['sid']; $db=mysql_connect("localhost","root","") or die(mysql_error()); mysql_select_db("portatili",$db) or die(mysql_error()); foreach ($_SESSION[carrello] as $ordine) { $st=mysql_query("SELECT * FROM $ordine[1] WHERE codice = '".$ordine[0]."' ") or die(mysql_error()); // prendi i risultati while ($row=mysql_fetch_assoc($st)) { print("$row[marca]"); print("$row[modello]"); print("$row[prezzo]"); if ($ordine[2] == 0) { $ordine[2] = 1; } print('<form action="aggiornamento.php" method="post" name="carrello">'); print ("<input type=\"text\" name=\"quantità\" size=\"2\" maxlength=\"2\" value=\"${ordine[2]}\">"); $parziale = $row[prezzo]*$ordine[2]; print("$parziale"); } } } print('<input type="submit" value="Aggiorna!">'); mysql_close_db; se c'è qualche graffa in più o in meno non fateci caso, nel file originale sono tutte a posto. tenete presente che ordine[0] è il codice del prodotto ordine[1] è la categoria del prodotto ordine[2] è la quantità. e $parziale è il prodotto fra il prezzo unitario e la quantità. la pagina "aggiornamento.php" ha questo codice: <?php ob_start(); ?> <head> <meta http-equiv="refresh" content="3; ordine.php"> </head> <?php session_start(); $sid = $_COOKIE['sid']; if (is_null($sid)) { print('<br><br><p align="center">Attenzione:sei arrivato a questa pagina senza averne l\'autorizzazione.<br> Non è possibile proseguire.</p>'); } else { foreach ($_SESSION[carrello] as $ordine) { $quantità = $_POST['quantità']; // $elimima = $_POST['elimina']; print("$quantità"); $ordine[2] = $quantità; print("$ordine[2]"); } print ('Attendere di essere riportati alla pagina di riepilogo dell\'ordine.') ; } ?> come potete vedere, ho inserito due print di controllo, una per verificare se è corretto il passaggio con metodo post del valore del campo quantità, l'altra per verificare se viene effettivamente aggiornata la quantità nell'array. con quelle due print di controllo ho verificato che è tutto corretto. nel senso che se inserisco "4" come valore nel campo quantità, e clicco su "aggiorna", mi salta fuori una pagina in cui c'è scritto 44Attendere di essere riportati alla pagina di riepilogo dell'ordine. quindi è tutto corretto, in teoria. in pratica, no, perchè quando avviene il redirect alla pagina "ordine.php", la quantità visualizzata è ancora 1..... dov'è che sbaglio?
__________________
La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
|
per aggionare le variabili di sessioni devi scrivere così:
$_SESSION['carrello'][$i]='valore'; dove $i è la posizione corrente nell'array $_SESSION['carrello'] ciao, Paplo
__________________
Età : 28 - Sviluppatore PHP |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:25.