gpt4 book ai didi

php - 查询返回空值

转载 作者:行者123 更新时间:2023-11-29 18:37:20 26 4
gpt4 key购买 nike

我有 3 个关于药物和库存的表格。第一个表是一个简单的 idmed_name,它被称为 medication

第二张表是关于每种药物以及我们有多少药物。该表名为 med_pharmacy

第三个表是我们从每种药物中给予的量。它被称为consultation_med

现在,我创建了一个 AJAX 请求,因此当我们想要给患者提供一些药丸时,在添加到数据库之前查看是否还有药丸。如果还有,我会回显 good,如果没有,我会回显 exceeded

这是表格:

enter image description here

我的问题是,在初始化时,我的意思是,当我们在每个示例中获得一些具有 med_id = 16 的药物时,我将在表 2 中添加一个新行,但不包括表 3,因为我们仍然没有给任何患者服用任何药物。

因此,当我第一次对每种药物使用以下脚本时,按钮 id=add_more 将保持禁用状态,因为查询返回 null,而表 3 至少没有一个记录该药物。因此,如果我第一次需要向患者分发 20 粒药片,即使我已经从医生处获得了 100 粒药片,我也将无法单击该按钮。

我该如何解决这个问题?我是否应该在表 3 上的 given_quantity 字段中添加一个填充 0 的空行,每次新一包药物到来时,这个问题就会得到解决?

var calculate = function()
{
var quant = $('#medication_quantity').val();
var med_p_id = $("#medication_id").val();
console.log(med_p_id)
$.ajax({
url: '../php/ensureQuantity.php',
type: 'POST',
data: { quant: quant, mid: med_p_id},
dataType: 'TEXT',
success:function(resp)
{
console.log(resp);
if(resp=="exceed")
{
$("#add_more").prop('disabled', true);
$("#danger_message").show();
}
else
{
$("#add_more").prop('disabled', false);
$("#danger_message").hide();
}
},
error:function(resp)
{
console.log(resp);
}
})
}

使用以下 PHP 代码:

$cid = $_SESSION['clinic_id'];
$mid = $_POST['mid'];
$quant = $_POST['quant'];
$still=0;
$ensureQuantity = "SELECT
t1.med_pharmacy_id, t1.med_id,
sum(t2.given_quantity) as given_pills,
t1.med_tablet - ((sum(t2.given_quantity)*t1.med_tablet)/t1.med_pill) as still_tablets,
(t1.med_pill-sum(t2.given_quantity)) as still_pills
FROM med_pharmacy t1, consultation_med t2, medication t3 WHERE (t1.med_pharmacy_id = t2.med_pharmacy_id AND t1.med_id=t3.med_id
AND t1.clinic_id=:cid AND t1.med_pharmacy_id = :mid)

GROUP BY t1.med_pharmacy_id, t1.med_id,t3.med_name, t1.med_expiry,t1.med_barcode,t1.med_tablet,t1.med_pill,t1.med_received";
$execEnsureQuantity = $conn->prepare($ensureQuantity);
$execEnsureQuantity->bindValue(':cid', $cid);
$execEnsureQuantity->bindValue(':mid', $mid);
$execEnsureQuantity->execute();

$res = $execEnsureQuantity->fetch();

if($res['still_pills']==null || $res['still_pills']=="")
{
$still = 0;
}
else
{
$still = $res['still_pills'];
}
if($quant>$still)
{
echo "exceed";
}
else
{
echo "good";
}

最佳答案

我已经找到了解决方案,如下:

SELECT t1.med_id, 
t1.med_pharmacy_id,
t3.med_name,
t1.med_expiry,
t1.med_barcode,
t1.med_tablet,
t1.med_pill,
t1.med_received,
sum(t2.given_quantity) as given_pills,
t1.med_tablet - ((ifnull(sum(t2.given_quantity),0)*t1.med_tablet)/t1.med_pill) as still_tablets,
(t1.med_pill-sum(t2.given_quantity)) as still_pills
FROM med_pharmacy t1
LEFT JOIN consultation_med t2 USING (med_pharmacy_id,clinic_id)
LEFT JOIN medication t3 USING (med_id,clinic_id)
WHERE t1.clinic_id=:cid and t1.med_pharmacy_id=:mid GROUP BY t1.med_pharmacy_id, t1.med_expiry,t1.med_barcode,t1.med_tablet,t1.med_pill,t1.med_received

并将 jQuery 脚本更改为:

var calculate = function()
{
var quant = $('#medication_quantity').val();
var med_p_id = $("#medication_id").val();
console.log(med_p_id)
$.ajax({
url: '../php/ensureQuantity.php',
type: 'POST',
data: { quant: quant, mid: med_p_id},
dataType: 'JSON',
success:function(result)
{

var remaining = result['still_pills'];
if(remaining == null)
{
remaining = result['med_pill'];
}
if(quant>parseInt(remaining))
{
//console.log('1* Quant:'+quant+'_'+remaining);
$("#add_more").prop('disabled', true);
$("#danger_message").show();
}
else
{
console.log('2* Quant:'+quant+'_'+remaining);
$("#add_more").prop('disabled', false);
$("#danger_message").hide();
}
// if(resp=="exceed")
// {
// $("#add_more").prop('disabled', true);
// $("#danger_message").show();
// }
// else
// {
// $("#add_more").prop('disabled', false);
// $("#danger_message").hide();
// }
},
error:function(result)
{
console.log(result);
}
})
}

$(document).ready(function()
{
$('#medication_quantity').on('keyup', calculate);
$('#medication_id').on('change', calculate);
})

关于php - 查询返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45182083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com