Entiendo que es algo fuera de lo común... lo que hago es lo siguiente:
1.- Muestro el formulario de datos personales
2.- Al presionar siguiente creo un objeto donde trabajo con un array que contiene a $_POST
3.- Inserto los datos y guardo el id en un campo oculto para usarlo en caso de que sigan con la reservacion.
el codigo es el siguiente:
MySQL.php
Código PHP :
<?php
require_once 'interfacedb.php';
class MySQL implements interfacedb
{
const SERVIDOR = 'localhost';
const USUARIO = 'root';
const PASS = '';
const DB = 'savoy';
private $_conexion;
public function conect()
{
$this->_conexion = mysql_connect(self::SERVIDOR, self::USUARIO, self::PASS) or die ("Error");
$conect = mysql_select_db(self::DB,$this->_conexion);
return $this->_conexion;
}
public function insert(Sql $query)
{
mysql_query($query);
//echo $query;
}
public function lastId()
{
return mysql_insert_id();
}
public function close()
{
mysql_close($this->_conexion);
}
}
reservacion.php
Código PHP :
<?php //header("Cache-Control: no-store, no-cache, must-revalidate"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<link href="style.css" rel="stylesheet" type="text/css" media="all" />
<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/vanadium.js"></script>
</head>
<body>
<form name="reservacion" method="POST" action="step2.php"/>
<div id="reservaciones">
<fieldset id=""><legend>Reservar Habitaciones</legend>
<fieldset id=""><legend>Datos personales</legend>
Nombre: <input type="text" name="nombre" id="nombre" size="36" class=":required"/><br/>
Apellidos: <input type="text" name="apellidos" class=":required"/><br/>
Procedencia: <input type="text" name="procedencia" class=":required"><br/>
E-mail: <input type="text" name="email" class=":email :required"><br/>
Telefono: <input type="text" name="numero" class=":integer :required"><br/>
</fieldset>
<input type="submit" name="reservar" value="Siguiente"/>
<input type="reset" name="restore"/>
</fieldset>
</div>
</body>
</html>
step2.php
Código PHP :
<?php
/*
* Captura la informacion de un posible huesped
*
*/
require_once 'checkData.php';
require_once 'database.php';
require_once 'MySQL.php';
require_once 'Sql.php';
abstract class step2
{
static public function run($array)
{
$sql = new Sql($array);
$sql->prepareToinsert();
$db = new database(new MySQL());
return $db->ejecutar($sql);
}
}
$array = $_POST;
?>
<?php //header("Cache-Control: no-store, no-cache, must-revalidate"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<link href="style.css" rel="stylesheet" type="text/css" media="all" />
<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/vanadium.js"></script>
</head>
<body>
<form name="reservacion" method="POST" action="step3.php"/>
<div id="reservaciones">
<fieldset><legend>Estancia</legend>
<input type="hidden" name="id" value="<? echo step2::run($array); ?>"/>
<label for="Entrada" accesskey="e">Entrada:</label> <input type="text" name="entrada" class=":required"/><br/>
<label for="Salida">Salida: </label><input type="text" name="salida" class=":required"/><br/>
<label for="No. de Habitaciones">No. de Habitaciones</label>
<select name="habitaciones">
<option value="1">1</option>
<option value="1">2</option>
<option value="1">3</option>
<option value="1">4</option>
<option value="1">5</option>
<option value="1">6</option>
<option value="1">7</option>
<option value="1">8</option>
<option value="1">9</option>
<option value="1">10</option>
</select>
<br/>
<fieldset><legend>Habitacion 1</legend>
<select name="hab_1">
<option value="1">Sencilla</option>
<option value="2">Doble</option>
<option value="1">Ejecutiva</option>
</select> -> Precio: <input type="text" value="" name="precio_hab_1"/>
</fieldset>
<fieldset><legend>Habitacion 2</legend>
<select name="hab_2">
<option value="1">Sencilla</option>
<option value="2">Doble</option>
<option value="1">Ejecutiva</option>
</select> -> Precio: <input type="text" value="" name="precio_hab_2"/>
</fieldset>
<br/>
<label for="Adultos">No. de personas:</label> <input type="text" name="personas" class=":integer :required" size="2" maxlength="2"/><br/>
</fieldset>
<input type="submit" name="reservar" value="Siguiente"/>
<input type="reset" name="restore"/>
</fieldset>
</div>
</body>
</html>
database.php
Código PHP :
<?php
require_once 'interfacedb.php';
require_once 'Sql.php';
class database
{
private $_manejador;
public function __construct(interfacedb $manejador)
{
$this->_manejador = $manejador;
}
public function ejecutar(Sql $query)
{
$this->_manejador->conect();
$this->_manejador->insert($query);
$id = $this->_manejador->lastId();
$this->_manejador->close();
return $id;
}
}
interbasedb.php
Código PHP :
<?php
interface interfacedb
{
public function conect();
public function insert(Sql $query);
public function lastId();
public function close();
}
sql.php
Código PHP :
<?php
require_once 'checkData.php';
require_once 'database.php';
require_once 'MySQL.php';
class Sql extends checkData
{
private $_arrayForm, $_query;
public function __construct($array)
{
$this->_arrayForm = $array;
parent::__construct($this->_arrayForm);
//if(is_array($this->_arrayForm)){ echo "OK"; }else{ echo "NO"; }
}
public function prepareToInsert()
{
if(is_array($this->prepareData())){
////En caso de ser un array
$fields = '';
$values = '';
foreach($this->prepareData() as $clave => $valor){
$fields .= "`".$clave."`,";
$values .= "'".$valor."',";
}
$fields = rtrim($fields,",");
$values = rtrim($values,",");
$this->_query = "INSERT INTO `huespedes` (".$fields.") VALUES (".$values.")";
//echo "Si soy array :)<br/>";
}else{
//No es array
$this->_query = "No es array :(";
}
//print_r($this->prepareData());
return $this->_query;
}
public function __toString()
{
//$this->prepareToInsert();
return $this->_query;
}
}
/*
//Iniciar
$array = $_POST;
$other = new Sql($array);
$other->prepareToinsert();
$db = new database(new MySQL());
$db->ejectuar($other);
*/
para la inserccion de datos con las clases hice lo siguiente:
Una clase de coneccion
Una para prepara la sentencia sql
Otra que ejecuta la sentencia y hace la interfaz entre Mysql y la sentencia