Uber gas mileage script

Tell us about that kick ass app you found

Moderators: SnotRocket, fydo

Uber gas mileage script

Postby il_Duce » Thu Mar 18, 2004 11:36 pm

For this:
http://dukes.internetmaximum.com/gas2.php

gas2.php:
Code: Select all
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD><TITLE> Duce's Gas Mileage Chart v2!! </TITLE>
</HEAD>
<BODY>
<?php
    $link = mysql_connect("localhost", "dbusername", "dbpassword")
        or die("Could not connect: " . mysql_error());
    mysql_select_db (dbname);

$dir= "asc";

if (isset($_GET["sort_val"])) $get = $_GET["sort_val"];
else $get = "id";

if ($_GET["sort_dir"] == "asc") $dir = "desc";

$sql = "SELECT * from mileage2 order by $get $dir ";
   $result = mysql_query($sql);
   echo mysql_error();

if (mysql_num_rows($result) == 1) print "Your SELECT query was successful.";
elseif (mysql_num_rows($result) == 0)
{
print "Your SELECT query was not successful.";
exit;
}
print "<TABLE BORDER=1>
        <TR>
           <TD><A HREF=gas2.php?sort_val=id&amp;sort_dir=$dir>id</A></TD>
           <TD><A HREF=gas2.php?sort_val=fill_date&amp;sort_dir=$dir>time</A></TD>
           <TD><A HREF=gas2.php?sort_val=odometer&amp;sort_dir=$dir>Odometer</A></TD>
           <TD><A HREF=gas2.php?sort_val=lp100km&amp;sort_dir=$dir>L/100km</A></TD>
           <TD><A HREF=gas2.php?sort_val=mpg&amp;sort_dir=$dir>MPG</A></TD>
           <TD><A HREF=gas2.php?sort_val=cpkm&amp;sort_dir=$dir>$/km</A></TD>
           <TD><A HREF=gas2.php?sort_val=kilometers&amp;sort_dir=$dir>trip</A></TD>
           <TD><A HREF=gas2.php?sort_val=liters&amp;sort_dir=$dir>Liters</A></TD>
           <TD><A HREF=gas2.php?sort_val=gas_rate&amp;sort_dir=$dir>Gas Price</A></TD>
           <TD><A HREF=gas2.php?sort_val=fill_cost&amp;sort_dir=$dir>Fill Cost</A></TD>
           <TD><A HREF=gas2.php?sort_val=station&amp;sort_dir=$dir>Station</A></TD>
           <TD><A HREF=gas2.php?sort_val=notes&amp;sort_dir=$dir>Drive Notes</A></TD>
           <TD><A HREF=gas2.php?sort_val=business&amp;sort_dir=$dir>Business Use</A></TD>
        </TR>
";
$total_km = 0;
$total_liters = 0;
$total_price = 0;
$total_cost = 0;
$total_mpg = 0;
$total_lp = 0;

if ($row = mysql_fetch_array($result))
{
  do
  {
    echo "
        <TR>
          <TD>" . $row[0] . "</TD>
          <TD>" . $row[1] . "</TD>
          <TD>" . $row[2] . "</TD>
          <TD>" . $row[3] . "</TD>
          <TD>" . $row[4] . "</TD>
          <TD>$".round($row[5],4)."</TD>
          <TD>" . $row[6] . "</TD>
          <TD>" . $row[7] . "</TD>
          <TD>" . $row[8] . "</TD>
          <TD>$".round($row[9],2)."</TD>
          <TD>" . $row[10] . "</TD>
          <TD>" . $row[11] . "</TD>
          <TD>" . $row[12] . "</TD>
        </TR>";

    $total_lp = $total_lp + $row[3];
    $total_km = $total_km + $row[6];
    $total_liters = $total_liters + $row[7];
    $total_price = $total_price + $row[8];
    $total_cost = $total_cost + $row[9];
    $total_mpg = $total_mpg + $row[4];
    $total_cpkm = $total_cpkm + $row[5];

  }
  while($row = mysql_fetch_array($result));
}
else  print "Sorry, no records were found!";

