[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 | |
| 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 # |