Php mysql if while and else造成麻烦
我需要显示3种不同类型发票的最后一个发票号,如果已经有发票,系统只需向发票号添加+1,或者如果有第一个发票,则只需添加000000000 1作为第一个发票号Php mysql if while and else造成麻烦,php,html,mysql,database,Php,Html,Mysql,Database,我需要显示3种不同类型发票的最后一个发票号,如果已经有发票,系统只需向发票号添加+1,或者如果有第一个发票,则只需添加000000000 1作为第一个发票号 <option value="boleta" data-price=" <?php $boletas=mysqli_query($datacenter, " SELECT * FROM ventas WHERE documento = 'boleta' ORDER BY id DESC LIMIT 1"); whil
<option value="boleta" data-price="
<?php $boletas=mysqli_query($datacenter, "
SELECT * FROM ventas
WHERE documento = 'boleta'
ORDER BY id DESC LIMIT 1");
while($boleta=mysqli_fetch_assoc($boletas))
if(mysqli_num_rows($boletas) > 0) { echo
str_pad($boleta['folio']+1, 15, "0", STR_PAD_LEFT);
}
else {
echo "000000000000001";
}?>">boleta</option>
<option value="factura" data-price="
<?php $facturas=mysqli_query($datacenter, "
SELECT * FROM ventas WHERE documento = 'factura'
ORDER BY id DESC LIMIT 1");
while($factura=mysqli_fetch_assoc($facturas))
if(mysqli_num_rows($facturas) > 0) { echo
str_pad($factura['folio']+1, 15, "0", STR_PAD_LEFT);
}
else {
echo "000000000000001";
}?>">boleta</option>
<option value="nota" data-price="
<?php $notas=mysqli_query($datacenter, "
SELECT * FROM ventas WHERE documento = 'nota'
ORDER BY id DESC LIMIT 1");
while($nota=mysqli_fetch_assoc($notas))
if(mysqli_num_rows($notas) > 0) { echo
str_pad($nota['folio']+1, 15, "0", STR_PAD_LEFT);
}
else {
echo "000000000000001";
}?>">boleta</option>
尝试更改此选项:
$boletas=mysqli_query($datacenter, "
SELECT * FROM ventas
WHERE documento = 'boleta'
ORDER BY id DESC LIMIT 1");
while($boleta=mysqli_fetch_assoc($boletas))
if(mysqli_num_rows($boletas) > 0) { echo
str_pad($boleta['folio']+1, 15, "0", STR_PAD_LEFT);
}
else {
echo "000000000000001";
}
致:
这更具可读性,包括一些错误检查,如果没有结果,将显示所需的发票号00000000000000 1
顺便说一句,我不认为使用一个查询对您的问题来说是切实可行的,因为您使用的不同查询的性质不同。无论如何,它最终都需要3个子查询。我强烈建议您不要像这样编写代码,难以阅读、维护、调试并启用错误报告和检查日志,这将告诉您很多地方需要查找。并遵循史密斯的建议,更好地格式化代码,使其更易于阅读。这反过来使调试更容易。我还建议您考虑使用单个查询,而不是3个查询。最后,您的else仍然在while
循环中,因此如果没有行,则该代码块将永远不会执行,任何建议示例Qirel请?错误报告(E_ALL);ini设置(“显示错误”,1)代码>下面已经给了您一个答案;你没看到吗?嗨,尼卡莱尼卡,这有用吗?
$sql = "SELECT * FROM ventas WHERE documento = 'boleta' ORDER BY id DESC LIMIT 1";
if ($boletas = mysqli_query($datacenter, $sql)) {
if ($boleta = mysqli_fetch_assoc($boletas)) {
echo str_pad($boleta['folio']+1, 15, "0", STR_PAD_LEFT);
}
else {
echo "000000000000001";
}
}
else {
echo "Query failed for boletas!";
}