0

我有一个表单,我根据用户的选择部分加载。

当用户选择一个日期时,我会搜索该日期的可用库存数量(这是火车旅行的座位)。

我有3IF()句话

  • 首先,我询问数据库响应是否没有返回任何行(因此尚未创建该日期的旅行,因此我必须在那一刻创建它以供客户预订)
  • 其次,我询问响应是否是一个数字(我只返回一个数字,对不起,如果我之前没有指定)以及它是否大于零。所以我更新了可用的数量。所以客户不能过度购买不存在的座位。
  • 第三也是最后一点,如果其他都失败了,qtty 是零,我只是给客户发消息,表明该日期的旅行已满,他/她必须选择不同的日期旅行。

我的代码是这样的:

$.post(url,function(data){
        //********************
        //data = parseInt(data);
        alert("muestra: "+data+".");
            //3 opciones
        //si viene vacia la respuesta, es por que no encontro, reservas  o sea que nadie a reservado para la fecha solicitada
        //     lo que sigue es crear la reserva de todas formas, luego re-consultar por los valores y traer la cantidad total //podria mejorar
        //si viene con 0 es por que no existe disponibilidad para el viaje en esa fecha, tendra que intentar cambiando categoria (vagon) o fecha
        //si un numero >=1 hay disponibilidad y se crean los sliders que le permiten seleccionar la cantidad de asientos para reservar
        //TODO: cambiar al switch ....
        if(data=="false" || data==false){
        //if(data=='NaN'){
            $("#info-disponibilidad").html("No existen reservas previas, sera el primero en reservar para esta fecha. Asientos Disponibles: ");
            $("#info-disponibilidad").css("color","green");
            var myRandom=parseInt(Math.random()*99999999);  // tecnica cache buster
            //url = 'asientos-disponibilidad.php?categoria='+$('#categoria option:selected').val()+'&fecha_reserva='+$('#fecha_reserva').val()+'&rand=' + myRandom;
            url = 'crear_reservas.php?viaje='+$('#viajes option:selected').val()+'categoria='+$('#categoria option:selected').val()+'&fecha_reserva='+dateText+'&rand=' + myRandom;
            $.post(url,function(data2){
                //algo algo con la respuesta... ...
                alert("1er: "+data2+".");
            });
        }

        if(!isNaN(data) && data!=0){
        //if(!isNaN(data) && data!=0){
            alert("2do: "+data);
            //este se puede aprender facilmente al buscar el ejemplo en Jquery Ui slider
            $("#info-disponibilidad").html("Existen, "+data+" asientos Disponibles");
            $("#info-disponibilidad").css("color","green");
            //este se puede aprender facilmente al buscar el ejemplo en Jquery Ui slider
            $( "#slider-adultos" ).slider({
            //range: "min",
            min: 1,
            max: data,
            slide: function( event, ui ) {
                $( "#adultos" ).val(ui.value );
                $("#adultos").trigger("change");
            },
            stop: function(event, ui) { 
                $("#total-box").effect("highlight", {}, 2000);  
                //var max = parseInt($("#adultos").val());//usar esta variable en lugar de value (por si algo falla)
                manejoreservas(ui.value,"ninos", data);
            }
            });
            $("#slider-ninos").slider({
            //range: "min",
            min: 0,
            max: data,
            slide: function( event, ui ) {
                $( "#ninos" ).val(ui.value );
                $( "#ninos" ).trigger("change");
            },
            stop: function(event, ui) {
                $("#total-box").effect("highlight", {}, 2000);
                //$("#slider-ninos").slider( "option", "max", max );
                //var max = parseInt($("#ninos").val());//
                manejoreservas(ui.value,"adultos", data);
            }
            });
        }
        else//(!isNaN(data) && data==0  && data!=false)
        {   // && data!=false
            alert("3ro: "+data+" no disponibilidad");
            $("#info-disponibilidad").html("No existen asientos Disponibles");
            $("#info-disponibilidad").css("color","red");
        }
        });

php代码是这样的:

<?php
//busca cual es la cantidad de asientos disponibles en una reserva si es que esta existe...
include('conn.php');
if (!$con)
  {
    die('Fallo conexion a la Base de datos: ' . mysql_error());
  }else{
  $categoria = $_GET['categoria'];
  //$fecha = $_POST['fecha_reserva'];
  $fecha = $_GET['fecha_reserva'];

  $sql_cant ="SELECT restante FROM reservas WHERE fecha_reserva = '".$fecha."' AND categorias_idcategorias = ".$categoria."";

  mysql_select_db("mvargas", $con);

  $result = mysql_query($sql_cant);
  $num_rows = mysql_num_rows($result);
  //echo $sql_cant;
  if($num_rows < 0){
    echo "";
  }else{


    //echo "<b>".$num_rows."</b>";
    while($row = mysql_fetch_assoc($result)){
      $foo = $row['restante'];
      $j++;
    }  
    //
    //var_dump($foo);
    echo $foo;
  }
}
?>

我取得的最后一件事是一切正常,但它进入第一个IF显示一条消息,用户将在该日期第一次预订(创建旅行)然后它进入第三个IF(在显示的代码中的其他内容)删除第一条消息,并将消息设置为零数量,在屏幕上笨拙地闪烁两条消息,以使用户感到困惑。

对不起,如果它太长了......这是你看到的页面:http: //www.micontrol.cl/~mvargas/wordpress/wp-transatacama/reservas-rapidas/form-reservas.php

4

2 回答 2

2

如果我理解正确,请将第二个 if 更改为 else if ...

....
....
            alert("1er: "+data2+".");
        });
    } else if(!isNaN(data) && data!=0){
    //if(!isNaN(data) && data!=0){
        alert("2do: "+data);
....
....

如果第一个不正确,它将只运行第二个 if 语句。

于 2012-01-18T19:45:22.103 回答
0

我假设在您引用data变量的情况下返回 0 或空白。在 javascript 中,该语句的0 == false计算结果为 true。您需要使用所谓的严格比较,例如0 === false评估结果为假。

所以像这样更新你的代码:

if(data=="false" || data===false){

除非您有特定的理由不这样做,否则始终使用严格的比较运算符是个好主意。他们是===并且!==

请注意,以下语句的计算结果为 true

(false == 0); // true  
(false == ""); // true  
于 2012-01-18T19:51:10.160 回答