carrello.php:
	Codice PHP:
	
<?php
error_reporting (E_ALL); 
session_start();
function esiste($id_prodotto){
    $carrello=$_SESSION['prodotti'];
    $i=0;
    $flag = false;
    while ((count($carrello) > 0) && !$flag){
        $temp=array_shift($carrello);
        if ($temp['idprodotto'] == $id_prodotto)
            $flag = true;
        $i++;
    }
    $flag=array('esiste'=>$flag,'pos'=>$i-1);
    return $flag;
}
function Carrello($id_prodotto, $codice_prodotto, $articolo, $quantita, $prezzo) {
    if    (array_key_exists('prodotti',$_SESSION)){
        $flag=esiste($id_prodotto);
        if ($flag['esiste']){
              $_SESSION['prodotti'][$flag['pos']]['quantità'] +=$quantita;
        } else {
            $temp=array('idprodotto'=>$id_prodotto,'codice_prodotto'=>$codice_prodotto,'articolo'=>$articolo,'quantità'=>$quantita,'prezzo'=>$prezzo);
               array_push($_SESSION['prodotti'],$temp);
        }
    } else {
           $_SESSION['prodotti'][0]=array('idprodotto'=>$id_prodotto,'codice_prodotto'=>$codice_prodotto,'articolo'=>$articolo,'quantità'=>$quantita,'prezzo'=>$prezzo);
    }
}
//unset($_SESSION['prodotti']);
// idprodotto | codice_prodotto | articolo | quantità | prezzo
/*  */
Carrello(1, "A0047", "Testo Chimica", 2, 50.15);
Carrello(2, "A0015", "Testo Analisi", 4, 21.1);
Carrello(3, "A0033", "Testo Matematica", 4, 50.5);
Carrello(7, "A0025", "Testo Greco", 4, 34.15);
Carrello(1, "A0047", "Testo Chimica", 2, 50.15);
//unset($_SESSION['prodotti'][1]);
    /*--------------------------------------------------------- 
    Report Variabili
    -----------------------------------------------------------*/
    echo '<hr>';
    print '<pre>';
    print_r($_SESSION);
    print '</pre>';
    echo '<hr>';
?>
 
visualizza_ordini.php:
	Codice PHP:
	
error_reporting (E_ALL); 
session_start();
function SvuotaCarrello(){
    unset($_SESSION['prodotti']);
    // reindirizza fuori
}
function EliminaArticolo(){
    global $ev;
    for ($kk = 0; $kk <= (count($_POST['quntita'])-1); $kk++) {
                //quantita articolo di $_SESSION != $_POST aggiorno $_SESSION
            if ( $_SESSION['prodotti'][$kk]['quantità'] != $_POST['quntita'][$kk] ) {
                    $_SESSION['prodotti'][$kk]['quantità'] = $_POST['quntita'][$kk];
                    $ev=1;
                }
                // verico quale eliminare
            if ($_POST['stato_articolo'][$kk]==0 || $_POST['quntita'][$kk]=="0" || $_POST['quntita'][$kk]==""){
                // 1 elimina gli articoli indicati
                unset($_SESSION['prodotti'][$kk]);
                unset($_POST['stato_articolo'][$kk]);
                unset($_POST['quntita'][$kk]);
                // 2 si riparte
                $ev=0;
            } else {
            $ev=1;
            }
        } // END for
        //riordina l'arry di sessione
        sort ($_SESSION['prodotti']);
        sort ($_POST['stato_articolo']);
        sort ($_POST['quntita']);
}
// all'avvio
$ev=0;
//-------------------------------------------------------------------------------------
if (isset($_POST['elimina']) && $_POST['action'] == 'submitted' && $_POST['elimina'] == 'elimina') {
    echo "Elimina
";
    $ev=2;
} // END elimina
if (isset($_POST['modifica']) && $_POST['action'] == 'submitted' && $_POST['modifica'] == 'modifica') {
    echo "Modifica
";
    EliminaArticolo();
} // END modifica
if (isset($_POST['conferma']) && $_POST['action'] == 'submitted' && $_POST['conferma'] == 'conferma') {
    echo "Conferma
";
    $ev=3;
} // END conferma
?>
<center>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table width="590" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td colspan="7" align="center" valign="middle">[img]ing_graf/carrello.gif[/img]</td>
  </tr>
  <tr align="center" valign="middle">
    <td width="45" valign="middle">Cod.</td>
    <td width="148" valign="middle">Articolo</td>
    <td width="66" valign="middle">Qta. Ord</td>
    <td width="124" valign="middle">Prz. Unit.</td>
    <td width="117" valign="middle">Prezzo</td>
    <td width="36" align="center">[img]ing_graf/yes.gif[/img]</td>
    <td width="38" align="center">[img]ing_graf/no.gif[/img]</td>
  </tr>
