Foros del Web » Programando para Internet » PHP »

If anidado

Estas en el tema de If anidado en el foro de PHP en Foros del Web. Hola a todos, pues me he quedado atascado en una chorrada con todo lo que llevo hecho... a ver si me podéis echar una mano. ...
  #1 (permalink)  
Antiguo 08/02/2008, 10:37
 
Fecha de Ingreso: julio-2007
Mensajes: 4
Antigüedad: 16 años, 9 meses
Puntos: 0
If anidado

Hola a todos,

pues me he quedado atascado en una chorrada con todo lo que llevo hecho... a ver si me podéis echar una mano.

Estoy haciendo una aplicación de reservas de viajes para una agencia pequeña. Uso php y varias bases de datos para gestionar los itinerarios de los cruceros, reservas, fechas de salida, etc.

El caso es que ya estoy terminando con las reservas y mi problema es que cuando un cliente reserve su plaza en el crucero lo puede hacer en tres puentes: standar, intermedio y superior, y dependiendo del crucero y la fecha de salida ésta puede estar confirmada, sin plazas o en espera. De tal forma que al grabar la reserva en la base de datos al mismo tiempo debe descontar las plazas reservadas de la base de datos de plazas disponibles SOLO si hay plazas (confirmada). Si no la reserva queda en espera y no se restan las plazas hasta que se confirmen posteriormente.

El caso es que voy sumando en un contador para todos los pasajeros que viajan en la reserva las plazas estandar, superior e intermedia y de ellas solo las que están confirmadas, para posteriormente restar el número que me sale de las plazas totales del crucero en las cabinas estandar, superior e intermedia. Me queda así:

Código PHP:
if (($tipocabina=="singstd") || ($tipocabina=="dbstd") || ($tipocabina=="tripstd")) {
if (
$row_reserva['estado'.$x]=="confirmado") {
    
$restarstd=$restarstd++;
}

El codigo está metido en un bucle for pues pueden reservar hasta 10 pasajeros. Los valores de $tipocabina están ya cogidos de la base de datos. Pues bien, ese if anidado donde primero pone como condición que la cabina es de tipo estandar (doble, triple o sencilla) y luego si es cierto verifica si la plaza está confirmada y suma una plaza a la variable restarstd siempre me da 0.

En Javascript los if anidados funcionan a la perfección y por lo que se y he investigado en PHP también pueden usarse, pero no entiendo que puedo estar haciendo mal. Si se os ocurre porque o si hay otra alternativa os agradecería me echarais un cable.

Gracias anticipadas y un saludo.
  #2 (permalink)  
Antiguo 08/02/2008, 11:44
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Re: If anidado

el problema es que en alguna de las dos comprobaciones no se esta cumpliendo la validacion, php soporta perfectamente los if anidados tal como los tienes, lo que podrias hacer para verificar que esta pasando al comprovar los datos es utilizar else y ver que imprime

Código PHP:
if ($dato == "valor") {
echo 
'$dato es igual a valor';
}else {
echo 
'$dato no es igual a valor';

de hay puedes descartar si esta mal la comprovacion que estas haciendo o verificar que la variable row_reserva['estado'.$x] no este basiam principalmente por la variable $x que le estas añadiendo y eso te este probocando el error
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 08/02/2008, 12:04
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Re: If anidado

Por que no pones el for completo para ver si no hay algun error que se te haya pasado.

Pors cierto este codigo:
Código PHP:
if ($row_reserva['estado'.$x]=="confirmado") { 
    
$restarstd=$restarstd++; 


Podria quedar asi:

Código PHP:
if ($row_reserva["estado$x"]=="confirmado")  
    
$restarstd++; 
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:22.