$num_rows = mysql_num_rows($result);
$avg_km = $total_km / ($num_rows - 1);
$avg_liters = $total_liters / ($num_rows - 1);
$avg_price = $total_price / ($num_rows - 1);
$avg_cost = $total_cost / ($num_rows - 1);
$avg_mpg = $total_mpg / ($num_rows - 1);
$avg_lp = $total_lp / ($num_rows - 1);
$avg_cpkm = $total_cpkm / ($num_rows - 1);

echo "
        <TR>
          <TD COLSPAN=13><CENTER>...:Statistics:...</CENTER></TD>
        </TR>
        <TR>
          <TD COLSPAN=3>Totals::</TD>
          <TD></TD>
          <TD></TD>
          <TD></TD>
          <TD>".round($total_km,2)." km</TD>
          <TD>".round($total_liters,2)." L</TD>
          <TD></TD>
          <TD>$".round($total_cost,2)."</TD>
        </TR>
        <TR>
          <TD COLSPAN=3>Averages::</TD>
          <TD>".round($avg_lp,2)." L/100km</TD>
          <TD>".round($avg_mpg,2)." MPG</TD>
          <TD>$".round($avg_cpkm,4)."/km</TD>
          <TD>".round($avg_km,2)." km</TD>
          <TD>".round($avg_liters,2)." L</TD>
          <TD>$".round($avg_price,3)."</TD>
          <TD>$".round($avg_cost,2)."</TD>
        </TR>
";
echo "</TABLE>";
?>

<BR>
<FORM METHOD=get ACTION=gas2-entry.php>
<TABLE border=0>
<TR>
  <TD>Date:</TD>
  <TD><INPUT TYPE=text NAME=filldate MAXLENGTH=19></TD>
</TR>
<TR>
  <TD>Odometer:</TD>
  <TD><INPUT TYPE=text NAME=odometer MAXLENGTH=6></TD>
</TR>
<TR>
  <TD>Gas rate:</TD>
  <TD><INPUT TYPE=text NAME=gas_rate MAXLENGTH=6></TD>
</TR>
<TR>
  <TD>Liters:</TD>
  <TD><INPUT TYPE=text NAME=liters MAXLENGTH=6></TD>
</TR>
<TR>
  <TD>Gas Station:</TD>
  <TD><INPUT TYPE=text NAME=station MAXLENGTH=255></TD>
</TR>
<TR>
  <TD>Drive Notes:</TD>
  <TD><INPUT TYPE=text NAME=notes MAXLENGTH=1023></TD>
</TR>
<TR>
  <TD>Business Use?</TD>
  <TD>Yes <INPUT TYPE=radio NAME=business value=yes>No <INPUT TYPE=radio NAME=business value=no></TD>
</TR>
<TR>
  <TD>Password:</TD>
  <TD><INPUT TYPE=password NAME=password MAXLENGTH=255></TD>
</TR>
<TR>
  <TD COLSPAN=2><CENTER>
  <INPUT TYPE=hidden NAME="username" value="red">
  <INPUT TYPE=submit VALUE="Enter New Fill Data"></CENTER></TD>
</TR>
</TABLE>
</FORM>

<FORM METHOD=GET ACTION=calc.php>
<TABLE BORDER=1>
  <TR>
    <TD>
    kilometers: <INPUT TYPE=text NAME=KM>
    liters: <INPUT TYPE=text NAME=L>
    <INPUT VALUE="Calculate MPG" TYPE=submit>
    </TD>
  </TR>
</TABLE>
</FORM>

<?
mysql_close($link);
?>

</BODY>
</HTML>


