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: