有条件的mysqli日期范围检查以在sql中打印价格 [英] Conditional mysqli date range check to print a price in sql

查看:80
本文介绍了有条件的mysqli日期范围检查以在sql中打印价格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这次,我试图制作一些与mysqli一起使用的php代码,以检查今天的日期是否在Mysql表中的日期范围之间,如果条件为真,我需要从表中打印价格否则,它应该打印与另一张桌子不同的价格。所以我已经在另一个php文件中设置了所有sql连接,问题是当我尝试代码时,它什么也没显示,仅空白页。这是使用以下代码的代码:

This time I'm trying to make some php code to work with mysqli in order to check if today date is between a range of dates in a Mysql table, if the condition is true I need to print a price from a table otherwise it shuould print a different price from another table. so I already have all sql connections set in another php file, the problem is that when I try the code, it just shows nothing, a blank page only. This is the code im using:

<?php
$currentdate = date("Y/m/d");                               
//basic include files
require_once('/home/user/public_html/folder/db.php');

$seasonalpricedate = mysqli_query($conn, "SELECT `seasonal_price` FROM `hotel_seasonal_price` WHERE room_type_id = '1' AND $currentdate >= 'seasonal_from' AND $currentdate <= 'seasonal_to';");
$result = ($seasonalpricedate) or die(mysqli_error());

if (mysqli_num_rows($result) != 0) {
    $standardprice = mysqli_query($conn, "SELECT `room_price` FROM `hotel_room_price` WHERE price_id = '1'");
    if(! $standardprice ){
        die('Could not get data: ' . mysqli_error());
    }

    while($standard = mysqli_fetch_array($standardprice, MYSQL_ASSOC)){
        echo "$ {$standard['room_price']} ";
    }
} else {
    if(! $seasonalpricedate ){
        die('Could not get data: ' . mysqli_error());

        while($standard2 = mysqli_fetch_array($seasonalpricedate, MYSQL_ASSOC)){
            echo "$ {$standard2['seasonal_price']} ";
        }
    }
}
?>

我已经尝试了标准价格和季节性价格两种代码,并且没有条件,但是当我尝试这样做时

I already tried both codes with standardprice and seasonalprice working without a conditional, but when I try to do it like this, it does not show anything.

PostData:我仍在尝试学习英语,因此,如果我输了一些单词,请给我道歉,谢谢预先。

PostData: Im still trying to learn english, so please appologize me if I fail some words, thanks in Advance.

更新:好的,这样就可以在没有值的情况下正常工作,它显示标准价格,但是如果与日期匹配,则不显示任何内容,代码已更改:

UPDATE: Ok so in this way it works if there is no values true its ok, it shows the standardprice, but if match the date, dont show anything, here is the code changed:

<?php
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
$currentdate = date("Y-m-d");                               
//basic include files
require_once('/home/trankilo/public_html/book/db.php');

$seasonalpricedate = mysqli_query($conn, "SELECT `seasonal_price` FROM `hotel_seasonal_price` WHERE room_type_id = '1' AND '$currentdate' >= seasonal_from AND '$currentdate' <= seasonal_to");
$result = ($seasonalpricedate) or die(mysqli_error());
if (mysqli_num_rows($result) != 0) {
$seasonalprice = mysqli_query($conn, "SELECT `seasonal_price` FROM `hotel_seasonal_price` WHERE room_type_id = '1'");
if(! $seasonalprice )
{
  die('Could not get data: ' . mysqli_error());
while($standard2 = mysqli_fetch_array($seasonalprice, MYSQL_ASSOC))
{
    echo "$ {$standard2['seasonal_price']} ";
}
}

} else {
$standardprice = mysqli_query($conn, "SELECT `room_price` FROM `hotel_room_price` WHERE price_id = '1'");
if(! $standardprice )
{
  die('Could not get data: ' . mysqli_error());
}
while($standard = mysqli_fetch_array($standardprice, MYSQL_ASSOC))
{
    echo "$ {$standard['room_price']} ";
}
}
mysqli_close($conn);
?>

由于

推荐答案

更新:因为您还更新了OP,所以现在我找到了引起问题的原因。问题是当您说: die('无法获取数据:'。mysqli_error()); 之后,您想尝试一个 while 循环。 while不会执行,因为您使用 die()终止了脚本; while 移至<$ if 条件的c $ c> else 例。见我的评论。

UPDATE: Because you are also updated your OP, now i found what causes the problem. Ther proble were when you says: die('Could not get data: ' . mysqli_error()); And after that you want to try a while loop. while won't executed, because you terminated the script with a die(); Move the while to the else case of your if condition. See my comments.

使用此功能:

error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

//Also display your errors.
display_errors(true);

$currentdate = date("Y-m-d");
//basic include files
require_once('/home/trankilo/public_html/book/db.php');

//Put your query into a variable, so you can dump / print it.
$sql = "SELECT `seasonal_price`"
    . " FROM `hotel_seasonal_price`"
    . " WHERE room_type_id = '1'"
    . " AND '" . $currentdate . "' >= seasonal_from"
    . " AND '" . $currentdate . "' <= 'seasonal_to'";
echo $sql;
//Try to run it in the sql directly. Is it gives back you any result?
//Do not need to 
$result = mysqli_query($conn, $sql) or die(mysqli_error());

if (mysqli_num_rows($result) != 0) {
    //Check if we have result by echoing some dummy text
    echo "Yes, we have result!";

    $sql = "SELECT `seasonal_price` FROM `hotel_seasonal_price` WHERE room_type_id = '1'";
    //Do the same as the previous query. Does it gives you back anything?
    $seasonalprice = mysqli_query($conn, $sql);
    if (!$seasonalprice) {
        //I do not really get what happens here. If you have no seasonalprice, 
        //then you can not fetch_array on that!
        //Move this whole section.... You've say die, and after that do a while?
        die('Could not get data: ' . mysqli_error());
    } else {
        while ($standard2 = mysqli_fetch_assoc($seasonalprice)) {
            echo "$ " . $standard2['seasonal_price'] . " ";
        }
    }
} else {
    //Same as previous
    $sql = "SELECT `room_price` FROM `hotel_room_price` WHERE price_id = '1'";
    $standardprice = mysqli_query($conn, $sql);
    if (!$standardprice) {
        die('Could not get data: ' . mysqli_error());
        //same here, move the while to the else...
    } else {
        while ($standard = mysqli_fetch_array($standardprice, MYSQL_ASSOC)) {
            echo "$ {$standard['room_price']} ";
        }
    }
}
mysqli_close($conn);

这篇关于有条件的mysqli日期范围检查以在sql中打印价格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