Capisco che pensare al fatto di andare a popolare 3 diversi DB con una sola form, possa sembrare strano..... ma guarda che di sicuro ci guadagni sul lungo termine.
Mentre ti rispondevo, ieri pomeriggio, pensavo proprio che forse avresti avuto bisogno di più di una tabella.
Pensavo come minimo ad una per le prenotazioni ed una per gli operatori.
Ad ogni modo, proviamo lo stesso a fare qualcosa con una sola form ed un solo DB.
Innanzi tutto andiamo a comporre la nostra form.
Codice PHP:
<?php
// questa è la pagina form.php
include ("array_vari.php");
?>
<form name="prenotazione" action="prenotazione.php" enctype="multipart/form-data" method="post">
<fieldset id="dati">
<legend>Prenotazione OnLine</legend>
<label for="Operatore">Operatore</label>
<select name="operatore" value="- Seleziona -">
<?php
for ($oper = 0; $oper < count($array_operatori); $oper++;)
echo " <option value=\"$oper\">$array_operatori[$oper]</option>\n";
>?
</select>
</p>
<label for="cliente">Nominativo Cliente</label>
<input type="text" id="cliente" name="cliente" />
</p>
<label for="cliente">Luogo Visita</label>
<input type="text" id="luogo" name="luogo" />
</p>
<label for=\"data_gita\">Data Visita</label>
Giorno:
<select name="day_gita" value="- Seleziona -">
<?php
for ($d=1; $d<=31; $d++)
echo "<option value=\"$d\">$d</option>\n";
?>
</select>
Mese :
<select name="mese_gita" value="- Seleziona -">
<option value="01">Gennaio</option>
<option value="02">Febbrio</option>
<option value="03">Marzo</option>
<option value="04">Aprile</option>
<option value="05">Maggio</option>
<option value="06">Giugno</option>
<option value="07">Luglio</option>
<option value="08">Agosto</option>
<option value="09">Settembre</option>
<option value="10">Ottobre</option>
<option value="11">Novembre</option>
<option value="12">Dicembre</option>
</select>
Anno :
<select name="anno_gita" value="- Seleziona -">
<?php
for ($a=date("Y"); $a <= date("Y")+5; $a++)
echo " <option value=\"$a\">$a</option>\n";
>?
</select>
</p>
<label for="numvis">Numero Visitatori</label>
<input type="text" id="numvis" name="numvis" />
</p>
<label for="costovisita">Costo Unitario (€)</label>
<input type="text" id="costounit" name="costounit" />
</p>
<label for="commissione_unitaria">Costo Commissione per visitatore(€)</label>
<input type="text" id="costocomm" name="costocomm" />
</p>
<label for="pagamento">Metodo di Pagamento</label>
<select name="pagamento" value="- Seleziona -">
<?php
for ($mp = 0; $mp < count($array_metodo_pagamento); $mp++;)
echo " <option value=\"$mp\">$array_metodo_pagamento[$mp]</option>\n";
>?
</select>
</p>
<label for=\"data_pagamento\">Data Pagamento</label>
Giorno:
<select name="day_pag" value="- Seleziona -">
<?php
for ($d=1; $d<=31; $d++)
echo "<option value=\"$d\">$d</option>\n";
?>
</select>
Mese :
<select name="mese_pag" value="- Seleziona -">
<option value="01">Gennaio</option>
<option value="02">Febbrio</option>
<option value="03">Marzo</option>
<option value="04">Aprile</option>
<option value="05">Maggio</option>
<option value="06">Giugno</option>
<option value="07">Luglio</option>
<option value="08">Agosto</option>
<option value="09">Settembre</option>
<option value="10">Ottobre</option>
<option value="11">Novembre</option>
<option value="12">Dicembre</option>
</select>
Anno :
<select name="anno_pag" value="- Seleziona -">
<?php
for ($a=date("Y"); $a <= date("Y")+5; $a++)
echo " <option value=\"$a\">$a</option>\n";
>?
</select>
</p>
</fieldset>
<fieldset id="submit">
<legend>Azione</legend>
<input id="azione" type="submit" value="Inserisci" name="azione" />
<input id="annulla" type="reset" value="Annulla" />
</fieldset>
</form>
La pagina array_vari.php, che richiami prima di visualizzare la tua form, sarà così composta.
Codice PHP:
// questa è la pagina array_vari.php
// array dei nominativi degli operatori
$array_operatori[0] = "Nome1 Cognome1";
$array_operatori[1] = "Nome2 Cognome2";
$array_operatori[2] = "Nome3 Cognome3";
$array_operatori[3] = "Nome4 Cognome4";
$array_operatori[4] = "Nome5 Cognome5";
// array dei metodi di pagamento
$array_metodo_pagamento[0] = "Bonifico Bancario";
$array_metodo_pagamento[1] = "Bollettino Postale";
$array_metodo_pagamento[2] = "Carta di Credito";
$array_metodo_pagamento[3] = "PayPal";
Ora, partendo dal presupposto che la tua tabella in MySQL si chiami prenotazioni e che sia composta più o meno come segue:
codice:
id int NOT NULL auto_increment,
data_visita timestamp,
operatore INT(2),
cliente text,
luogo text,
visitatori INT(3),
metodo_pagamento INT(2),
data_pagamento timestamp,
costo_unit FLOAT(5,2),
costo_comm FLOAT(5,2),
costo_tot FLOAT(5,2),
PRIMARY KEY(id)
Andrai a recuperare le variabili passate da form nel seguente modo.
Codice PHP:
// questa è la pagina prenotazione.php
// recuperi le variabili passate via POST
$operatore = $_POST['operatore'];
$cliente = $_POST['cliente'];
$luogo = $_POST['luogo'];
$day_gita = $_POST['day_gita'];
$mese_gita = $_POST['mese_gita'];
$anno_gita = $_POST['anno_gita'];
$day_pag = $_POST['day_pag'];
$mese_pag = $_POST['mese_pag'];
$anno_pag = $_POST['anno_pag'];
$numvis = $_POST['numvis'];
$costounit = $_POST['costounit'];
$costocomm = $_POST['costocomm'];
$pagamento = $_POST['pagamento'];
// calcoli il timestamp delle deue date
$data_visista = mktime(0, 0, 0, $mese_gita, $day_gita, $anno_gita);
$data_pagamento = mktime(0, 0, 0, $mese_pag, $day_pag, $anno_pag);
// calcolo dell'importo totale
$totale = ($costounit + $costocomm) * $numvis;
/*
qui ti connetti al DB e selezioni la tabella prenotazioni
- ometto il codice -
e ti scrivo solo la stringa SQL per l'inserimento nella tabella
*/
$sql = "
INSERT INTO prenotazioni
(data_visita, operatore, cliente, luogo, visitatori, metodo_pagamento, data_pagamento, costo_unit, costo_comm, costo_tot)
VALUES ($data_visista, '$operatore', '$luogo', $numvis, $pagamento, $data_pagamento, $costounit, $costocomm, $totale)
";
mysql_query($sql);
/* eccetera */
Spero sia stato chiaro.
Indubbiamente, la struttura della tabella non è assolutamente ottimizzata (intendo nel modo in cui sono definiti i tipi di dato).
Ricorda che nell pagina degli array puoi aggiungere tutto quello che ti pare, magari pensando di aumentare i menu a tendina nella tua form (pensa per esempio ai costi che si possono applicare, se intendi metterli fissi e/o compresi in un certo range). Il metodo lo hai visto, quindi non dovrebbe essere difficile implementarlo.
Altro appunto da NON SOTTOVALUTARE: non ho assolutamente tenuto conto del filtraggio dei dati passati dalla form!
Gli aspetti di sicurezza li ottimizzerai una volta che l'applicazione per effettuare prenotazioni sia funzionante nella sua forma base.
Visto che però si tratta di uno script che prevede lo scambio di soldi, mi raccomando: filtra ogni input!!!!
OK.
Credo sia tutto.