Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281

    non 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('

    <p align="center">Attenzione:sei arrivato a questa pagina senza averne l\'autorizzazione.

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281
    nessuno?

  4. #4
    Originariamente inviato da riaw
    nessuno?
    Potevi uppare questo invece di aprirne un'altro...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281
    Originariamente inviato da piero.mac
    Potevi uppare questo invece di aprirne un'altro...


    questo è con le session, l'altro era con il db, e sono due meccanismi completamente diversi.......

    cmq ho provato a modificare quello con le session così:

    nel file ordine.php, dove c'è il form per la quantità, metto anche un campo nascosto, che contiene il codice del prodotto:

    echo'<form action="aggiornamento.php" method="post" name="carrello">';
    print('<td><div align="center">');
    print ("<input type=\"text\" name=\"quantita\" size=\"2\" maxlength=\"2\" value=\"${ordine[2]}\">");
    print ("<input type=\"hidden\" name=\"object\" value=\"${ordine[0]}\">");
    print('</div></td>');


    nel file aggiornamento.php lego la quantità al codice prodotto e aggiorno l'elemento dell'array session.

    $keys=array_keys($_SESSION);

    foreach($keys as $key)

    {

    if ($_SESSION[key][0]==$_POST[object])

    {

    $_SESSION[$key][2]=$_POST[quantità];

    }

    il problema è che non funziona......
    cioè, anche se la cambio, la quantità torna sempre 1....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.