Allora ragazzi,
il problema è questo. Ho un form di questo tipo:
Codice PHP:
<input type="hidden" name="id" value="<?php echo " ". $_GET['id'] . " "?>">
<tr>
<TD align="center"><?php if ($array['disponibilitainteri']==0){echo "no";}else{echo"si";}?></TD>
<TD align="center"><?php echo "$array[prezzointeri]";?></TD>
<TD><SELECT NAME="numerointeri" onchange="calcolatotale();";>
<OPTION>0</OPTION>
<OPTION>1</OPTION>
<OPTION>2</OPTION>
<OPTION>3</OPTION>
<OPTION>4</OPTION>
<OPTION>5</OPTION>
</SELECT>
</TD>
</tr>
<tr>
<td><div>Disponibilità</div></td>
<td><div>Prezzo</div></td>
<td><div>Qtà</div></td>
</TR>
<tr>
<TD align="center"><?php if ($array['disponibilitaridotti']==0){echo "no";}else{echo"si";}?></TD>
<TD align="center"><?php echo "$array[prezzoridotti]";?></TD>
<TD><SELECT NAME="numeroridotti" onchange="calcolatotale();";>
<OPTION>0</OPTION>
<OPTION>1</OPTION>
<OPTION>2</OPTION>
<OPTION>3</OPTION>
<OPTION>4</OPTION>
<OPTION>5</OPTION>
</SELECT>
</TD>
<tr>
<td><div>Disponibilità tavoli</div></td>
<td><div>Prezzo</div></td>
<td><div>Qtà</div></td>
<td><div>Totale</div></td>
</TR>
<tr>
<TD align="center"><?php if ($array['disponibilitatavoli']==0){echo "no";}else{echo"si";}?></TD>
<TD align="center"><?php echo "$array[prezzotavoli]";?></TD>
<TD><SELECT NAME="numerotavoli" onchange="calcolatotale();";>
<OPTION>0</OPTION>
<OPTION>1</OPTION>
<OPTION>2</OPTION>
<OPTION>3</OPTION>
<OPTION>4</OPTION>
<OPTION>5</OPTION>
</SELECT>
Praticamente cosa mi consente di fare? Di effettuare acquisti su diversi tipi di prodotti, poi mi calcola il totale con uno script java.
Or bene, ecco il problema. Questi i controlli sui vari campi:
Codice PHP:
$disponibilitainteri = mysql_result($query, 0, 'disponibilitainteri');
$disponibilitaridotti = mysql_result($query, 0, 'disponibilitaridotti');
$disponibilitatavoli = mysql_result($query, 0, 'disponibilitatavoli');
$disponibilita = mysql_result($query, 0, 'disponibilita');
$event_id = mysql_result($query, 0, 'event_id');
$utente_id = mysql_result($query, 0, 'utente_id');
mysql_free_result($query);
if ($disponibilitainteri == 0) {
echo "<h3>Spiacente, ma non ci sono biglietti interi disponibili.</h3>";
} elseif ($disponibilitainteri < $numerointeri) {
echo "<h3>Spiacente, ma sono disponibili solo $disponibilitainteri biglietti interi.</h3>
Torna alla pagina di acquisto
";
} elseif ($disponibilitaridotti == 0) {
echo "<h3>Spiacente, ma non ci sono biglietti ridotti disponibili.</h3>";
}
elseif ($disponibilitaridotti < $numeroridotti) {
echo "<h3>Spiacente, ma sono disponibili solo $disponibilitaridotti biglietti ridotti.</h3>
Torna alla pagina di acquisto
";}
elseif ($disponibilitatavoli == 0) {
echo "<h3>Spiacente, ma non ci sono tavoli disponibili.</h3>";
}
elseif ($numerotavoli < $disponibilitatavoli) {
echo "
<h3>Spiacente, ma sono disponibili solo $disponibilitatavoli tavoli.</h3>
Torna alla pagina di acquisto
";
}
else {
// metto l'ordine nel DB
mysql_query("
insert into ordini (numero, numerointeri, numeroridotti, numerotavoli, totale, event_id, utente_id)
values ('$numero', '$numerointeri', '$numeroridotti', '$numerotavoli', '$totale', '$event_id', '$utente_id')")
or die( mysql_error() . "
" . $sql) ;
Ora, mi basta ad esempio che il primo controllo, ossia quello sulla disponibilità dei biglietti interi, verifichi la condizione = a zero e mi blocca lo script. Ma ciò è sbagliato, perchè potrebbero esservi biglietti ridotti disponibili, per cui l'utente potrebbe voler scegliere di acquistare quelli ridotti ma non gli viene consentito perchè il primo controllo blocca l'intero script. Stesso discorso per i tavoli.
Se non ci sono più biglietti, ma un utente vuole un tavolo, non può acquistarlo per i controlli precedenti inibiscono la prosecuzione dello script. Come risolvere il problema? Fare in modo cioè che se ad esempio non vi sono più biglietti interi disponibili, si possa ugualmente comprare quelli ridotti o i tavoli.