[75.0, 11.4], 31 => [74.0, 11.2], 32 => [73.0, 11.0], 33 => [72.0, 10.8], 34 => [71.0, 10.6], 35 => [70.0, 10.4], 36 => [69.0, 10.2], 37 => [68.0, 10.0], 38 => [67.0, 9.8], 39 => [66.0, 9.6], 40 => [65.0, 9.4], 41 => [63.0, 9.2], 42 => [61.0, 9.0], 43 => [59.0, 8.8], 44 => [57.0, 8.6], 45 => [55.0, 8.4], 46 => [53.0, 8.2], 47 => [51.0, 8.0], 48 => [49.0, 7.8], 49 => [47.0, 7.6], 50 => [45.0, 7.4], 51 => [42.0, 7.2], 52 => [39.0, 7.0], 53 => [36.0, 6.8], 54 => [33.0, 6.6], 55 => [30.0, 6.4], 56 => [27.0, 6.2], 57 => [24.0, 6.0], 58 => [21.0, 5.8], 59 => [18.0, 5.6], 60 => [15.0, 5.4], 61 => [13.5, 5.3], 62 => [12.0, 5.2], 63 => [10.5, 5.1], 64 => [9.0, 5.0], 65 => [7.5, 4.9], 66 => [6.0, 4.8], 67 => [4.5, 4.7], 68 => [3.0, 4.6], 69 => [1.5, 4.5], 70 => [0.0, 4.4], 71 => [0.0, 4.3], 72 => [0.0, 4.2], 73 => [0.0, 4.1], 74 => [0.0, 4.0], 75 => [0.0, 3.9], 76 => [0.0, 3.8], 77 => [0.0, 3.7], 78 => [0.0, 3.6], 79 => [0.0, 3.5], 80 => [0.0, 3.4], 81 => [0.0, 3.3], 82 => [0.0, 3.2], 83 => [0.0, 3.1], 84 => [0.0, 3.0], 85 => [0.0, 2.9], 86 => [0.0, 2.8], 87 => [0.0, 2.7], 88 => [0.0, 2.6], 89 => [0.0, 2.5], 90 => [0.0, 2.4], 91 => [0.0, 2.3], 92 => [0.0, 2.2], 93 => [0.0, 2.1], 94 => [0.0, 2.0], 95 => [0.0, 1.9], 96 => [0.0, 1.8], 97 => [0.0, 1.7], 98 => [0.0, 1.6], 99 => [0.0, 1.5], 100 => [0.0, 1.4], ); /* ********* START ********* */ /* ********* ADD BASE SATURATION CALCULATION HERE ********* */ // *** // calculating hydrogen and otherbases // *** $ph = $ph_h2o; // $ph_h2o from above $aluminium = $al; // VERIFY: assuming $al is aluminium // round the ph value to single decimal point $ph_lookup = round($ph, 1); // lookup H and Other Bases $hydrogen = $phrange[($ph_lookup * 10)][0]; $other_Bases = $phrange[($ph_lookup * 10)][1]; // CAUTION: $otherbases & other_Bases are too similar variable names, prone to error $otherbases = $other_Bases; // CAUTION: $otherbases & $otherBases can be different variables depending on aluminum levels. if ( $aluminium < 0 ) { $otherbases = 0; } // INTEGRATE: in the spreadsheet at this point the macro sets the value of hydrogen into a cell // there is no comparable variable here... don't know if the cell gets used again... // *** the hydrogen value that is entered into the cell is the final Hydrogen value, which is then just written to the database *** $hbs = $hydrogen; // // obresult // $obresult = 0; // INTEGRATE: starting at zero per spreadsheet, double check that this is intended if ( $otherbases > 0 ) { while ( ($obresult * 100 / $tec) <= $otherbases ) { $obresult += 0.001; $tempNo = $obresult; $tempNo1 = $otherbases; $tempNo2 = $hydrogen; // CAUTION: storing value in Calc:E16 $obresult_offset_1_0_cell = $tempNo * $tempNo2 / $tempNo1; } $obresult -= 0.001; if ( $obresult_offset_1_0_cell != 0 ){ $obresult_offset_1_0_cell -= 0.001; } } else { // ERROR: VALUE OF CELL Calc:E16 IS BEING READ PRIOR TO ASSIGNMENT!! // THIS COULD BE USING LEFT OVER DATA FROM PREVIOUS RUNS! THE CURRENT VALUE IS 0. $obresult_offset_1_0_cell = 0; // INTEGRATE: NEEDS VALUE ASSIGNED while( ($obresult_offset_1_0_cell * 100 / $tec) <= $hydrogen ) { $obresult_offset_1_0_cell += 0.001; } $obresult_offset_1_0_cell -= 0.001; } // // Calculating Ca Mg K Na levels based on temp // // *** I think that the tecTemp needs to be a sum of $tec and $obresult_offset_1_0_cell and $obresult *** // *** As far as I can see on the spreadsheet the TEC in CALC:B16 is "CEC + obresult + CALC:E16" //$tecTemp = $obresult_offset_1_0_cell; $tecTemp = $cec + $obresult + $obresult_offset_1_0_cell; $tec = $tecTemp; // CAUTION: for $tecTemp values below 1 and above 100000 this will not work if ( ( 1.0 < $tecTemp ) && ( $tecTemp >= 3.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 60.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 20.00; $kbs = $KBS = 5.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 3.0 < $tecTemp ) && ( $tecTemp >= 5.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 62.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 18.00; $kbs = $KBS = 5.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 5.0 < $tecTemp ) && ( $tecTemp >= 7.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 64.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 16.00; $kbs = $KBS = 4.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 7.0 < $tecTemp ) && ( $tecTemp >= 9.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 65.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 15.00; $kbs = $KBS = 4.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 9.0 < $tecTemp ) && ( $tecTemp >= 11.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 67.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 13.00; $kbs = $KBS = 4.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 11.0 < $tecTemp ) && ( $tecTemp >= 30.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 68.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 12.00; $kbs = $KBS = 4.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 30.0 < $tecTemp ) && ( $tecTemp >= 100000.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 70.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 10.00; $kbs = $KBS = 3.00; $kbsmax = $KBSMAX = 6.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } // *** CALCULATED TEC MIN / MAX LEVELS $cabs_min = $cabs; $cabs_max = $cabsmax; $mgbs_min = $mgbs; $mgbs_max = $mgbsmax; $kbs_min = $kbs; $kbs_max = $kbsmax; $nabs_min = $nabs; $nabs_max = $nabsmax; $albs_min = "0"; $albs_max = "0.5"; // *** CALCULATED TEC LEVELS $cabs_tec = $ca_mehlick3 * $tec * 100; $mgbs_tec = $mg_mehlick3 * $tec * 100; $kbs_tec = $k_mehlick3 * $tec * 100; $nabs_tec = $na_mehlick3 * $tec * 100; $albs_tec = $al_mehlick3 * $tec * 100; // *** CALCULATED PPM FROM MEQ $BS_ca_ppm = $ca_mehlick3 * 200; $BS_mg_ppm = $mg_mehlick3 * 120; $BS_k_ppm = $k_mehlick3 * 390; $BS_na_ppm = $na_mehlick3 * 230; $BS_al_ppm = $al_mehlick3 * 90; /* ********* ADD BASE SATURATION CALCULATION HERE ********* */ /* ********* END ********* */ /* NOTES: will need to add rows in mysql to save data that has been calculated above. */ // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $sql = mysqli_query($con, "INSERT into `soil_records` ( date, email, client_name, site_address, state_postcode, analysis_type, lab_no, batch_no, sample_id, site_id, crop_type, soil_type, date_sampled, tec, cec, texture, gravel, colour, NO3_N, NH3_N, p_mehlick, p_bray2, p_morgan, k_morgan, ca_morgan, mg_morgan, na_morgan, ch_h2o, ocarbon, omatter, fe, ec, ph_cacl2, ph_h2o, paramag, s_morgan, b_cacl2, mn_dtpa, zn_dtpa, fe_dtpa, cu_dtpa, al, sl_cacl2, m_dtpa, co_dtpa, se, ca_mehlick3, BS_ca_ppm, mg_mehlick3, BS_mg_ppm, k_mehlick3, BS_k_ppm, na_mehlick3, BS_na_ppm, al_mehlick3, BS_al_ppm, BS_ca2, BS_mg2, BS_k, BS_na, BS_al3, BS_h, cabs_min, cabs_max, mgbs_min, mgbs_max, kbs_min, kbs_max, nabs_min, nabs_max, albs_min, albs_max, ca_mg_ratio, rand ) VALUES ( '" . $date . "', '" . $email . "', '" . $client_name . "', '" . $site_address . "', '" . $state_postcode . "', '" . $analysis_type . "', '" . $lab_no . "', '" . $batch_no . "', '" . $sample_id . "', '" . $site_id . "', '" . $crop_type . "', '" . $soil_type . "', '" . $date_sampled . "', '" . $tec . "', '" . $cec . "', IF('" . $texture . "'='',NULL,'" . $texture . "'), IF('" . $gravel . "'='',NULL,'" . $gravel . "'), IF('" . $colour . "'='',NULL,'" . $colour . "'), '" . $NO3_N . "', '" . $NH3_N . "', '" . $p_mehlick . "', '" . $p_bray2 . "', '" . $p_morgan . "', '" . $k_morgan . "', '" . $ca_morgan . "', '" . $mg_morgan . "', '" . $na_morgan . "', '" . $ch_h2o . "', '" . $ocarbon . "', '" . $omatter . "', '" . $fe . "', '" . $ec . "', '" . $ph_cacl2 . "', '" . $ph_h2o . "', IF('" . $paramag . "'='',NULL,'" . $paramag . "'), '" . $s_morgan . "', '" . $b_cacl2 . "', '" . $mn_dtpa . "', '" . $zn_dtpa . "', '" . $fe_dtpa . "', '" . $cu_dtpa . "', '" . $al . "', '" . $sl_cacl2 . "', '" . $m_dtpa . "', '" . $co_dtpa . "', '" . $se . "', '" . $ca_mehlick3 . "', '" . $BS_ca_ppm . "', '" . $mg_mehlick3 . "', '" . $BS_mg_ppm . "', '" . $k_mehlick3 . "', '" . $BS_k_ppm . "', '" . $na_mehlick3 . "', '" . $BS_na_ppm . "', '" . $al_mehlick3 . "', '" . $BS_al_ppm . "', '" . $cabs_tec . "', '" . $mgbs_tec . "', '" . $kbs_tec . "', '" . $nabs_tec . "', '" . $aluminium . "', '" . $hbs . "', '" . $cabs_min . "', '" . $cabs_max . "', '" . $mgbs_min . "', '" . $mgbs_max . "', '" . $kbs_min . "', '" . $kbs_max . "', '" . $nabs_min . "', '" . $nabs_max . "', '" . $albs_min . "', '" . $albs_max . "', '" . $ca_mgRatio . "', '" . $rand . "' )" ); $insert_id = mysqli_insert_id($con); /* if ($sql === TRUE) { //echo "success"; //CHECKING // forward to results page if successfully inserts to database echo ""; } else { die(mysqli_error($con)); // TODO: better error handling //echo "User Profile incorrect"; } */ ?>
Element Results
Date
Email
Client
Address
State
Analysis
Lab #
Batch
Sample ID
Site ID
Crop Type
Soil Type
Date Sampled
TEC
CEC
Texture
Gravel
Colour
N03_Nitrogen
NH3_Nitrogen
P Mehlick
P Bray2
P Morgan
K Morgan
Ca Morgan
Mg Morgan
Na Morgan
Chloride
Organic Carbon
Organic Matter
Iron
EC
ph cacl2
ph h2o
Parameg
Sulphur
Boron
Mananese
Zinc
Iron
Copper
Aluminium
Silicoln
Moly
Colbalt
Selenium
Ca
Ca ppm
Mg
Mg ppm
K
K ppm
Na
Na ppm
Al
Al ppm
CA
MG
K
NA
AL
H
CA_min
CA_max
MG_min
MG_max
K_min
K_max
NA_min
NA_max
AL_min
AL_max
Rand #