Ver Mensaje Individual
  #14 (permalink)  
Antiguo 09/03/2014, 15:04
Avatar de Polu
Polu
 
Fecha de Ingreso: febrero-2003
Mensajes: 135
Antigüedad: 21 años, 9 meses
Puntos: 0
Respuesta: Asociar la disponibilidad de una habitación con un rango de fechas en sql

He adaptado tu query a mi conexión porque he intentado conectar a tu manera y parece ser que mi servidor no acepta, puede que sea por la clase mysqli.

Ahora, solo me deja introducir dos asientos, uno con la casa_1 y otro con la csa_2, creo que hemos limitado las casas y no las casas con respecto a las fechas.

Tipo casa | Entrada | Salida
Casa-1 09-03-2014 12-03-2014
Casa-2 09-03-2014 12-03-2014

Lo que intento es poder reservar las mismas casas con otra fecha y si alguien intentara reservar en la fecha ya reservada que salga un aviso diciendo que la casa tal con la fecha tal no está disponible.

Te muestro los tres archivos php:

Para insertar los datos, insertar.php
Código HTML:
</head>
<body>
<H1 class="ENCABEZADOS_DE_TEXTOS">Ejemplo:Iimpedir datos duplicados entre dos fechas con PHP y MySQL</H1>
<FORM ACTION="procesar.php" name="contacto" onSubmit="return formulariodecontacto()">
<TABLE>
<TR>
	<TD><span class="TEXTOS">Tipo de Casa:</span>:</TD>
	<TD> <select name="tipo_casa" id="tipo_casa" width="150px">
          <option>Casa-1</option>
          <option>Casa-2</option>
          </select>
   </TD>
</TR>
<TR>
	<TD class="TEXTOS">Entrada:</TD>
	<TD><INPUT TYPE="text" NAME="dia_entrada" id="dia_entrada" readonly SIZE="20" MAXLENGTH="30"></TD>
</TR>
<TR>
	<TD><span class="TEXTOS">Salida:</span>:</TD>
	<TD><INPUT TYPE="text" NAME="dia_salida"  id="dia_salida" readonly SIZE="20" MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="accion" VALUE="Grabar">
</FORM>
<hr> 
Código PHP:
<?php
    
include("conex.php");
    
$link=Conectarse();
    
$result=mysql_query("select * from disponibilidad",$link);
    
?>
Código HTML:
<table width="250" height="30" text-align="center" border=1 cellpadding=1 cellspacing=1 bordercolor="#999999" bgcolor="#E8E8E8">
  <tr>
    <td width="80"><b class="ENCABEZADOS_DE_TEXTOS">Tipo casa</b></td>
    <td width="80"><b class="ENCABEZADOS_DE_TEXTOS">Entrada</b></td>
    <td width="80"><b class="ENCABEZADOS_DE_TEXTOS">Salida</b> </td>
  </tr> 
Código PHP:
<?php        
    
while($row mysql_fetch_array($result)) {
        
printf("<tr class=Estilo1 ><td > %s</td> <td > %s </td> <td > %s </td></tr>",$row['tipo_casa'], $dia_entrada=date('d-m-Y',strtotime($row['dia_entrada'])), $dia_salida=date('d-m-Y',strtotime($row['dia_salida'])));
    }
    
mysql_free_result($result);
    
mysql_close($link);    
?>
Código HTML:
</table>
</body>
</html> 
Para procesar los datos, procesar.php

Código PHP:
<?php
   
include("conex.php"); 
   
$link=Conectarse(); 
   
$dia_entrada=$_GET['dia_entrada']; 
   
$dia_salida=$_GET['dia_salida'];
   
$tipo_casa=$_GET['tipo_casa'];
      
$buscarmysql_query("SELECT * FROM disponibilidad WHERE tipo_casa AND ('$dia_entrada'  BETWEEN dia_entrada AND dia_salida OR '$dia_salida'  BETWEEN dia_entrada AND dia_salida OR (dia_entrada <= '$dia_entrada'  AND dia_salida >= '$dia_salida'))");   
// -----------------------------------------------------------------------------------
if(mysql_num_rows($buscar)>0) {
    
      echo 
"Esta  fecha no esta disponible. Por favor elija otra.<br>";
      echo 
"<a href=\"javascript:history.back()\">Regresar</a>"
      
} else { 

    
mysql_query("INSERT INTO disponibilidad(tipo_casa, dia_entrada, dia_salida) VALUES ('$tipo_casa', '$dia_entrada', '$dia_salida')");
      
      echo 
"Registro correcto.<br>";
      echo 
"<a href=\"http://www.dikindavi.byethost3.com/pruebas/calendar/insertar.php\">Regresar</a>"
}
?>
Y para conectarse a la DB, conex.php

Código PHP:
<?php 

function Conectarse() 



   if (!(
$link=mysql_connect("sql311.byethost3.com","usuario","password"))) 

   { 

      echo 
"Error conectando a la base de datos."

      exit(); 

   } 

   if (!
mysql_select_db("basedatos",$link)) 

   { 

      echo 
"Error seleccionando la base de datos."

      exit(); 

   } 

   return 
$link



?>

Última edición por Polu; 09/03/2014 a las 15:15 Razón: Se me olvidó algo