Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: mokoMonster en 27 Enero 2011, 23:05 pm



Título: Ayuda con función en ciclo FOR, nadieee ????
Publicado por: mokoMonster en 27 Enero 2011, 23:05 pm
Función en Ciclo FOR
[/b]
Hola a todos,

Dejen que les explique el por que es un problema.
Estoy haciendo un sistema de reservaciones y obviamente tiene una base de datos.

Desde la pagina tablareserv.php llamo a la función que esta dentro de una tabla que se despliega según los días del mes($m) y las habitaciones disponibles($habitacion).
echo "<table width='90%' align='center' border='1' cellspacing='0' cellpadding='0'>";
echo "<tr><td>&nbsp;</td>";
for($dia=1;$dia<=$m;$dia++){
    echo "<td width='25'><center><font color='#FFFFFF'><b>".$dia."</b></font></center></td>";
}
echo "</tr>";
for($habitacion=1;$habitacion<=$habitaciones;$habitacion++){
echo "<tr>";
echo '<td width="125">Habitacion '.$habitacion.'</td>';
    devuelve_conteo($habitacion,$m);
echo "</tr>";
}
echo "</table>";
Esta función esta en un include y es la que se encarga de hacer el ciclo correspondiente para que la siguiente función checar_disponibilidad() se ejecute correctamente.
function devuelve_conteo($habitacion,$m)
{
$dia_conteo=1;
while($dia_conteo<$m+1)
{
   echo "<td><center>",checar_disponibilidad($habitacion,$dia_conteo),"</center></td>";
$dia_conteo++;
}
}
Esta es la función checar_disponibilidad que es en la que radica el problema.
function checar_disponibilidad($habitacion,$dia_conteo)
{
$link=Conectarse();
$con=mysql_query("SELECT f_ll_dia FROM Reservaciones WHERE f_ll_dia='".$dia_conteo."' AND f_ll_mes='".date('M')."' AND f_ll_ano='".date('Y')."'",$link)or die(mysql_error());
$c_fecha=mysql_fetch_array($con);

$con2=mysql_query("SELECT * FROM Reservaciones WHERE numero_habitacion='".$habitacion."'",$link)or die(mysql_error());
$c_habitacion=mysql_fetch_array($con2);

if($habitacion==$c_habitacion['numero_habitacion']&&$dia_conteo==$c_fecha['f_ll_dia'])
{
echo 'RESERVADA';
}
else
{
echo 'L';
}
}
Hasta aquí la tabla funciona, se despliega correctamente, solo que obviamente vacía por que aun no hay registros, Ahora supongamos que se añade un registro, que llega el día 20 de Enero a la Habitación numero 5, entonces ahora el valor de $c_habitacion['numero_habitacion'] = 5 y $c_fecha['f_ll_dia'] = 20.
En este momento cuando se consulta tablareserv.php en la tabla aparece que la Habitación 5 el día 20 de Enero esta RESERVADA.

Perooooooo cuando se agrega otra entrada a la tabla de la base de datos con   $c_habitacion['numero_habitacion'] = 9 y $c_fecha['f_ll_dia'] = 12 (noten que cambio a 9 y 12 respectivamente), bueno hasta aquí están de acuerdo en que en tablareserv.php debería imprimir que:

*La habitación 5 el 20 de Enero esta Reservada.
*La habitación 9 el 12 de Enero esta Reservada.

Pero no sucede así, lo que sucede a la hora de mostrar la tabla aparece que:
*La habitación 5 esta ocupada el 20 y el 12 de Enero.

Osea que se imprimen en la misma fila y no debe ser así.
Alguien me podría orientar un poco?

Saludos.


En esta linea es donde creo que esta el problema..
Código:
	if($habitacion==$c_habitacion['numero_habitacion']&&$dia_conteo==$c_fecha['f_ll_dia'])



Título: Re: Ayuda con función en ciclo FOR, nadieee ????
Publicado por: ~ Yoya ~ en 29 Enero 2011, 03:40 am
Es un poco complicado entender tu problema, explica tu problema utilizando PoC o ejemplos mas claros, así todos te entenderán.


Título: Re: Ayuda con función en ciclo FOR, nadieee ????
Publicado por: bomba1990 en 29 Enero 2011, 04:49 am
hay dos cosa, una no somos adivinos y la segunda si nos das mas informacion podrias ayudarnos a ayudarte.

hay dos cosas, primero serciorate de que en la bd salga como es debido y segundo

Código
  1.  
  2.  
  3. $con=mysql_query("SELECT f_ll_dia FROM Reservaciones WHERE f_ll_dia='".$dia_conteo."' AND f_ll_mes='".date('M')."' AND f_ll_ano='".date('Y')."'",$link)or die(mysql_error());
  4.  
  5. $c_fecha=mysql_fetch_array($con);
  6.  
  7.  
  8. $con2=mysql_query("SELECT * FROM Reservaciones WHERE numero_habitacion='".$habitacion."'",$link)or die(mysql_error());

no seria mejor si resumes estas dos sentencias en una sola?? no te ahorras codigo?


Título: Re: Ayuda con función en ciclo FOR, nadieee ????
Publicado por: ~ Yoya ~ en 29 Enero 2011, 13:00 pm
hay dos cosa, una no somos adivinos y la segunda si nos das mas informacion podrias ayudarnos a ayudarte.

hay dos cosas, primero serciorate de que en la bd salga como es debido y segundo

Código
  1.  
  2.  
  3. $con=mysql_query("SELECT f_ll_dia FROM Reservaciones WHERE f_ll_dia='".$dia_conteo."' AND f_ll_mes='".date('M')."' AND f_ll_ano='".date('Y')."'",$link)or die(mysql_error());
  4.  
  5. $c_fecha=mysql_fetch_array($con);
  6.  
  7.  
  8. $con2=mysql_query("SELECT * FROM Reservaciones WHERE numero_habitacion='".$habitacion."'",$link)or die(mysql_error());

no seria mejor si resumes estas dos sentencias en una sola?? no te ahorras codigo?

Por esa razón se puede usar PoC o hacer todo maqueteado.


Título: Re: Ayuda con función en ciclo FOR, nadieee ????
Publicado por: bomba1990 en 30 Enero 2011, 06:10 am
Por esa razón se puede usar PoC o hacer todo maqueteado.

me puedes decir que es PoC??


Título: Re: Ayuda con función en ciclo FOR, nadieee ????
Publicado por: ~ Yoya ~ en 30 Enero 2011, 15:38 pm
Cita de: Wikipedia
A proof of concept or a proof of principle is realization of a certain method or idea(s) to demonstrate its feasibility,[1] or a demonstration in principle, whose purpose is to verify that some concept or theory is probably capable of being useful. A proof-of-concept may or may not be complete, and is usually small and incomplete.