gas2-entry.php:
Code: Select all
<?php
  $link = mysql_connect("localhost", "dbusername", "dbpassword")
        or die("Could not connect: " . mysql_error());
  mysql_select_db (dbname);

  $filldate = $_GET['filldate'];
  $odometer = $_GET['odometer'];
  $gas_rate = $_GET['gas_rate'];
  $station = $_GET['station'];
  $liters = $_GET['liters'];
  $notes = $_GET['notes'];
  $business = $_GET['business'];
  $password = $_GET['password'];

  if($password != "formpassword")
  {
  echo "Go away!";  exit;
  }

  $result = mysql_query("SELECT odometer from mileage2 ORDER BY id desc limit 1");

  $row = mysql_fetch_array($result);
  $last_odometer = $row[0];
  $kilometers = $odometer - $last_odometer;
  $mpg = $kilometers / 1.609344 / $liters * 3.7854;
  $lp100km = $liters / $kilometers * 100;
  $fill_cost = $gas_rate * $liters;
  $cpkm = $fill_cost / $kilometers;
  if($business == "yes")
  {
    $business = '1';
  }

  mysql_query("
  INSERT into mileage2 (fill_date,odometer,lp100km,mpg,cpkm,kilometers,liters,gas_rate,fill_cost,station,notes,business)
  VALUES('$filldate','$odometer','$lp100km','$mpg','$cpkm','$kilometers','$liters','$gas_rate','$fill_cost','$station','$notes','$business')
  ");
  echo mysql_error();

echo "Old Odometer Reading = " . $last_odometer . "<BR>";
echo "New Odometer Reading = " . $odometer . "<BR>";
echo "MPG = " . $mpg . "<BR>";
echo "$/km = " . $cpkm . "<BR>";
echo "L/100km = " . $lp100km . "<BR>";
echo "kilometers = " . $kilometers . "<BR>";
echo "Liters = " . $liters . "<BR>";
echo "Gas Price = " . $gas_rate . "<BR>";
echo "Fill Cost = " . $fill_cost . "<BR>";
echo "Station = " . $station . "<BR>";
echo "Drive Notes = " . $notes . "<BR>";


  mysql_close($link);
?>

<HTML>
<HEAD>
<meta http-equiv="Refresh" content="1;URL=gas2.php">
</HEAD>
</HTML>


And the SQL query to set up the tables:
Code: Select all
-- phpMyAdmin SQL Dump
-- version 2.6.3-pl1
--
-- Table structure for table `mileage2`
--

CREATE TABLE `mileage2` (
  `id` int(255) NOT NULL auto_increment,
  `fill_date` datetime default NULL,
  `odometer` int(255) NOT NULL default '0',
  `lp100km` double(16,4) NOT NULL default '0.0000',
  `mpg` double(16,4) NOT NULL default '0.0000',
  `cpkm` varchar(16) NOT NULL default '',
  `kilometers` int(255) NOT NULL default '0',
  `liters` double(16,4) NOT NULL default '0.0000',
  `gas_rate` double(16,4) NOT NULL default '0.0000',
  `fill_cost` double(16,4) NOT NULL default '0.0000',
  `station` text NOT NULL,
  `notes` text NOT NULL,
  `business` int(1) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `id_2` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=20 ;

--
-- Dumping data for table `mileage2`
--

INSERT INTO `mileage2` VALUES (1, '2005-05-28 08:32:24', 262737, 0.0000, 0.0000, '', 0, 0.0000, 0.0000, 0.0000, 'Centex - 16th Ave', 'Initial Fill', 0);
Last edited by il_Duce on Wed Sep 07, 2005 7:21 pm, edited 1 time in total.
il_Duce
Root me
 
Posts: 7
Joined: Thu Mar 18, 2004 9:51 pm

Additions

Postby il_Duce » Wed Sep 07, 2005 6:56 pm

Just a reminder that that I am not doing any sort of data validation so most likely it will screw up if you throw garbage or non-normal characters in the forms.
For the date field, just write in "2005-12-31 10:38:00" or "2005/12/31 10:38:00" or "20051231103800" or whatever. It's not too picky, but I think those are roughly the formats you need. If you don't enter a time, that is ok, it just shows up as 2005-12-31 00:00:00

You need to have one odometer value entered in before you will get any calculations. That's all that is used in the first row, and anything else entered will throw off the averages. Use what I provided and just edit the odometer reading and the gas station (I use that to track which stations give you shit for gas)

You have to remember or write down your odometer reading (Just write it on your receipt when you get it). If you just have the trip distance, get out your calculator. I'm not making it _that_ easy.
il_Duce
Root me
 
Posts: 7
Joined: Thu Mar 18, 2004 9:51 pm

Re: Uber gas mileage script

Postby burn » Wed Jun 03, 2009 8:27 pm

[Wed Jun 03 20:16:56 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 88
[Wed Jun 03 20:16:56 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 89
[Wed Jun 03 20:16:56 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 90
[Wed Jun 03 20:16:56 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 91
[Wed Jun 03 20:16:56 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 92
[Wed Jun 03 20:16:56 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 93
[Wed Jun 03 20:16:56 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 94
[Wed Jun 03 20:18:42 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 88
[Wed Jun 03 20:18:42 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 89
[Wed Jun 03 20:18:42 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 90
[Wed Jun 03 20:18:42 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 91
[Wed Jun 03 20:18:42 2009] [error] [client 68.148.24.117] PHP Warning: Division by zero in /home/burn/public_html/mileage/98_gmc_safari/gas2.php on line 94

PHP 5.2.9 (cli) (built: May 1 2009 23:40:33)
You also need calc.php
Code: Select all
<?
$liters = $_GET["L"];
$km = $_GET["KM"];
$mpg = round(($km / $liters * 3.7854 * .62137),4);
echo "Miles per gallon = $mpg";
?>
User avatar
burn
Site Admin
 
Posts: 35
Joined: Sun Oct 26, 2003 10:49 pm
Location: Sylvan Lake

Re: Uber gas mileage script

Postby il_Duce » Wed Jun 03, 2009 8:56 pm

Is this for a new vehicle?

I am guessing you didn't enter an initial entry with just an odometer reading.
il_Duce
Root me
 
Posts: 7
Joined: Thu Mar 18, 2004 9:51 pm

Re: Uber gas mileage script

Postby il_Duce » Wed Jun 03, 2009 9:01 pm

For my Lancer I added some js so that the focus goes down to the date field onload.
Code: Select all
146c149
< <FORM METHOD=get ACTION=gas2-entry.php>
---
> <FORM METHOD=get ACTION=gas2-entry.php NAME="Entries">
186a190,194
> <script language="javascript">
>     <!--
>     document.Entries.filldate.focus()
>     //-->
> </script>



Either hide the PHP warnings or something... it shouldn't be critical... the next fill should make things better.
il_Duce
Root me
 
Posts: 7
Joined: Thu Mar 18, 2004 9:51 pm

Re: Uber gas mileage script

Postby burn » Sun Jun 14, 2009 10:48 pm

all fixed once I put a real entry in. :)
User avatar
burn
Site Admin
 
Posts: 35
Joined: Sun Oct 26, 2003 10:49 pm
Location: Sylvan Lake

Re: Uber gas mileage script

Postby burn » Mon Aug 10, 2009 12:52 pm

http://bluedevil.ca/mileage/98_gmc_safari/gas2.php
Any ideas why there are no Mileage averages? And yes I lost one receipt. =(
User avatar
burn
Site Admin
 
Posts: 35
Joined: Sun Oct 26, 2003 10:49 pm
Location: Sylvan Lake

Re: Uber gas mileage script

Postby il_Duce » Mon Aug 10, 2009 1:10 pm

Not sure. I see you entered one receipt out of order. Did that screw it up, or was it still messed before then?

I wouldn't be averse to wiping the table and re-entering or re-importing the data. I have never entered the receipts out of order, but if I ever made a mistake, I would just delete the row and re-do it.

I'm not sure why just those two averages aren't showing up. If you enable PHP error displays, does anything show up?

Code: Select all
$avg_mpg = ($total_km * 0.62137) / ($total_liters / 3.7854);
$avg_lp = $total_liters / ($total_km / 100);

          <TD>".round($total_km,2)."</TD>
          <TD>".round($total_liters,2)."</TD>

          <TD>".round($avg_lp,2)."</TD>
          <TD>".round($avg_mpg,2)."</TD>


Everything looks ok there, unless one of those columns has bad data, but that seems weird since the totals are valid.
il_Duce
Root me
 
Posts: 7
Joined: Thu Mar 18, 2004 9:51 pm


Return to Sweet Apps

Who is online

Users browsing this forum: No registered users and 1 guest

cron