我希望加上金额+服务费+替换费用+街头费用+其他费用
但它不起作用请帮我解决这个问题 感谢
$sql="SELECT CONCAT(monthdate,' ','(',drivernamefuel,')') as drivernamefuel,sum(amount) + 'servicecharges' + 'replacecharges' + 'blockcharges' + 'othercharges' AS amount,drivernamefuel FROM $tablename where carno='$c' AND monthdate BETWEEN '$a' AND '$b' GROUP BY monthdate";
请参阅ScreenShort 文件#1:http://www.koolfree.com/ImageUpload/uploads/1381252318.jpg
档案#2:http://www.koolfree.com/ImageUpload/uploads/1381228480.jpg
显示这些错误 警告:在第51行的indexssds.php中除以零
警告:mysql_fetch_array():提供的参数不是第73行indexssds.php中的有效MySQL结果资源
这里是完整的代码,请检查我的更新 谢谢...........................
<?php
include 'config.php';
$link=mysql_connect("$hostname","$username","$password")or
die('Could not connect: ' . mysql_error());
mysql_select_db("$dbname",$link);
function formatMoney($number, $fractional=false) {
if ($fractional) {
$number = sprintf('%.2f', $number);
}
while (true) {
$replaced = preg_replace('/(-?\d+)(\d\d\d)/', '$1,$2', $number);
if ($replaced != $number) {
$number = $replaced;
} else {
break;
}
}
return $number;
}
$a=$_POST['from'];
$b=$_POST['to'];
$c=$_POST['to2'];
echo " <p align='center' class='style1'>Vehicle No: $c </p>";
echo "<span align='center' class='style1'>Report For The Period Of $a to $b </span>";
include 'create.php';
$sql="SELECT CONCAT(monthdate,' ','(',drivernamefuel,')') as drivernamefuel,
SUM(ifnull(amount,0) +
ifnull(servicecharges,0) +
ifnull(replacecharges,0) +
ifnull(blockcharges,0) +
ifnull(othercharges,0) ) AS amount,
drivernamefuel
FROM $tablename where carno='$c'
AND monthdate BETWEEN '$a' AND '$b'
GROUP BY monthdate";
$result = mysql_query($sql);
$graphtitle="For The month of $a to $b";//Graph Title
$xname="BarChart Report By Vehicle No : $c";
$yname='VALUE';//y-axis name
$img_width=900;//image height
$img_height=700;//image width
$margins=70;
$ymargin=6;
$count=mysql_affected_rows();
$graph_width=$img_width - $margins * 2;
$graph_height=$img_height - $margins * 2;
$bar_width=25;
$total_bars=$count;
$gap= ($graph_width- $total_bars * $bar_width ) / ($total_bars +1);
$img=imagecreate($img_width,$img_height);
include 'barcolor.php';
imagefilledrectangle($img,0,0,0,0,$bag_color);
imageline($img,$margins,$img_height-45,$img_width-20,$img_height-45,$xyline_color);
imageline($img,$margins,$ymargin,$margins,$img_height-45,$xyline_color);
$maxvalue="select max(monthdate) as amount from $tablename";//Give your field name for Y axis
$max=mysql_query($maxvalue);
while($inf1= mysql_fetch_array($max))
{
$ratio=$graph_height/$inf1[0];
}
$horizontal_lines=8;
$horizontal_gap=($img_height+20)/$horizontal_lines;
for($j=1;$j<=$horizontal_lines;$j++)
{
$y=($img_height-48) - $horizontal_gap * $j ;
//imageline($img,$margins+1,$y,$img_width-20,$y,$hline_color);
$v=intval($horizontal_gap * $j /$ratio);
imagestring($img,2,$margins-30,$y-5,$v,$values_color);
}
$i=0;
while($inf = mysql_fetch_array($result))
{
$x1=($margins+10) + ($gap+5) + $i * ($gap+$bar_width) ;
$x2=$x1+$bar_width;
$y1=($img_height-46)- ceil($inf[1] * $ratio) ;
$y2=($img_height-46);
imagestring($img,2,$x1+1,$y1-15,$inf[1],$values_color);
imagestring($img,2,$x2-23,$img_height-43,$inf[0],$values_color);
imagefilledrectangle($img,$x1,$y1,$x2,$y2,$bar_color); // Draw bar
$i++;
}
imagestring($img,8, ($img_width-$margin)/2, 0, $graphtitle, $txt_color);
imagestring($img,5, ($img_width-$margin)/2, $img_height-($ymargin+10), $xname, $txt_color);
imagestringup($img,5,10,($img_height-$ymargin)/2, $yname, $txt_color);
//header('Content-type: image/png');
imagepng($img, 'barchart.jpg');
echo "<div style='border:1px solid #d8d8d8;width:$img_width'><img src='barchart.jpg'></div>";
?>
答案 0 :(得分:1)
您没有传递参数进行查询,因此请将其传递到下面
而且你也没有添加
所选查询的SUM(..)中的金额+服务费+替换费用+冻结费+其他费用,所以一定要替换它
将您的查询修改为
$sql="SELECT CONCAT(monthdate,' ','(',drivernamefuel,')') as drivernamefuel,
sum(amount + servicecharges + replacecharges + blockingcharges + othercharges) AS amount,
drivernamefuel
FROM ".$tablename."
WHERE carno='".$c."' AND monthdate BETWEEN '".$a."' AND '".$b."'
GROUP BY monthdate";
答案 1 :(得分:0)
我希望这会对你有所帮助。删除qotes(')并更改SUM(您想要求和的字段)
$sql="SELECT CONCAT(monthdate,' ','(',drivernamefuel,')') as drivernamefuel,sum(amount + servicecharges + replacecharges + blockcharges + othercharges) AS total_amount,drivernamefuel FROM ".$tablename." where carno='".$c."' AND monthdate BETWEEN '".$a."' AND '".$b."' GROUP BY monthdate";
echo $sql;
在页面中回显查询并尝试直接在phpMyadmin中执行查询。然后检查查询的问题。问题可能是您要传递给查询的值
答案 2 :(得分:0)
试试这个:
$sql="SELECT CONCAT(monthdate,' ','(',drivernamefuel,')') as drivernamefuel,
SUM(amount +
servicecharges +
replacecharges +
blockcharges +
othercharges) AS amount,
drivernamefuel
FROM ".$tablename." where carno='".$c."'
AND monthdate BETWEEN '".$a."' AND '".$b."'
GROUP BY monthdate";
*请注意mysql扩展名is now deprecated and will be removed sometime in the future。那是因为它古老,充满了不良做法,缺乏一些现代特色。不要用它来编写新代码。请改用PDO或mysqli_*。您的查询很容易SQL Injection。