<?php
    if ( count($_SESSION['prodotti']) == 0 ){
        // reindirizza fuori
        die("Il carello è vuoto");
    } else {
        $totale=0;
        // Inizio Ciclo
        for ($jj = 0; $jj <= (count($_SESSION['prodotti'])-1); $jj++) {
            if ($ev==0){// all'avvio
                $conferma[$jj] = "checked";
                $elimina[$jj] = "";
            } // END ev=0
            if ($ev==1){ // modifica
                    //Stato articolo
                    if ($_POST['stato_articolo'][$jj]==1){
                        $conferma[$jj] = "checked";
                        $elimina[$jj] = "";
                    } else {
                        $conferma[$jj] = "";
                        $elimina[$jj] = "checked";
                    }
                } //END ev=1
        //-------------------------------------------------------------------------
        // idprodotto | codice_prodotto | articolo | quantità | prezzo
        //-------------------------------------------------------------------------
            $id_prodotto[$jj] = $_SESSION['prodotti'][$jj]['idprodotto'];
            $codice_prodotto[$jj] = $_SESSION['prodotti'][$jj]['codice_prodotto'];
            $articolo[$jj] = $_SESSION['prodotti'][$jj]['articolo'];
            $quantita[$jj] = $_SESSION['prodotti'][$jj]['quantità'];
            $prezzo[$jj] = $_SESSION['prodotti'][$jj]['prezzo'];
            $prezzo_quantita[$jj] = ($prezzo[$jj] * $quantita[$jj]);
            $totale += $prezzo_quantita[$jj];
        //-------------------------------------------------------------------------
?>
  <tr>
    <td><?= $codice_prodotto[$jj]; ?></td>
    <td align="left"><?= $articolo[$jj]; ?></td>
    <td align="center" valign="middle"><input name="quntita[<?= $jj; ?>]" type="text" value="<?= $quantita[$jj]; ?>" size="4" maxlength="3"></td>
    <td align="left">€<?= $prezzo[$jj]; ?></td>
    <td align="left">€<?= $prezzo_quantita[$jj]; ?></td>
    <td align="center" valign="middle"><input name="stato_articolo[<?= $jj; ?>]" type="radio" value="1" <?= $conferma[$jj]; ?>></td>
    <td align="center" valign="middle"><input name="stato_articolo[<?= $jj; ?>]" type="radio" value="0" <?= $elimina[$jj]; ?>></td>
  </tr>
<?php
        
        } // END CICLO
     } // END Verifica
 ?> 
  
  <tr>
    <td colspan="3" align="right">Totale€</td>
    <td colspan="2"><?= $totale; ?></td>
    <td colspan="2" align="center">
        <input type="hidden" name="action" value="submitted">
        <input name="elimina" type="submit" id="elimina" value="elimina">
        <input name="modifica" type="submit" id="modifica" value="modifica">
        <input name="conferma" type="submit" id="conferma" value="conferma">
  </tr>
</table>
</form>
</center>
<?php 
    /*--------------------------------------------------------- 
    Report Variabili
    -----------------------------------------------------------*/
    echo '<hr>';
    print '<pre>';
        echo '|<- $_POST - ================================ ->|
';
        print_r($_POST);
        //echo '|<- $_GET - ================================= ->|
';
        //print_r($_GET);
        echo '|<- $_SESSION - ============================= ->|
';
        print_r($_SESSION);
    print '</pre>';
    echo '<hr>';
?>
</body>
</html>
 
-------------------------------------------------------------
va tutto ok, ma su visualizza_ordini.php quando elimino 3 articoli su 4 me ne visualizza comunque 2
 non riesco a capire dove è l'errore...???
Ciao
cichity74 :master: