sessioni e problemi....

excalibur

Nuovo Utente
26 Giu 2007
4
0
0
ciao a tutti, sto facendo uno script php che mi permetta di avere un carrello attraverso cui selezionare gli articoli e fare un'offerta su uno o più di essi.
Con il vecchio PHP usando session_register mi funzionava tutto bene, ora portandolo sulla versione 4.x di php se ritorno al carrello dell'html iniziale mi perdo i valori inseriti al primo passaggio.
Mi spiego meglio:
dal primo html offro 90,00 euro per articolo 1, accedo quindi alla seconda pagina che mi riposta correttamente i dati dell'articolo e il prezzo totale.
A questo punto se torno alla pagina di scelta degli articoli, se inserisco ad esempio l'articolo 2 mi perdo l'ordine precedente, mentre prima mi aggiungeva nell'array il nuovo articolo...
qualcuno mi aiuta e sa dirmi dove sbaglio?

La prima parte è in html/javascript e mi permette di inserire una offerta per diversi articoli, questo è il codice:


<html>
<head>
<title>Lista</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#ffffff" link="black" vlink="blue" alink="orange" leftmargin="0" topmargin="10" marginwidth="0" marginheight="0">
<center>
<h2><br>
articoli in asta </h2>
<p>&nbsp;</p>
</center>

<table width="700" border="0" align="center" cellpadding="5">

<form action="carrello.php" method="post" name="basket" id="basket">
<tr valign="middle" bgcolor="#CCCCCC">
<td valign="top"><strong>ARTICOLO</strong></td>
<td align="center" valign="top"><strong>offerta<br>
<span class="Stile2">(specificare importo)</span></strong></td>
<td valign="top">&nbsp;</td>
</tr>
<tr valign="middle" bgcolor="#CCCCCC">
<td width="514"> <input name="add" type="hidden" value="1"> <input name="nome" type="hidden" value="articolo 1">
<input name="caratt" type="hidden" value="descrizione articolo 1">
articolo 1 <font size="-1"> <em> base asta Euro 98,00<br>
</em></font></td>
<td align="center"><input name="prezzo" type="text" id="prezzo" size="6">
<input type="HIDDEN" name="qta" size="2" maxlength="2" value="1"></td>
<td><div align="center"><a href="#" onClick="basket.submit();" >offri</a></div></td>
</tr>
</form>
<form name="basket1" method="post" action="carrello.php">
<tr valign="middle" bgcolor="#CCCCCC">
<td><p>
<input name="add" type="hidden" value="1">
<input name="nome" type="hidden" value="articolo 2">
<input name="caratt" type="hidden" value="descrizione articolo 2">
<font size="-1">articolo 2 base asta <em>Euro 80,00</em></font></p> </td>
<td align="center" valign="top"><input name="prezzo" type="text" id="prezzo" size="6">
<input type="HIDDEN" name="qta" size="2" maxlength="2" value="1"></td>
<td valign="top"><div align="center"><a href="#" onClick="basket1.submit();" >offri</a></div></td>
</tr>
</form>
<form action="carrello.php" method="post" name="basket2" id="basket2">
<tr valign="middle" bgcolor="#CCCCCC">
<td> <p>
<input name="add" type="hidden" value="1">
<input name="nome" type="hidden" value="articolo 3">
<input name="caratt" type="hidden" value="descrizione articolo 3">
<font size="-1">articolo 3 <em>base asta Euro 270,00</em></font></p> </td>
<td align="center" valign="top"><input name="prezzo" type="text" id="prezzo" size="6">
<input type="HIDDEN" name="qta" size="2" maxlength="2" value="1"></td>
<td valign="top"><div align="center"><a href="#" onClick="basket2.submit();" >offri</a></div></td>
</tr>
</form>

</table>

</body>
</html>

Lo script richiamato ha questo codice:

<? session_start();
error_reporting(E_ALL);
?>
<html>
<head>
<title>Carrello</title>



<meta http-equiv="Content-Type" content="text/html;">


<body bgcolor="#ffffff" link="black" vlink="blue" alink="orange" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<? include( "bas_add.php" ) ?>

</body>
</html>


Il php incluso è il seguente:

<?


if( isset( $_POST[add] ) ) {

$prods[] = $_POST[nome];
$qtas[] = $_POST[qta];
$prezzos[] = $_POST[prezzo];
$caratts[] = $_POST[caratt];
$nprods++;

}



if( isset( $_POST[update] ) ) {

unset( $toDel );

for( $n=0; $n<count($prods); $n++ ) {
if( $qtasx[ $n ] == 0 ) {
echo "Eliminax" . $n;
$toDel[] = $n;
} else
$qtas[$n] = $qtasx[$n];


}


for( $n=0; $n<count( $toDel ); $n++ ) {
echo "<br>eliminiamo " . count( $toDel ) . " - " . $n;
array_splice( $prods, $n, 1 );
array_splice( $qtas, $n, 1 );
array_splice( $prezzos, $n, 1 );
array_splice( $caratts, $n, 1 );
$nprods--;
}

}

if( !strstr( $_SERVER["HTTP_REFERER"] , $_SERVER["REQUEST_URI"] ) ) {
echo "<font color=black>OK <br /></font>";
$urlBack = $_SERVER["HTTP_REFERER"] ;
$_SESSION['urlBack'] = $urlBack;

} else
echo "<font color=black>NO<br /></font>";



?>

<table border="1" cellpadding="1" cellspacing="0" align="center" width=700>
<tr>
<td align="left"><font face="Arial, Helvetica, sans-serif" size="1">Prodotto</font></td>
<td align="left">
<font face="Arial, Helvetica, sans-serif" size="1">Descrizione</font></td>
<td align="right">
<font face="Arial, Helvetica, sans-serif" size="1">Quant.</font>
</td>
<td align="right">
<font face="Arial, Helvetica, sans-serif" size="1">Prezzo</font> </td>
<td align="right">
<font face="Arial, Helvetica, sans-serif" size="1">Prezzo quant.</font> </td>
<td>&nbsp;</td>
</tr>
<form name="basket" method="POST" action="<?= $_SERVER["PHP_SELF"] ?>">
<input type="hidden" name="update" value="1">
<? $dTotale = 0;
for( $n=0; $n<count( $prods ); $n++ ) { ?>
<tr>
<td>
<?= $prods[$n] ?>
</td>
<td>
<?= $caratts[$n] ?>
</td>
<td align="right">
<input type="text" size="2" name="qtasx[<?= $n ?>]" value="<?= $qtas[$n] ?>">
</td>
<td align="right">
<?= sprintf( "%.2f", $prezzos[$n] ) ?>
</td>
<td align="right">
<?= sprintf( "%.2f", $prezzos[$n] * $qtas[$n] ) ?>
</td>
<td> <? echo $n; ?>&nbsp;&nbsp;&nbsp;<a href="bas_del.php?return=carrello.php&id=<?= $n ?>"><font size=1&quot;>elimina</font></a></td>
</tr>
<? $dTotale += $prezzos[$n] * $qtas[$n];
} ?>
</form>
<tr>
<td>TOTALE</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="right">
<?= sprintf( "%.2f", $dTotale ) ?>
</td>
<td></td>
</tr>
</table>
<p><br>


<p>&nbsp;</p>
<table width="500" height="40" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center"><a href="#" onClick="javascript:basket.submit();">modifica quantit&agrave;</a><br>
<font face="Arial, Helvetica, sans-serif" size="2" color="red"><strong>(Prima di cliccare modificare la quantit&agrave; nela casella del prodotto!)</strong></font></td>
</tr>
</table>
<br>
<table width="500" height="40" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center"><a href="<?= $_SESSION['urlBack'] ?>">Torna
all'asta</a></td>
</tr>
</table>
<br>
<table width="500" height="40" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center"><a href="#"><b><font size=+1>Concludi offerta </font></b></a></td>
</tr>
</table>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<?
//session_register( "nprods" );
//session_register( "prods" );
//session_register( "qtas" );
//session_register( "prezzos" );
//session_register( "caratts" );


$_SESSION['nprods'] = $nprods;
$_SESSION['prods'] = $prods;
$_SESSION['qtas'] = $qtas;
$_SESSION['prezzos'] = $prezzos;
$_SESSION['caratts'] = $caratts;



echo "dollaro prods = " . $prods[0] . "<br />";
echo "session nprods = " . $_SESSION['nprods'] . " <br />";
echo "enne = " . $n . " <br />";
echo "add = " . $_POST[add]. " <br />";
echo "update = " . $_POST[update]. " <br />";
echo "qtas = " . $qtas[$n]. " <br />";
echo "qtasx = " . $qtasx[Sn]. " <br />";
echo "urlback in session equivale a : " . $_SESSION['urlBack'] . "<br />";
echo "referer : " .$_SERVER["HTTP_REFERER"] ."<br />" . " uri : " . $_SERVER["REQUEST_URI"] ."<br />" . "urlback equivale a : " . $_SESSION['urlBack'] . "<br />";
?>

Al termine dello script oltre al vecchio session_register ora commentato ho provato degli echo per visulizzare i diversi valori...
 
Ricorda che i valori messi nella session sono disponibili
nella prossima pagina o quando ricarichi la stessa pagina.
SE scrivi:
$_SESSION['valore']=1;
echo $_SESSION['valore'];

Non ti darà niente fin quando non ricarichi la pagina.
 
si ma...

ricaricando e ok, ma se rientri dopo esser ripassato dalla prima si perde tutto
 
tutorial e... testa dura!

grazie per il tutorial, ma la mia capa tosta non mi lascia in pace finché non riesco a capire dove c... sbaglio nel mio script: qualche anima pia lo esamina?
grazie ancora
 

Discussioni simili